@itentialopensource/adapter-meraki 0.8.1 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- package/AUTH.md +14 -15
- package/BROKER.md +199 -0
- package/CALLS.md +158 -89
- package/CHANGELOG.md +68 -26
- package/CODE_OF_CONDUCT.md +12 -17
- package/CONTRIBUTING.md +88 -74
- package/ENHANCE.md +14 -14
- package/PROPERTIES.md +483 -89
- package/README.md +131 -51
- package/SUMMARY.md +2 -2
- package/TROUBLESHOOT.md +4 -3
- package/adapter.js +174 -732
- package/adapterBase.js +841 -88
- package/entities/.generic/action.json +105 -0
- package/entities/.generic/schema.json +6 -1
- package/package.json +5 -3
- package/pronghorn.json +642 -563
- package/propertiesDecorators.json +14 -0
- package/propertiesSchema.json +393 -195
- package/refs?service=git-upload-pack +0 -0
- package/report/adapterInfo.json +10 -0
- package/report/updateReport1651511176919.json +115 -0
- package/report/updateReport1652488414759.json +120 -0
- package/sampleProperties.json +132 -3
- package/test/integration/adapterTestBasicGet.js +1 -1
- package/test/integration/adapterTestIntegration.js +24 -107
- package/test/unit/adapterBaseTestUnit.js +10 -3
- package/test/unit/adapterTestUnit.js +38 -131
- package/utils/adapterInfo.js +206 -0
- package/utils/entitiesToDB.js +12 -57
- package/utils/pre-commit.sh +3 -0
- package/utils/tbScript.js +35 -20
- package/utils/tbUtils.js +49 -31
- package/utils/testRunner.js +16 -16
package/utils/tbUtils.js
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
/* eslint import/no-extraneous-dependencies: warn */
|
4
4
|
/* eslint global-require: warn */
|
5
5
|
/* eslint import/no-dynamic-require: warn */
|
6
|
+
/* eslint-disable no-console */
|
6
7
|
|
7
8
|
const path = require('path');
|
8
9
|
const fs = require('fs-extra');
|
@@ -305,9 +306,9 @@ module.exports = {
|
|
305
306
|
* @param {Object} sampleProperties - './sampleProperties.json' in adapter dir
|
306
307
|
*/
|
307
308
|
createAdapter: function createAdapter(pronghornProps, profileItem, sampleProperties, adapterPronghorn) {
|
308
|
-
const
|
309
|
-
const
|
310
|
-
const info = JSON.parse(fs.readFileSync(
|
309
|
+
const iapDir = this.getIAPHome();
|
310
|
+
const packageFile = path.join(iapDir, 'package.json');
|
311
|
+
const info = JSON.parse(fs.readFileSync(packageFile));
|
311
312
|
const version = parseInt(info.version.split('.')[0], 10);
|
312
313
|
|
313
314
|
let adapter = {};
|
@@ -352,13 +353,7 @@ module.exports = {
|
|
352
353
|
|
353
354
|
// get database connection and existing adapter config
|
354
355
|
getAdapterConfig: async function getAdapterConfig() {
|
355
|
-
const
|
356
|
-
let iapDir;
|
357
|
-
if (this.withinIAP(newDirname)) { // when this script is called from IAP
|
358
|
-
iapDir = newDirname;
|
359
|
-
} else {
|
360
|
-
iapDir = path.join(this.getDirname(), 'utils', '../../../../');
|
361
|
-
}
|
356
|
+
const iapDir = this.getIAPHome();
|
362
357
|
const pronghornProps = this.getPronghornProps(iapDir);
|
363
358
|
console.log('Connecting to Database...');
|
364
359
|
const database = await this.connect(iapDir, pronghornProps);
|
@@ -405,35 +400,44 @@ module.exports = {
|
|
405
400
|
},
|
406
401
|
|
407
402
|
/**
|
408
|
-
* @summary
|
409
|
-
*
|
410
|
-
* @
|
411
|
-
* @
|
403
|
+
* @summary Obtain the IAP installation directory depending on how adapter is used:
|
404
|
+
* by IAP, or by npm run CLI interface
|
405
|
+
* @returns IAP installation directory or null if adapter running without IAP
|
406
|
+
* @function getIAPHome
|
412
407
|
*/
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
408
|
+
getIAPHome: function getIAPHome() {
|
409
|
+
let IAPHomePath = null;
|
410
|
+
// check if adapter started via IAP, use path injected by core
|
411
|
+
if (process.env.iap_home) IAPHomePath = process.env.iap_home;
|
412
|
+
// check if adapter started via CLI `npm run <command>` so we have to be located under
|
413
|
+
// <IAP_HOME>/node_modules/@itentialopensource/<adapter_name>/ directory
|
414
|
+
const currentExecutionPath = this.getCurrentExecutionPath();
|
415
|
+
if (currentExecutionPath.indexOf('/node_modules') >= 0) {
|
416
|
+
[IAPHomePath] = currentExecutionPath.split('/node_modules');
|
419
417
|
}
|
418
|
+
return IAPHomePath;
|
420
419
|
},
|
421
420
|
|
422
421
|
/**
|
423
|
-
* @summary
|
424
|
-
*
|
425
|
-
* @returns
|
426
|
-
*
|
427
|
-
* @function getDirname
|
422
|
+
* @summary get current execution path without resolving symbolic links,
|
423
|
+
* use `pwd` command wihout '-P' option (resolving symlinks) https://linux.die.net/man/1/pwd
|
424
|
+
* @returns
|
425
|
+
* @function getCurrentExecutionPAth
|
428
426
|
*/
|
429
|
-
|
430
|
-
if (this.withinIAP(path.join(__dirname, '../../../../'))) {
|
431
|
-
return __dirname;
|
432
|
-
}
|
427
|
+
getCurrentExecutionPath: function getCurrentExecutionPAth() {
|
433
428
|
const { stdout } = this.systemSync('pwd', true);
|
434
429
|
return stdout.trim();
|
435
430
|
},
|
436
431
|
|
432
|
+
/**
|
433
|
+
* @summary checks if command executed from <IAP_HOME>/node_modules/@itentialopensource/<adapter_name>/ location
|
434
|
+
* @returns true if command executed under <IAP_HOME>/node_modules/@itentialopensource/<adapter_name>/ path
|
435
|
+
* @function areWeUnderIAPinstallationDirectory
|
436
|
+
*/
|
437
|
+
areWeUnderIAPinstallationDirectory: function areWeUnderIAPinstallationDirectory() {
|
438
|
+
return path.join(this.getCurrentExecutionPath(), '../../..') === this.getIAPHome();
|
439
|
+
},
|
440
|
+
|
437
441
|
/**
|
438
442
|
* @summary connect to mongodb
|
439
443
|
*
|
@@ -441,9 +445,23 @@ module.exports = {
|
|
441
445
|
* @param {Object} properties - pronghornProps
|
442
446
|
*/
|
443
447
|
connect: async function connect(iapDir, properties) {
|
444
|
-
|
448
|
+
let dbConnectionProperties = {};
|
449
|
+
if (properties.mongoProps) {
|
450
|
+
dbConnectionProperties = properties.mongoProps;
|
451
|
+
} else if (properties.mongo) {
|
452
|
+
if (properties.mongo.url) {
|
453
|
+
dbConnectionProperties.url = properties.mongo.url;
|
454
|
+
} else {
|
455
|
+
dbConnectionProperties.url = `mongodb://${properties.mongo.host}:${properties.mongo.port}`;
|
456
|
+
}
|
457
|
+
dbConnectionProperties.db = properties.mongo.database;
|
458
|
+
}
|
459
|
+
if (!dbConnectionProperties.url || !dbConnectionProperties.db) {
|
460
|
+
throw new Error('Mongo properties are not specified in IAP configuration!');
|
461
|
+
}
|
462
|
+
|
445
463
|
const { MongoDBConnection } = require(path.join(iapDir, 'node_modules/@itential/database'));
|
446
|
-
const connection = new MongoDBConnection(
|
464
|
+
const connection = new MongoDBConnection(dbConnectionProperties);
|
447
465
|
const database = await connection.connect(true);
|
448
466
|
return database;
|
449
467
|
}
|
package/utils/testRunner.js
CHANGED
@@ -47,11 +47,11 @@ function replaceTestVars(test) {
|
|
47
47
|
let intTest = fs.readFileSync(test, 'utf8');
|
48
48
|
|
49
49
|
// replace stub variable but check if it exists first
|
50
|
-
let sindex = intTest.indexOf('
|
50
|
+
let sindex = intTest.indexOf('samProps.stub');
|
51
51
|
let eindex = intTest.indexOf(';', sindex);
|
52
52
|
let replStr = intTest.substring(sindex, eindex + 1);
|
53
53
|
if (sindex > -1) {
|
54
|
-
intTest = intTest.replace(replStr, `
|
54
|
+
intTest = intTest.replace(replStr, `samProps.stub = ${stub};`);
|
55
55
|
}
|
56
56
|
|
57
57
|
// replace isRapidFail variable but check if it exists first
|
@@ -71,46 +71,46 @@ function replaceTestVars(test) {
|
|
71
71
|
}
|
72
72
|
|
73
73
|
// replace host variable
|
74
|
-
sindex = intTest.indexOf('
|
74
|
+
sindex = intTest.indexOf('samProps.host');
|
75
75
|
eindex = intTest.indexOf(';', sindex);
|
76
76
|
replStr = intTest.substring(sindex, eindex + 1);
|
77
|
-
intTest = intTest.replace(replStr, `
|
77
|
+
intTest = intTest.replace(replStr, `samProps.host = '${host}';`);
|
78
78
|
|
79
79
|
// replace username variable
|
80
|
-
sindex = intTest.indexOf('
|
80
|
+
sindex = intTest.indexOf('samProps.authentication.username');
|
81
81
|
eindex = intTest.indexOf(';', sindex);
|
82
82
|
replStr = intTest.substring(sindex, eindex + 1);
|
83
|
-
intTest = intTest.replace(replStr, `
|
83
|
+
intTest = intTest.replace(replStr, `samProps.authentication.username = '${username}';`);
|
84
84
|
|
85
85
|
// replace password variable
|
86
|
-
sindex = intTest.indexOf('
|
86
|
+
sindex = intTest.indexOf('samProps.authentication.password');
|
87
87
|
eindex = intTest.indexOf(';', sindex);
|
88
88
|
replStr = intTest.substring(sindex, eindex + 1);
|
89
|
-
intTest = intTest.replace(replStr, `
|
89
|
+
intTest = intTest.replace(replStr, `samProps.authentication.password = '${password}';`);
|
90
90
|
|
91
91
|
// replace protocol variable
|
92
|
-
sindex = intTest.indexOf('
|
92
|
+
sindex = intTest.indexOf('samProps.protocol');
|
93
93
|
eindex = intTest.indexOf(';', sindex);
|
94
94
|
replStr = intTest.substring(sindex, eindex + 1);
|
95
|
-
intTest = intTest.replace(replStr, `
|
95
|
+
intTest = intTest.replace(replStr, `samProps.protocol = '${protocol}';`);
|
96
96
|
|
97
97
|
// replace port variable
|
98
|
-
sindex = intTest.indexOf('
|
98
|
+
sindex = intTest.indexOf('samProps.port');
|
99
99
|
eindex = intTest.indexOf(';', sindex);
|
100
100
|
replStr = intTest.substring(sindex, eindex + 1);
|
101
|
-
intTest = intTest.replace(replStr, `
|
101
|
+
intTest = intTest.replace(replStr, `samProps.port = ${port};`);
|
102
102
|
|
103
103
|
// replace sslenable variable
|
104
|
-
sindex = intTest.indexOf('
|
104
|
+
sindex = intTest.indexOf('samProps.ssl.enabled');
|
105
105
|
eindex = intTest.indexOf(';', sindex);
|
106
106
|
replStr = intTest.substring(sindex, eindex + 1);
|
107
|
-
intTest = intTest.replace(replStr, `
|
107
|
+
intTest = intTest.replace(replStr, `samProps.ssl.enabled = ${sslenable};`);
|
108
108
|
|
109
109
|
// replace sslinvalid variable
|
110
|
-
sindex = intTest.indexOf('
|
110
|
+
sindex = intTest.indexOf('samProps.ssl.accept_invalid_cert');
|
111
111
|
eindex = intTest.indexOf(';', sindex);
|
112
112
|
replStr = intTest.substring(sindex, eindex + 1);
|
113
|
-
intTest = intTest.replace(replStr, `
|
113
|
+
intTest = intTest.replace(replStr, `samProps.ssl.accept_invalid_cert = ${sslinvalid};`);
|
114
114
|
|
115
115
|
console.log(`Updates to ${test} complete`);
|
116
116
|
fs.writeFileSync(test, intTest);
|