@itentialopensource/adapter-oracle_cloud 0.1.1 → 0.3.0

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.
Files changed (55) hide show
  1. package/AUTH.md +39 -0
  2. package/BROKER.md +199 -0
  3. package/CALLS.md +859 -0
  4. package/CHANGELOG.md +17 -2
  5. package/CODE_OF_CONDUCT.md +12 -17
  6. package/CONTRIBUTING.md +3 -148
  7. package/ENHANCE.md +69 -0
  8. package/PROPERTIES.md +641 -0
  9. package/README.md +235 -576
  10. package/SUMMARY.md +9 -0
  11. package/SYSTEMINFO.md +11 -0
  12. package/TROUBLESHOOT.md +47 -0
  13. package/adapter.js +371 -270
  14. package/adapterBase.js +843 -419
  15. package/changelogs/changelog.md +16 -0
  16. package/entities/.generic/action.json +105 -0
  17. package/entities/.generic/schema.json +6 -1
  18. package/error.json +6 -0
  19. package/metadata.json +49 -0
  20. package/package.json +24 -24
  21. package/pronghorn.json +680 -100
  22. package/propertiesDecorators.json +14 -0
  23. package/propertiesSchema.json +830 -9
  24. package/refs?service=git-upload-pack +0 -0
  25. package/report/adapter-openapi.json +11867 -0
  26. package/report/adapter-openapi.yaml +11966 -0
  27. package/report/adapterInfo.json +10 -0
  28. package/report/updateReport1653049581192.json +120 -0
  29. package/report/updateReport1691507422430.json +120 -0
  30. package/report/updateReport1692202455354.json +120 -0
  31. package/report/updateReport1694460824360.json +120 -0
  32. package/report/updateReport1698420559437.json +120 -0
  33. package/sampleProperties.json +153 -3
  34. package/test/integration/adapterTestBasicGet.js +3 -5
  35. package/test/integration/adapterTestConnectivity.js +91 -42
  36. package/test/integration/adapterTestIntegration.js +176 -127
  37. package/test/unit/adapterBaseTestUnit.js +388 -308
  38. package/test/unit/adapterTestUnit.js +643 -402
  39. package/utils/adapterInfo.js +206 -0
  40. package/utils/addAuth.js +1 -1
  41. package/utils/artifactize.js +1 -1
  42. package/utils/checkMigrate.js +1 -1
  43. package/utils/entitiesToDB.js +12 -57
  44. package/utils/findPath.js +1 -1
  45. package/utils/methodDocumentor.js +273 -0
  46. package/utils/modify.js +13 -15
  47. package/utils/packModificationScript.js +1 -1
  48. package/utils/patches2bundledDeps.js +90 -0
  49. package/utils/pre-commit.sh +5 -0
  50. package/utils/taskMover.js +309 -0
  51. package/utils/tbScript.js +123 -53
  52. package/utils/tbUtils.js +92 -48
  53. package/utils/testRunner.js +17 -17
  54. package/utils/troubleshootingAdapter.js +9 -6
  55. package/workflows/README.md +0 -3
package/adapter.js CHANGED
@@ -80,10 +80,15 @@ class OracleCloud extends AdapterBaseCl {
80
80
  }
81
81
 
