@itentialopensource/adapter-f5_bigiq 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CALLS.md CHANGED
@@ -262,6 +262,12 @@ Specific adapter calls are built based on the API of the f5 BIG-IQ. The Adapter
262
262
  <td style="padding:15px">{base_path}/{version}/mgmt/cm/cloud/environments/{pathv1}?{query}</td>
263
263
  <td style="padding:15px">Yes</td>
264
264
  </tr>
265
+ <tr>
266
+ <td style="padding:15px">listCloudEnvironments(callback)</td>
267
+ <td style="padding:15px">List all Cloud Environments</td>
268
+ <td style="padding:15px">{base_path}/{version}/mgmt/cm/cloud/environments?{query}</td>
269
+ <td style="padding:15px">Yes</td>
270
+ </tr>
265
271
  <tr>
266
272
  <td style="padding:15px">patchCloudEnvironment(id, body, callback)</td>
267
273
  <td style="padding:15px">Patch Cloud Enviornment</td>
@@ -286,6 +292,12 @@ Specific adapter calls are built based on the API of the f5 BIG-IQ. The Adapter
286
292
  <td style="padding:15px">{base_path}/{version}/mgmt/cm/cloud/providers/{pathv1}?{query}</td>
287
293
  <td style="padding:15px">Yes</td>
288
294
  </tr>
295
+ <tr>
296
+ <td style="padding:15px">listCloudProviders(callback)</td>
297
+ <td style="padding:15px">List all Cloud Providers</td>
298
+ <td style="padding:15px">{base_path}/{version}/mgmt/cm/cloud/providers?{query}</td>
299
+ <td style="padding:15px">Yes</td>
300
+ </tr>
289
301
  <tr>
290
302
  <td style="padding:15px">patchCloudProvider(id, body, callback)</td>
291
303
  <td style="padding:15px">Patch Cloud Provider</td>
@@ -1126,6 +1138,12 @@ Specific adapter calls are built based on the API of the f5 BIG-IQ. The Adapter
1126
1138
  <td style="padding:15px">{base_path}/{version}/mgmt/cm/device/ip-pool/pools/{pathv1}?{query}</td>
1127
1139
  <td style="padding:15px">Yes</td>
1128
1140
  </tr>
1141
+ <tr>
1142
+ <td style="padding:15px">listDeviceIPPools(callback)</td>
1143
+ <td style="padding:15px">Get all IP Pools</td>
1144
+ <td style="padding:15px">{base_path}/{version}/mgmt/cm/device/ip-pool/pools?{query}</td>
1145
+ <td style="padding:15px">Yes</td>
1146
+ </tr>
1129
1147
  <tr>
1130
1148
  <td style="padding:15px">postDeviceIPPool(body, callback)</td>
1131
1149
  <td style="padding:15px">Post Device IP Pool</td>
package/CHANGELOG.md CHANGED
@@ -1,4 +1,20 @@
1
1
 
2
+ ## 0.4.2 [12-14-2023]
3
+
4
+ * Added new Calls
5
+
6
+ See merge request itentialopensource/adapters/controller-orchestrator/adapter-f5_bigiq!9
7
+
8
+ ---
9
+
10
+ ## 0.4.1 [11-29-2023]
11
+
12
+ * Added new Calls
13
+
14
+ See merge request itentialopensource/adapters/controller-orchestrator/adapter-f5_bigiq!9
15
+
16
+ ---
17
+
2
18
  ## 0.4.0 [11-08-2023]
3
19
 
4
20
  * Adapter Engine has been updated and the changes are being migrated to the adapter
package/adapter.js CHANGED
@@ -1496,6 +1496,80 @@ class F5BigIQ extends AdapterBaseCl {
1496
1496
  }
1497
1497
  }
1498
1498
 