82
82
  /**
83
- * @getWorkflowFunctions
84
- */
85
- getWorkflowFunctions(inIgnore) {
86
- let myIgnore = [];
83
+ * @iapGetAdapterWorkflowFunctions
84
+ */
85
+ iapGetAdapterWorkflowFunctions(inIgnore) {
86
+ let myIgnore = [
87
+ 'healthCheck',
88
+ 'iapGetAdapterWorkflowFunctions',
89
+ 'hasEntities',
90
+ 'getAuthorization'
91
+ ];
87
92
  if (!inIgnore && Array.isArray(inIgnore)) {
88
93
  myIgnore = inIgnore;
89
94
  } else if (!inIgnore && typeof inIgnore === 'string') {
@@ -94,52 +99,44 @@ class OracleCloud extends AdapterBaseCl {
94
99
  // you can add specific methods that you do not want to be workflow functions to ignore like below
95
100
  // myIgnore.push('myMethodNotInWorkflow');
96
101
 
97
- return super.getWorkflowFunctions(myIgnore);
102
+ return super.iapGetAdapterWorkflowFunctions(myIgnore);
98
103
  }
99
104
 
100
105
  /**
101
- * updateAdapterConfiguration is used to update any of the adapter configuration files. This
106
+ * iapUpdateAdapterConfiguration is used to update any of the adapter configuration files. This
102
107
  * allows customers to make changes to adapter configuration without having to be on the
103
108
  * file system.
104
109
  *
105
- * @function updateAdapterConfiguration
110
+ * @function iapUpdateAdapterConfiguration
106
111
  * @param {string} configFile - the name of the file being updated (required)
107
112
  * @param {Object} changes - an object containing all of the changes = formatted like the configuration file (required)
108
113
  * @param {string} entity - the entity to be changed, if an action, schema or mock data file (optional)
109
114
  * @param {string} type - the type of entity file to change, (action, schema, mock) (optional)
110
115
  * @param {string} action - the action to be changed, if an action, schema or mock data file (optional)
116
+ * @param {boolean} replace - true to replace entire mock data, false to merge/append
111
117
  * @param {Callback} callback - The results of the call
112
118
  */
113
- updateAdapterConfiguration(configFile, changes, entity, type, action, callback) {
114
- const origin = `${this.id}-adapter-updateAdapterConfiguration`;
119
+ iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, replace, callback) {
120
+ const meth = 'adapter-iapUpdateAdapterConfiguration';
121
+ const origin = `${this.id}-${meth}`;
115
122
  log.trace(origin);
116
- super.updateAdapterConfiguration(configFile, changes, entity, type, action, callback);
117
- }
118
123
 
119
- /**
120
- * See if the API path provided is found in this adapter
121
- *
122
- * @function findPath
123
- * @param {string} apiPath - the api path to check on
124
- * @param {Callback} callback - The results of the call
125
- */
126
- findPath(apiPath, callback) {
127
- const origin = `${this.id}-adapter-findPath`;
128
- log.trace(origin);
129
- super.findPath(apiPath, callback);
124
+ super.iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, replace, callback);
130
125
  }
131
126
 
132
127
  /**
133
128
  * @summary Suspends adapter
134
129
  *
135
- * @function suspend
130
+ * @function iapSuspendAdapter
136
131
  * @param {Callback} callback - callback function
137
132
  */
138
- suspend(mode, callback) {
139
- const origin = `${this.id}-adapter-suspend`;
133
+ iapSuspendAdapter(mode, callback) {
134
+ const meth = 'adapter-iapSuspendAdapter';
135
+ const origin = `${this.id}-${meth}`;
140
136
  log.trace(origin);
137
+
141
138
  try {
142
- return super.suspend(mode, callback);
139
+ return super.iapSuspendAdapter(mode, callback);
143
140
  } catch (error) {
144
141
  log.error(`${origin}: ${error}`);
145
142
  return callback(null, error);
@@ -149,14 +146,16 @@ class OracleCloud extends AdapterBaseCl {
149
146
  /**
150
147
  * @summary Unsuspends adapter
151
148
  *
152
- * @function unsuspend
149
+ * @function iapUnsuspendAdapter
153
150
  * @param {Callback} callback - callback function
154
151
  */
155
- unsuspend(callback) {
156
- const origin = `${this.id}-adapter-unsuspend`;
152
+ iapUnsuspendAdapter(callback) {
153
+ const meth = 'adapter-iapUnsuspendAdapter';
154
+ const origin = `${this.id}-${meth}`;
157
155
  log.trace(origin);
156
+
158
157
  try {
159
- return super.unsuspend(callback);
158
+ return super.iapUnsuspendAdapter(callback);
160
159
  } catch (error) {
161
160
  log.error(`${origin}: ${error}`);
162
161
  return callback(null, error);
@@ -164,31 +163,51 @@ class OracleCloud extends AdapterBaseCl {
164
163
  }
165
164
 
166
165
  /**
167
- * @summary Get the Adaoter Queue
166
+ * @summary Get the Adapter Queue
168
167
  *
169
- * @function getQueue
168
+ * @function iapGetAdapterQueue
170
169
  * @param {Callback} callback - callback function
171
170
  */
172
- getQueue(callback) {
173
- const origin = `${this.id}-adapter-getQueue`;
171
+ iapGetAdapterQueue(callback) {
172
+ const meth = 'adapter-iapGetAdapterQueue';
173
+ const origin = `${this.id}-${meth}`;
174
+ log.trace(origin);
175
+
176
+ return super.iapGetAdapterQueue(callback);
177
+ }
178
+
179
+ /* SCRIPT CALLS */
180
+ /**
181
+ * See if the API path provided is found in this adapter
182
+ *
183
+ * @function iapFindAdapterPath
184
+ * @param {string} apiPath - the api path to check on
185
+ * @param {Callback} callback - The results of the call
186
+ */
187
+ iapFindAdapterPath(apiPath, callback) {
188
+ const meth = 'adapter-iapFindAdapterPath';
189
+ const origin = `${this.id}-${meth}`;
174
190
  log.trace(origin);
175
- return super.getQueue(callback);
191
+
192
+ super.iapFindAdapterPath(apiPath, callback);
176
193
  }
177
194
 
178
195
  /**
179
196
  * @summary Runs troubleshoot scripts for adapter
180
197
  *
181
- * @function troubleshoot
198
+ * @function iapTroubleshootAdapter
182
199
  * @param {Object} props - the connection, healthcheck and authentication properties
183
200
  *
184
201
  * @param {boolean} persistFlag - whether the adapter properties should be updated
185
202
  * @param {Callback} callback - The results of the call
186
203
  */
187
- troubleshoot(props, persistFlag, callback) {
188
- const origin = `${this.id}-adapter-troubleshoot`;
204
+ iapTroubleshootAdapter(props, persistFlag, callback) {
205
+ const meth = 'adapter-iapTroubleshootAdapter';
206
+ const origin = `${this.id}-${meth}`;
189
207
  log.trace(origin);
208
+
190
209
  try {
191
- return super.troubleshoot(props, persistFlag, this, callback);
210
+ return super.iapTroubleshootAdapter(props, persistFlag, this, callback);
192
211
  } catch (error) {
193
212
  log.error(`${origin}: ${error}`);
194
213
  return callback(null, error);
@@ -198,15 +217,17 @@ class OracleCloud extends AdapterBaseCl {
198
217
  /**
199
218
  * @summary runs healthcheck script for adapter
200
219
  *
201
- * @function runHealthcheck
220
+ * @function iapRunAdapterHealthcheck
202
221
  * @param {Adapter} adapter - adapter instance to troubleshoot
203
222
  * @param {Callback} callback - callback function
204
223
  */
205
- runHealthcheck(callback) {
206
- const origin = `${this.id}-adapter-runHealthcheck`;
224
+ iapRunAdapterHealthcheck(callback) {
225
+ const meth = 'adapter-iapRunAdapterHealthcheck';
226
+ const origin = `${this.id}-${meth}`;
207
227
  log.trace(origin);
228
+
208
229
  try {
209
- return super.runHealthcheck(this, callback);
230
+ return super.iapRunAdapterHealthcheck(this, callback);
210
231
  } catch (error) {
211
232
  log.error(`${origin}: ${error}`);
212
233
  return callback(null, error);
@@ -216,14 +237,16 @@ class OracleCloud extends AdapterBaseCl {
216
237
  /**
217
238
  * @summary runs connectivity check script for adapter
218
239
  *
219
- * @function runConnectivity
240
+ * @function iapRunAdapterConnectivity
220
241
  * @param {Callback} callback - callback function
221
242
  */
222
- runConnectivity(callback) {
223
- const origin = `${this.id}-adapter-runConnectivity`;
243
+ iapRunAdapterConnectivity(callback) {
244
+ const meth = 'adapter-iapRunAdapterConnectivity';
245
+ const origin = `${this.id}-${meth}`;
224
246
  log.trace(origin);
247
+
225
248
  try {
226
- return super.runConnectivity(callback);
249
+ return super.iapRunAdapterConnectivity(callback);
227
250
  } catch (error) {
228
251
  log.error(`${origin}: ${error}`);
229
252
  return callback(null, error);
@@ -233,14 +256,16 @@ class OracleCloud extends AdapterBaseCl {
233
256
  /**
234
257
  * @summary runs basicGet script for adapter
235
258
  *
236
- * @function runBasicGet
259
+ * @function iapRunAdapterBasicGet
237
260
  * @param {Callback} callback - callback function
238
261
  */
239
- runBasicGet(callback) {
240
- const origin = `${this.id}-adapter-runBasicGet`;
262
+ iapRunAdapterBasicGet(callback) {
263
+ const meth = 'adapter-iapRunAdapterBasicGet';
264
+ const origin = `${this.id}-${meth}`;
241
265
  log.trace(origin);
266
+
242
267
  try {
243
- return super.runBasicGet(callback);
268
+ return super.iapRunAdapterBasicGet(callback);
244
269
  } catch (error) {
245
270
  log.error(`${origin}: ${error}`);
246
271
  return callback(null, error);
@@ -250,15 +275,17 @@ class OracleCloud extends AdapterBaseCl {
250
275
  /**
251
276
  * @summary moves entites into Mongo DB
252
277
  *
253
- * @function moveEntitiesToDB
278
+ * @function iapMoveAdapterEntitiesToDB
254
279
  * @param {getCallback} callback - a callback function to return the result (Generics)
255
280
  * or the error
256
281
  */
257
- moveEntitiesToDB(callback) {
258
- const origin = `${this.id}-adapter-moveEntitiesToDB`;
282
+ iapMoveAdapterEntitiesToDB(callback) {
283
+ const meth = 'adapter-iapMoveAdapterEntitiesToDB';
284
+ const origin = `${this.id}-${meth}`;
259
285
  log.trace(origin);
286
+
260
287
  try {
261
- return super.moveEntitiesToDB(callback);
288
+ return super.iapMoveAdapterEntitiesToDB(callback);
262
289
  } catch (err) {
263
290
  log.error(`${origin}: ${err}`);
264
291
  return callback(null, err);
@@ -266,171 +293,255 @@ class OracleCloud extends AdapterBaseCl {
266
293
  }
267
294
 
268
295
  /**
269
- * @summary Determines if this adapter supports the specific entity
296
+ * @summary Deactivate adapter tasks
270
297
  *
271
- * @function hasEntity
272
- * @param {String} entityType - the entity type to check for
273
- * @param {String/Array} entityId - the specific entity we are looking for
298
+ * @function iapDeactivateTasks
274
299
  *
275
- * @param {Callback} callback - An array of whether the adapter can has the
276
- * desired capability or an error
300
+ * @param {Array} tasks - List of tasks to deactivate
301
+ * @param {Callback} callback
277
302
  */
278
- hasEntity(entityType, entityId, callback) {
279
- const origin = `${this.id}-adapter-hasEntity`;
303
+ iapDeactivateTasks(tasks, callback) {
304
+ const meth = 'adapter-iapDeactivateTasks';
305
+ const origin = `${this.id}-${meth}`;
280
306
  log.trace(origin);
281
307
 
282
- // Make the call -
283
- // verifyCapability(entityType, actionType, entityId, callback)
284
- return this.verifyCapability(entityType, null, entityId, callback);
308
+ try {
309
+ return super.iapDeactivateTasks(tasks, callback);
310
+ } catch (err) {
311
+ log.error(`${origin}: ${err}`);
312
+ return callback(null, err);
313
+ }
285
314
  }
286
315
 
287
316
  /**
288
- * @summary Provides a way for the adapter to tell north bound integrations
289
- * whether the adapter supports type, action and specific entity
317
+ * @summary Activate adapter tasks that have previously been deactivated
290
318
  *
291
- * @function verifyCapability
292
- * @param {String} entityType - the entity type to check for
293
- * @param {String} actionType - the action type to check for
294
- * @param {String/Array} entityId - the specific entity we are looking for
295
- *
296
- * @param {Callback} callback - An array of whether the adapter can has the
297
- * desired capability or an error
298
- */
299
- verifyCapability(entityType, actionType, entityId, callback) {
300
- const meth = 'adapterBase-verifyCapability';
301
- const origin = `${this.id}-${meth}`;
302
- log.trace(origin);
303
-
304
- // if caching
305
- if (this.caching) {
306
- // Make the call - verifyCapability(entityType, actionType, entityId, callback)
307
- return this.requestHandlerInst.verifyCapability(entityType, actionType, entityId, (results, error) => {
308
- if (error) {
309
- return callback(null, error);
310
- }
311
-
312
- // if the cache needs to be updated, update and try again
313
- if (results && results[0] === 'needupdate') {
314
- switch (entityType) {
315
- case 'template_entity': {
316
- // if the cache is invalid, update the cache
317
- return this.getEntities(null, null, null, null, (data, err) => {
318
- if (err) {
319
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Could not update entity: $VARIABLE$, cache', [entityType], null, null, null);
320
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
321
- return callback(null, errorObj);
322
- }
323
-
324
- // need to check the cache again since it has been updated
325
- return this.requestHandlerInst.verifyCapability(entityType, actionType, entityId, (vcapable, verror) => {
326
- if (verror) {
327
- return callback(null, verror);
328
- }
329
-
330
- return this.capabilityResults(vcapable, callback);
331
- });
332
- });
333
- }
334
- default: {
335
- // unsupported entity type
336
- const result = [false];
337
-
338
- // put false in array for all entities
339
- if (Array.isArray(entityId)) {
340
- for (let e = 1; e < entityId.length; e += 1) {
341
- result.push(false);
342
- }
343
- }
344
-
345
- return callback(result);
346
- }
347
- }
348
- }
349
-
350
- // return the results
351
- return this.capabilityResults(results, callback);
352
- });
319
+ * @function iapActivateTasks
320
+ *
321
+ * @param {Array} tasks - List of tasks to activate
322
+ * @param {Callback} callback
323
+ */
324
+ iapActivateTasks(tasks, callback) {
325
+ const meth = 'adapter-iapActivateTasks';
326
+ const origin = `${this.id}-${meth}`;
327
+ log.trace(origin);
328
+
329
+ try {
330
+ return super.iapActivateTasks(tasks, callback);
331
+ } catch (err) {
332
+ log.error(`${origin}: ${err}`);
333
+ return callback(null, err);
353
334
  }
335
+ }
354
336
 
355
- // if no entity id
356
- if (!entityId) {
357
- // need to check the cache again since it has been updated
358
- return this.requestHandlerInst.verifyCapability(entityType, actionType, null, (vcapable, verror) => {
359
- if (verror) {
360
- return callback(null, verror);
361
- }
337
+ /* CACHE CALLS */
338
+ /**
339
+ * @summary Populate the cache for the given entities
340
+ *
341
+ * @function iapPopulateEntityCache
342
+ * @param {String/Array of Strings} entityType - the entity type(s) to populate
343
+ * @param {Callback} callback - whether the cache was updated or not for each entity type
344
+ *
345
+ * @returns status of the populate
346
+ */
347
+ iapPopulateEntityCache(entityTypes, callback) {
348
+ const meth = 'adapter-iapPopulateEntityCache';
349
+ const origin = `${this.id}-${meth}`;
350
+ log.trace(origin);
362
351
 
363
- return this.capabilityResults(vcapable, callback);
364
- });
352
+ try {
353
+ return super.iapPopulateEntityCache(entityTypes, callback);
354
+ } catch (err) {
355
+ log.error(`${origin}: ${err}`);
356
+ return callback(null, err);
365
357
  }
358
+ }
366
359
 
367
- // if not caching
368
- switch (entityType) {
369
- case 'template_entity': {
370
- // need to get the entities to check
371
- return this.getEntities(null, null, null, null, (data, err) => {
372
- if (err) {
373
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Could not update entity: $VARIABLE$, cache', [entityType], null, null, null);
374
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
375
- return callback(null, errorObj);
376
- }
360
+ /**
361
+ * @summary Retrieves data from cache for specified entity type
362
+ *
363
+ * @function iapRetrieveEntitiesCache
364
+ * @param {String} entityType - entity of which to retrieve
365
+ * @param {Object} options - settings of which data to return and how to return it
366
+ * @param {Callback} callback - the data if it was retrieved
367
+ */
368
+ iapRetrieveEntitiesCache(entityType, options, callback) {
369
+ const meth = 'adapter-iapCheckEiapRetrieveEntitiesCachentityCached';
370
+ const origin = `${this.id}-${meth}`;
371
+ log.trace(origin);
377
372
 
378
- // need to check the cache again since it has been updated
379
- return this.requestHandlerInst.verifyCapability(entityType, actionType, null, (vcapable, verror) => {
380
- if (verror) {
381
- return callback(null, verror);
382
- }
373
+ try {
374
+ return super.iapRetrieveEntitiesCache(entityType, options, callback);
375
+ } catch (err) {
376
+ log.error(`${origin}: ${err}`);
377
+ return callback(null, err);
378
+ }
379
+ }
383
380
 
384
- // is the entity in the list?
385
- const isEntity = this.entityInList(entityId, data.response, callback);
386
- const res = [];
381
+ /* BROKER CALLS */
382
+ /**
383
+ * @summary Determines if this adapter supports any in a list of entities
384
+ *
385
+ * @function hasEntities
386
+ * @param {String} entityType - the entity type to check for
387
+ * @param {Array} entityList - the list of entities we are looking for
388
+ *
389
+ * @param {Callback} callback - A map where the entity is the key and the
390
+ * value is true or false
391
+ */
392
+ hasEntities(entityType, entityList, callback) {
393
+ const meth = 'adapter-hasEntities';
394
+ const origin = `${this.id}-${meth}`;
395
+ log.trace(origin);
387
396
 
388
- // not found
389
- for (let i = 0; i < isEntity.length; i += 1) {
390
- if (vcapable) {
391
- res.push(isEntity[i]);
392
- } else {
393
- res.push(false);
394
- }
395
- }
397
+ try {
398
+ return super.hasEntities(entityType, entityList, callback);
399
+ } catch (err) {
400
+ log.error(`${origin}: ${err}`);
401
+ return callback(null, err);
402
+ }
403
+ }
396
404
 
397
- return callback(res);
398
- });
399
- });
400
- }
401
- default: {
402
- // unsupported entity type
403
- const result = [false];
405
+ /**
406
+ * @summary Get Appliance that match the deviceName
407
+ *
408
+ * @function getDevice
409
+ * @param {String} deviceName - the deviceName to find (required)
410
+ *
411
+ * @param {getCallback} callback - a callback function to return the result
412
+ * (appliance) or the error
413
+ */
414
+ getDevice(deviceName, callback) {
415
+ const meth = 'adapter-getDevice';
416
+ const origin = `${this.id}-${meth}`;
417
+ log.trace(origin);
404
418
 
405
- // put false in array for all entities
406
- if (Array.isArray(entityId)) {
407
- for (let e = 1; e < entityId.length; e += 1) {
408
- result.push(false);
409
- }
410
- }
419
+ try {
420
+ return super.getDevice(deviceName, callback);
421
+ } catch (err) {
422
+ log.error(`${origin}: ${err}`);
423
+ return callback(null, err);
424
+ }
425
+ }
411
426
 
412
- return callback(result);
413
- }
427
+ /**
428
+ * @summary Get Appliances that match the filter
429
+ *
430
+ * @function getDevicesFiltered
431
+ * @param {Object} options - the data to use to filter the appliances (optional)
432
+ *
433
+ * @param {getCallback} callback - a callback function to return the result
434
+ * (appliances) or the error
435
+ */
436
+ getDevicesFiltered(options, callback) {
437
+ const meth = 'adapter-getDevicesFiltered';
438
+ const origin = `${this.id}-${meth}`;
439
+ log.trace(origin);
440
+
441
+ try {
442
+ return super.getDevicesFiltered(options, callback);
443
+ } catch (err) {
444
+ log.error(`${origin}: ${err}`);
445
+ return callback(null, err);
414
446
  }
415
447
  }
416
448
 
417
449
  /**
418
- * @summary Updates the cache for all entities by call the get All entity method
450
+ * @summary Gets the status for the provided appliance
419
451
  *
420
- * @function updateEntityCache
452
+ * @function isAlive
453
+ * @param {String} deviceName - the deviceName of the appliance. (required)
421
454
  *
455
+ * @param {configCallback} callback - callback function to return the result
456
+ * (appliance isAlive) or the error
422
457
  */
423
- updateEntityCache() {
424
- const origin = `${this.id}-adapter-updateEntityCache`;
458
+ isAlive(deviceName, callback) {
459
+ const meth = 'adapter-isAlive';
460
+ const origin = `${this.id}-${meth}`;
425
461
  log.trace(origin);
426
462
 
427
- if (this.caching) {
428
- // if the cache is invalid, update the cache
429
- this.getEntities(null, null, null, null, (data, err) => {
430
- if (err) {
431
- log.trace(`${origin}: Could not load template_entity into cache - ${err}`);
432
- }
433
- });
463
+ try {
464
+ return super.isAlive(deviceName, callback);
465
+ } catch (err) {
466
+ log.error(`${origin}: ${err}`);
467
+ return callback(null, err);
468
+ }
469
+ }
470
+
471
+ /**
472
+ * @summary Gets a config for the provided Appliance
473
+ *
474
+ * @function getConfig
475
+ * @param {String} deviceName - the deviceName of the appliance. (required)
476
+ * @param {String} format - the desired format of the config. (optional)
477
+ *
478
+ * @param {configCallback} callback - callback function to return the result
479
+ * (appliance config) or the error
480
+ */
481
+ getConfig(deviceName, format, callback) {
482
+ const meth = 'adapter-getConfig';
483
+ const origin = `${this.id}-${meth}`;
484
+ log.trace(origin);
485
+
486
+ try {
487
+ return super.getConfig(deviceName, format, callback);
488
+ } catch (err) {
489
+ log.error(`${origin}: ${err}`);
490
+ return callback(null, err);
491
+ }
492
+ }
493
+
494
+ /**
495
+ * @summary Gets the device count from the system
496
+ *
497
+ * @function iapGetDeviceCount
498
+ *
499
+ * @param {getCallback} callback - callback function to return the result
500
+ * (count) or the error
501
+ */
502
+ iapGetDeviceCount(callback) {
503
+ const meth = 'adapter-iapGetDeviceCount';
504
+ const origin = `${this.id}-${meth}`;
505
+ log.trace(origin);
506
+
507
+ try {
508
+ return super.iapGetDeviceCount(callback);
509
+ } catch (err) {
510
+ log.error(`${origin}: ${err}`);
511
+ return callback(null, err);
512
+ }
513
+ }
514
+
515
+ /* GENERIC ADAPTER REQUEST - allows extension of adapter without new calls being added */
516
+ /**
517
+ * Makes the requested generic call
518
+ *
519
+ * @function iapExpandedGenericAdapterRequest
520
+ * @param {Object} metadata - metadata for the call (optional).
521
+ * Can be a stringified Object.
522
+ * @param {String} uriPath - the path of the api call - do not include the host, port, base path or version (optional)
523
+ * @param {String} restMethod - the rest method (GET, POST, PUT, PATCH, DELETE) (optional)
524
+ * @param {Object} pathVars - the parameters to be put within the url path (optional).
525
+ * Can be a stringified Object.
526
+ * @param {Object} queryData - the parameters to be put on the url (optional).
527
+ * Can be a stringified Object.
528
+ * @param {Object} requestBody - the body to add to the request (optional).
529
+ * Can be a stringified Object.
530
+ * @param {Object} addlHeaders - additional headers to be put on the call (optional).
531
+ * Can be a stringified Object.
532
+ * @param {getCallback} callback - a callback function to return the result (Generics)
533
+ * or the error
534
+ */
535
+ iapExpandedGenericAdapterRequest(metadata, uriPath, restMethod, pathVars, queryData, requestBody, addlHeaders, callback) {
536
+ const meth = 'adapter-iapExpandedGenericAdapterRequest';
537
+ const origin = `${this.id}-${meth}`;
538
+ log.trace(origin);
539
+
540
+ try {
541
+ return super.iapExpandedGenericAdapterRequest(metadata, uriPath, restMethod, pathVars, queryData, requestBody, addlHeaders, callback);
542
+ } catch (err) {
543
+ log.error(`${origin}: ${err}`);
544
+ return callback(null, err);
434
545
  }
435
546
  }
436
547
 
@@ -454,94 +565,84 @@ class OracleCloud extends AdapterBaseCl {
454
565
  const origin = `${this.id}-${meth}`;
455
566
  log.trace(origin);
456
567
 
457
- if (this.suspended && this.suspendMode === 'error') {
458
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);
459
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
460
- return callback(null, errorObj);
568
+ try {
569
+ return super.genericAdapterRequest(uriPath, restMethod, queryData, requestBody, addlHeaders, callback);
570
+ } catch (err) {
571
+ log.error(`${origin}: ${err}`);
572
+ return callback(null, err);
461
573
  }
574
+ }
462
575
 
463
- /* HERE IS WHERE YOU VALIDATE DATA */
464
- if (uriPath === undefined || uriPath === null || uriPath === '') {
465
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['uriPath'], null, null, null);
466
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
467
- return callback(null, errorObj);
468
- }
469
- if (restMethod === undefined || restMethod === null || restMethod === '') {
470
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['restMethod'], null, null, null);
471
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
472
- return callback(null, errorObj);
473
- }
576
+ /**
577
+ * Makes the requested generic call with no base path or version
578
+ *
579
+ * @function genericAdapterRequestNoBasePath
580
+ * @param {String} uriPath - the path of the api call - do not include the host, port, base path or version (required)
581
+ * @param {String} restMethod - the rest method (GET, POST, PUT, PATCH, DELETE) (required)
582
+ * @param {Object} queryData - the parameters to be put on the url (optional).
583
+ * Can be a stringified Object.
584
+ * @param {Object} requestBody - the body to add to the request (optional).
585
+ * Can be a stringified Object.
586
+ * @param {Object} addlHeaders - additional headers to be put on the call (optional).
587
+ * Can be a stringified Object.
588
+ * @param {getCallback} callback - a callback function to return the result (Generics)
589
+ * or the error
590
+ */
591
+ genericAdapterRequestNoBasePath(uriPath, restMethod, queryData, requestBody, addlHeaders, callback) {
592
+ const meth = 'adapter-genericAdapterRequestNoBasePath';
593
+ const origin = `${this.id}-${meth}`;
594
+ log.trace(origin);
474
595
 
475
- /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */
476
- // remove any leading / and split the uripath into path variables
477
- let myPath = uriPath;
478
- while (myPath.indexOf('/') === 0) {
479
- myPath = myPath.substring(1);
596
+ try {
597
+ return super.genericAdapterRequestNoBasePath(uriPath, restMethod, queryData, requestBody, addlHeaders, callback);
598
+ } catch (err) {
599
+ log.error(`${origin}: ${err}`);
600
+ return callback(null, err);
480
601
  }
481
- const pathVars = myPath.split('/');
482
- const queryParamsAvailable = queryData;
483
- const queryParams = {};
484
- const bodyVars = requestBody;
602
+ }
485
603
 
486
- // loop in template. long callback arg name to avoid identifier conflicts
487
- Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {
488
- if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null
489
- && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {
490
- queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];
491
- }
492
- });
604
+ /* INVENTORY CALLS */
605
+ /**
606
+ * @summary run the adapter lint script to return the results.
607
+ *
608
+ * @function iapRunAdapterLint
609
+ * @param {Callback} callback - callback function
610
+ */
611
+ iapRunAdapterLint(callback) {
612
+ const meth = 'adapter-iapRunAdapterLint';
613
+ const origin = `${this.id}-${meth}`;
614
+ log.trace(origin);
493
615
 
494
- // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders
495
- const reqObj = {
496
- payload: bodyVars,
497
- uriPathVars: pathVars,
498
- uriQuery: queryParams,
499
- uriOptions: {}
500
- };
501
- // add headers if provided
502
- if (addlHeaders) {
503
- reqObj.addlHeaders = addlHeaders;
504
- }
616
+ return super.iapRunAdapterLint(callback);
617
+ }
505
618
 
506
- // determine the call and return flag
507
- let action = 'getGenerics';
508
- let returnF = true;
509
- if (restMethod.toUpperCase() === 'POST') {
510
- action = 'createGeneric';
511
- } else if (restMethod.toUpperCase() === 'PUT') {
512
- action = 'updateGeneric';
513
- } else if (restMethod.toUpperCase() === 'PATCH') {
514
- action = 'patchGeneric';
515
- } else if (restMethod.toUpperCase() === 'DELETE') {
516
- action = 'deleteGeneric';
517
- returnF = false;
518
- }
619
+ /**
620
+ * @summary run the adapter test scripts (baseunit and unit) to return the results.
621
+ * can not run integration as there can be implications with that.
622
+ *
623
+ * @function iapRunAdapterTests
624
+ * @param {Callback} callback - callback function
625
+ */
626
+ iapRunAdapterTests(callback) {
627
+ const meth = 'adapter-iapRunAdapterTests';
628
+ const origin = `${this.id}-${meth}`;
629
+ log.trace(origin);
519
630
 
520
- try {
521
- // Make the call -
522
- // identifyRequest(entity, action, requestObj, returnDataFlag, callback)
523
- return this.requestHandlerInst.identifyRequest('.generic', action, reqObj, returnF, (irReturnData, irReturnError) => {
524
- // if we received an error or their is no response on the results
525
- // return an error
526
- if (irReturnError) {
527
- /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */
528
- return callback(null, irReturnError);
529
- }
530
- if (!Object.hasOwnProperty.call(irReturnData, 'response')) {
531
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['genericAdapterRequest'], null, null, null);
532
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
533
- return callback(null, errorObj);
534
- }
631
+ return super.iapRunAdapterTests(callback);
632
+ }
535
633
 
536
- /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */
537
- // return the response
538
- return callback(irReturnData, null);
539
- });
540
- } catch (ex) {
541
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);
542
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
543
- return callback(null, errorObj);
544
- }
634
+ /**
635
+ * @summary provide inventory information abbout the adapter
636
+ *
637
+ * @function iapGetAdapterInventory
638
+ * @param {Callback} callback - callback function
639
+ */
640
+ iapGetAdapterInventory(callback) {
641
+ const meth = 'adapter-iapGetAdapterInventory';
642
+ const origin = `${this.id}-${meth}`;
643
+ log.trace(origin);
644
+
645
+ return super.iapGetAdapterInventory(callback);
545
646
  }
546
647
 
547
648
  /**