1499
+ /**
1500
+ * @function listCloudEnvironments
1501
+ * @pronghornType method
1502
+ * @name listCloudEnvironments
1503
+ * @summary List all Cloud Environments
1504
+ *
1505
+ * @param {getCallback} callback - a callback function to return the result
1506
+ * @return {object} results - An object containing the response of the action
1507
+ *
1508
+ * @route {POST} /listCloudEnvironments
1509
+ * @roles admin
1510
+ * @task true
1511
+ */
1512
+ /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */
1513
+ listCloudEnvironments(callback) {
1514
+ const meth = 'adapter-listCloudEnvironments';
1515
+ const origin = `${this.id}-${meth}`;
1516
+ log.trace(origin);
1517
+
1518
+ if (this.suspended && this.suspendMode === 'error') {
1519
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);
1520
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
1521
+ return callback(null, errorObj);
1522
+ }
1523
+
1524
+ /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */
1525
+ const queryParamsAvailable = {};
1526
+ const queryParams = {};
1527
+ const pathVars = [];
1528
+ const bodyVars = {};
1529
+
1530
+ // loop in template. long callback arg name to avoid identifier conflicts
1531
+ Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {
1532
+ if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null
1533
+ && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {
1534
+ queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];
1535
+ }
1536
+ });
1537
+
1538
+ // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders, authData, callProperties, filter, priority, event
1539
+ // see adapter code documentation for more information on the request object's fields
1540
+ const reqObj = {
1541
+ payload: bodyVars,
1542
+ uriPathVars: pathVars,
1543
+ uriQuery: queryParams
1544
+ };
1545
+
1546
+ try {
1547
+ // Make the call -
1548
+ // identifyRequest(entity, action, requestObj, returnDataFlag, callback)
1549
+ return this.requestHandlerInst.identifyRequest('CloudEdition', 'listCloudEnvironments', reqObj, true, (irReturnData, irReturnError) => {
1550
+ // if we received an error or their is no response on the results
1551
+ // return an error
1552
+ if (irReturnError) {
1553
+ /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */
1554
+ return callback(null, irReturnError);
1555
+ }
1556
+ if (!Object.hasOwnProperty.call(irReturnData, 'response')) {
1557
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['listCloudEnvironments'], null, null, null);
1558
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
1559
+ return callback(null, errorObj);
1560
+ }
1561
+
1562
+ /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */
1563
+ // return the response
1564
+ return callback(irReturnData, null);
1565
+ });
1566
+ } catch (ex) {
1567
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);
1568
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
1569
+ return callback(null, errorObj);
1570
+ }
1571
+ }
1572
+
1499
1573
  /**
1500
1574
  * @function patchCloudEnvironment
1501
1575
  * @pronghornType method
@@ -1830,6 +1904,80 @@ class F5BigIQ extends AdapterBaseCl {
1830
1904
  }
1831
1905
  }
1832
1906
 
1907
+ /**
1908
+ * @function listCloudProviders
1909
+ * @pronghornType method
1910
+ * @name listCloudProviders
1911
+ * @summary Get all Cloud Providers
1912
+ *
1913
+ * @param {getCallback} callback - a callback function to return the result
1914
+ * @return {object} results - An object containing the response of the action
1915
+ *
1916
+ * @route {POST} /listCloudProviders
1917
+ * @roles admin
1918
+ * @task true
1919
+ */
1920
+ /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */
1921
+ listCloudProviders(callback) {
1922
+ const meth = 'adapter-listCloudProviders';
1923
+ const origin = `${this.id}-${meth}`;
1924
+ log.trace(origin);
1925
+
1926
+ if (this.suspended && this.suspendMode === 'error') {
1927
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);
1928
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
1929
+ return callback(null, errorObj);
1930
+ }
1931
+
1932
+ /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */
1933
+ const queryParamsAvailable = {};
1934
+ const queryParams = {};
1935
+ const pathVars = [];
1936
+ const bodyVars = {};
1937
+
1938
+ // loop in template. long callback arg name to avoid identifier conflicts
1939
+ Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {
1940
+ if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null
1941
+ && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {
1942
+ queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];
1943
+ }
1944
+ });
1945
+
1946
+ // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders, authData, callProperties, filter, priority, event
1947
+ // see adapter code documentation for more information on the request object's fields
1948
+ const reqObj = {
1949
+ payload: bodyVars,
1950
+ uriPathVars: pathVars,
1951
+ uriQuery: queryParams
1952
+ };
1953
+
1954
+ try {
1955
+ // Make the call -
1956
+ // identifyRequest(entity, action, requestObj, returnDataFlag, callback)
1957
+ return this.requestHandlerInst.identifyRequest('CloudEdition', 'listCloudProviders', reqObj, true, (irReturnData, irReturnError) => {
1958
+ // if we received an error or their is no response on the results
1959
+ // return an error
1960
+ if (irReturnError) {
1961
+ /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */
1962
+ return callback(null, irReturnError);
1963
+ }
1964
+ if (!Object.hasOwnProperty.call(irReturnData, 'response')) {
1965
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['listCloudProviders'], null, null, null);
1966
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
1967
+ return callback(null, errorObj);
1968
+ }
1969
+
1970
+ /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */
1971
+ // return the response
1972
+ return callback(irReturnData, null);
1973
+ });
1974
+ } catch (ex) {
1975
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);
1976
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
1977
+ return callback(null, errorObj);
1978
+ }
1979
+ }
1980
+
1833
1981
  /**
1834
1982
  * @function patchCloudProvider
1835
1983
  * @pronghornType method
@@ -13532,6 +13680,80 @@ class F5BigIQ extends AdapterBaseCl {
13532
13680
  }
13533
13681
  }
13534
13682
 
13683
+ /**
13684
+ * @function listDeviceIPPools
13685
+ * @pronghornType method
13686
+ * @name listDeviceIPPools
13687
+ * @summary Get all IP Pools
13688
+ *
13689
+ * @param {getCallback} callback - a callback function to return the result
13690
+ * @return {object} results - An object containing the response of the action
13691
+ *
13692
+ * @route {POST} /listDeviceIPPools
13693
+ * @roles admin
13694
+ * @task true
13695
+ */
13696
+ /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */
13697
+ listDeviceIPPools(callback) {
13698
+ const meth = 'adapter-listDeviceIPPools';
13699
+ const origin = `${this.id}-${meth}`;
13700
+ log.trace(origin);
13701
+
13702
+ if (this.suspended && this.suspendMode === 'error') {
13703
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);
13704
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
13705
+ return callback(null, errorObj);
13706
+ }
13707
+
13708
+ /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */
13709
+ const queryParamsAvailable = {};
13710
+ const queryParams = {};
13711
+ const pathVars = [];
13712
+ const bodyVars = {};
13713
+
13714
+ // loop in template. long callback arg name to avoid identifier conflicts
13715
+ Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {
13716
+ if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null
13717
+ && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {
13718
+ queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];
13719
+ }
13720
+ });
13721
+
13722
+ // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders, authData, callProperties, filter, priority, event
13723
+ // see adapter code documentation for more information on the request object's fields
13724
+ const reqObj = {
13725
+ payload: bodyVars,
13726
+ uriPathVars: pathVars,
13727
+ uriQuery: queryParams
13728
+ };
13729
+
13730
+ try {
13731
+ // Make the call -
13732
+ // identifyRequest(entity, action, requestObj, returnDataFlag, callback)
13733
+ return this.requestHandlerInst.identifyRequest('Device', 'listDeviceIPPools', reqObj, true, (irReturnData, irReturnError) => {
13734
+ // if we received an error or their is no response on the results
13735
+ // return an error
13736
+ if (irReturnError) {
13737
+ /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */
13738
+ return callback(null, irReturnError);
13739
+ }
13740
+ if (!Object.hasOwnProperty.call(irReturnData, 'response')) {
13741
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['listDeviceIPPools'], null, null, null);
13742
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
13743
+ return callback(null, errorObj);
13744
+ }
13745
+
13746
+ /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */
13747
+ // return the response
13748
+ return callback(irReturnData, null);
13749
+ });
13750
+ } catch (ex) {
13751
+ const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);
13752
+ log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
13753
+ return callback(null, errorObj);
13754
+ }
13755
+ }
13756
+
13535
13757
  /**
13536
13758
  * @function postDeviceIPPool
13537
13759
  * @pronghornType method
@@ -205,6 +205,26 @@
205
205
  }
206
206
  ]
207
207
  },
208
+ {
209
+ "name": "listCloudEnvironments",
210
+ "protocol": "REST",
211
+ "method": "GET",
212
+ "entitypath": "{base_path}/{version}/mgmt/cm/cloud/environments?{query}",
213
+ "requestSchema": "schema.json",
214
+ "responseSchema": "schema.json",
215
+ "timeout": 0,
216
+ "sendEmpty": false,
217
+ "requestDatatype": "JSON",
218
+ "responseDatatype": "JSON",
219
+ "headers": {},
220
+ "responseObjects": [
221
+ {
222
+ "type": "default",
223
+ "key": "",
224
+ "mockFile": ""
225
+ }
226
+ ]
227
+ },
208
228
  {
209
229
  "name": "patchCloudEnvironment",
210
230
  "protocol": "REST",
@@ -286,6 +306,27 @@
286
306
  }
287
307
  ]
288
308
  },
309
+ {
310
+ "name": "listCloudProviders",
311
+ "protocol": "REST",
312
+ "method": "GET",
313
+ "entitypath": "{base_path}/{version}/mgmt/cm/cloud/providers?{query}",
314
+ "requestSchema": "schema.json",
315
+ "responseSchema": "schema.json",
316
+ "timeout": 0,
317
+ "sendEmpty": false,
318
+ "sendGetBody": false,
319
+ "requestDatatype": "JSON",
320
+ "responseDatatype": "JSON",
321
+ "headers": {},
322
+ "responseObjects": [
323
+ {
324
+ "type": "default",
325
+ "key": "",
326
+ "mockFile": ""
327
+ }
328
+ ]
329
+ },
289
330
  {
290
331
  "name": "patchCloudProvider",
291
332
  "protocol": "REST",
@@ -20,10 +20,12 @@
20
20
  "postApplyTemplate",
21
21
  "getAllApplicationsList",
22
22
  "getCloudEnvironment",
23
+ "listCloudEnvironments",
23
24
  "patchCloudEnvironment",
24
25
  "deleteCloudEnvironment",
25
26
  "postCloudEnvironment",
26
27
  "getCloudProvider",
28
+ "listCloudProviders",
27
29
  "patchCloudProvider",
28
30
  "deleteCloudProvider",
29
31
  "postCloudProvider",
@@ -61,6 +61,26 @@
61
61
  }
62
62
  ]
63
63
  },
64
+ {
65
+ "name": "listDeviceIPPools",
66
+ "protocol": "REST",
67
+ "method": "GET",
68
+ "entitypath": "{base_path}/{version}/mgmt/cm/device/ip-pool/pools?{query}",
69
+ "requestSchema": "schema.json",
70
+ "responseSchema": "schema.json",
71
+ "timeout": 0,
72
+ "sendEmpty": false,
73
+ "requestDatatype": "JSON",
74
+ "responseDatatype": "JSON",
75
+ "headers": {},
76
+ "responseObjects": [
77
+ {
78
+ "type": "default",
79
+ "key": "",
80
+ "mockFile": ""
81
+ }
82
+ ]
83
+ },
64
84
  {
65
85
  "name": "postDeviceIPPool",
66
86
  "protocol": "REST",
@@ -13,6 +13,7 @@
13
13
  "getDeviceIPPool",
14
14
  "patchDeviceIPPools",
15
15
  "deleteDeviceIPPool",
16
+ "listDeviceIPPools",
16
17
  "postDeviceIPPool",
17
18
  "postDeviceDiscovery",
18
19
  "getAllDeviceDiscoveryTasks",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itentialopensource/adapter-f5_bigiq",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "This adapter integrates with system described as: f5Big-iqApi.",
5
5
  "main": "adapter.js",
6
6
  "wizardVersion": "2.44.7",
package/pronghorn.json CHANGED
@@ -1334,6 +1334,29 @@
1334
1334
  },
1335
1335
  "task": true
1336
1336
  },
1337
+ {
1338
+ "name": "listCloudEnvironments",
1339
+ "summary": "List all Cloud Environments",
1340
+ "description": "List all Cloud Environments",
1341
+ "input": [],
1342
+ "output": {
1343
+ "name": "result",
1344
+ "type": "object",
1345
+ "description": "A JSON Object containing status, code and the result",
1346
+ "schema": {
1347
+ "title": "result",
1348
+ "type": "object"
1349
+ }
1350
+ },
1351
+ "roles": [
1352
+ "admin"
1353
+ ],
1354
+ "route": {
1355
+ "verb": "POST",
1356
+ "path": "/listCloudEnvironments"
1357
+ },
1358
+ "task": true
1359
+ },
1337
1360
  {
1338
1361
  "name": "patchCloudEnvironment",
1339
1362
  "summary": "Patch Cloud Enviornment",
@@ -1478,6 +1501,29 @@
1478
1501
  },
1479
1502
  "task": true
1480
1503
  },
1504
+ {
1505
+ "name": "listCloudProviders",
1506
+ "summary": "List all Cloud Providers",
1507
+ "description": "List all Cloud Providers",
1508
+ "input": [],
1509
+ "output": {
1510
+ "name": "result",
1511
+ "type": "object",
1512
+ "description": "A JSON Object containing status, code and the result",
1513
+ "schema": {
1514
+ "title": "result",
1515
+ "type": "object"
1516
+ }
1517
+ },
1518
+ "roles": [
1519
+ "admin"
1520
+ ],
1521
+ "route": {
1522
+ "verb": "POST",
1523
+ "path": "/listCloudProviders"
1524
+ },
1525
+ "task": true
1526
+ },
1481
1527
  {
1482
1528
  "name": "patchCloudProvider",
1483
1529
  "summary": "Patch Cloud Provider",
@@ -6432,6 +6478,29 @@
6432
6478
  },
6433
6479
  "task": true
6434
6480
  },
6481
+ {
6482
+ "name": "listDeviceIPPools",
6483
+ "summary": "Get all IP Pools",
6484
+ "description": "List all pools.",
6485
+ "input": [],
6486
+ "output": {
6487
+ "name": "result",
6488
+ "type": "object",
6489
+ "description": "A JSON Object containing status, code and the result",
6490
+ "schema": {
6491
+ "title": "result",
6492
+ "type": "object"
6493
+ }
6494
+ },
6495
+ "roles": [
6496
+ "admin"
6497
+ ],
6498
+ "route": {
6499
+ "verb": "POST",
6500
+ "path": "/listDeviceIPPools"
6501
+ },
6502
+ "task": true
6503
+ },
6435
6504
  {
6436
6505
  "name": "getDeviceIPPool",
6437
6506
  "summary": "Get Device IP Pool",
Binary file
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "0.3.5",
3
- "configLines": 15275,
2
+ "version": "0.4.1",
3
+ "configLines": 15344,
4
4
  "scriptLines": 1783,
5
- "codeLines": 30441,
6
- "testLines": 23176,
7
- "testCases": 1237,
8
- "totalCodeLines": 55400,
9
- "wfTasks": 365
5
+ "codeLines": 30663,
6
+ "testLines": 23287,
7
+ "testCases": 1243,
8
+ "totalCodeLines": 55733,
9
+ "wfTasks": 368
10
10
  }
@@ -705,6 +705,31 @@ describe('[integration] F5BigIQ Adapter Test', () => {
705
705
  }).timeout(attemptTimeout);
706
706
  });
707
707
 
708
+ describe('#listCloudEnvironments - errors', () => {
709
+ it('should work if integrated but since no mockdata should error when run standalone', (done) => {
710
+ try {
711
+ a.listCloudEnvironments((data, error) => {
712
+ try {
713
+ if (stub) {
714
+ const displayE = 'Error 400 received on request';
715
+ runErrorAsserts(data, error, 'AD.500', 'Test-f5_bigiq-connectorRest-handleEndResponse', displayE);
716
+ } else {
717
+ runCommonAsserts(data, error);
718
+ }
719
+ saveMockData('CloudEdition', 'listCloudEnvironments', 'default', data);
720
+ done();
721
+ } catch (err) {
722
+ log.error(`Test Failure: ${err}`);
723
+ done(err);
724
+ }
725
+ });
726
+ } catch (error) {
727
+ log.error(`Adapter Exception: ${error}`);
728
+ done(error);
729
+ }
730
+ }).timeout(attemptTimeout);
731
+ });
732
+
708
733
  const cloudEditionPatchCloudProviderBodyParam = {};
709
734
  describe('#patchCloudProvider - errors', () => {
710
735
  it('should work if integrated but since no mockdata should error when run standalone', (done) => {
@@ -756,6 +781,31 @@ describe('[integration] F5BigIQ Adapter Test', () => {
756
781
  }).timeout(attemptTimeout);
757
782
  });
758
783
 
784
+ describe('#listCloudProviders - errors', () => {
785
+ it('should work if integrated but since no mockdata should error when run standalone', (done) => {
786
+ try {
787
+ a.listCloudProviders((data, error) => {
788
+ try {
789
+ if (stub) {
790
+ const displayE = 'Error 400 received on request';
791
+ runErrorAsserts(data, error, 'AD.500', 'Test-f5_bigiq-connectorRest-handleEndResponse', displayE);
792
+ } else {
793
+ runCommonAsserts(data, error);
794
+ }
795
+ saveMockData('CloudEdition', 'listCloudProviders', 'default', data);
796
+ done();
797
+ } catch (err) {
798
+ log.error(`Test Failure: ${err}`);
799
+ done(err);
800
+ }
801
+ });
802
+ } catch (error) {
803
+ log.error(`Adapter Exception: ${error}`);
804
+ done(error);
805
+ }
806
+ }).timeout(attemptTimeout);
807
+ });
808
+
759
809
  const cloudEditionPatchServiceScalingGroupBodyParam = {};
760
810
  describe('#patchServiceScalingGroup - errors', () => {
761
811
  it('should work if integrated but since no mockdata should error when run standalone', (done) => {
@@ -3851,6 +3901,31 @@ describe('[integration] F5BigIQ Adapter Test', () => {
3851
3901
  }).timeout(attemptTimeout);
3852
3902
  });
3853
3903
 
3904
+ describe('#listDeviceIPPools - errors', () => {
3905
+ it('should work if integrated but since no mockdata should error when run standalone', (done) => {
3906
+ try {
3907
+ a.listDeviceIPPools((data, error) => {
3908
+ try {
3909
+ if (stub) {
3910
+ const displayE = 'Error 400 received on request';
3911
+ runErrorAsserts(data, error, 'AD.500', 'Test-f5_bigiq-connectorRest-handleEndResponse', displayE);
3912
+ } else {
3913
+ runCommonAsserts(data, error);
3914
+ }
3915
+ saveMockData('Device', 'listDeviceIPPools', 'default', data);
3916
+ done();
3917
+ } catch (err) {
3918
+ log.error(`Test Failure: ${err}`);
3919
+ done(err);
3920
+ }
3921
+ });
3922
+ } catch (error) {
3923
+ log.error(`Adapter Exception: ${error}`);
3924
+ done(error);
3925
+ }
3926
+ }).timeout(attemptTimeout);
3927
+ });
3928
+
3854
3929
  const devicePatchDeviceTemplateBodyParam = {};
3855
3930
  describe('#patchDeviceTemplate - errors', () => {
3856
3931
  it('should work if integrated but since no mockdata should error when run standalone', (done) => {
@@ -1812,6 +1812,18 @@ describe('[unit] F5BigIQ Adapter Test', () => {
1812
1812
  }).timeout(attemptTimeout);
1813
1813
  });
1814
1814
 
1815
+ describe('#listCloudEnvironments - errors', () => {
1816
+ it('should have a listCloudEnvironments function', (done) => {
1817
+ try {
1818
+ assert.equal(true, typeof a.listCloudEnvironments === 'function');
1819
+ done();
1820
+ } catch (error) {
1821
+ log.error(`Test Failure: ${error}`);
1822
+ done(error);
1823
+ }
1824
+ }).timeout(attemptTimeout);
1825
+ });
1826
+
1815
1827
  describe('#patchCloudEnvironment - errors', () => {
1816
1828
  it('should have a patchCloudEnvironment function', (done) => {
1817
1829
  try {
@@ -1945,6 +1957,18 @@ describe('[unit] F5BigIQ Adapter Test', () => {
1945
1957
  }).timeout(attemptTimeout);
1946
1958
  });
1947
1959
 
1960
+ describe('#listCloudProviders - errors', () => {
1961
+ it('should have a listCloudProviders function', (done) => {
1962
+ try {
1963
+ assert.equal(true, typeof a.listCloudProviders === 'function');
1964
+ done();
1965
+ } catch (error) {
1966
+ log.error(`Test Failure: ${error}`);
1967
+ done(error);
1968
+ }
1969
+ }).timeout(attemptTimeout);
1970
+ });
1971
+
1948
1972
  describe('#patchCloudProvider - errors', () => {
1949
1973
  it('should have a patchCloudProvider function', (done) => {
1950
1974
  try {
@@ -6559,6 +6583,18 @@ describe('[unit] F5BigIQ Adapter Test', () => {
6559
6583
  }).timeout(attemptTimeout);
6560
6584
  });
6561
6585
 
6586
+ describe('#listDeviceIPPools - errors', () => {
6587
+ it('should have a listDeviceIPPools function', (done) => {
6588
+ try {
6589
+ assert.equal(true, typeof a.listDeviceIPPools === 'function');
6590
+ done();
6591
+ } catch (error) {
6592
+ log.error(`Test Failure: ${error}`);
6593
+ done(error);
6594
+ }
6595
+ }).timeout(attemptTimeout);
6596
+ });
6597
+
6562
6598
  describe('#patchDeviceIPPools - errors', () => {
6563
6599
  it('should have a patchDeviceIPPools function', (done) => {
6564
6600
  try {