Skip to content

Commit a8b3e5b

Browse files
Merge branch 'master' into feature/plugins/vm-disks-cmk-autoKeyRotation
2 parents bb58925 + 66a26ef commit a8b3e5b

File tree

346 files changed

+544
-152
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

346 files changed

+544
-152
lines changed

collectors/azure/collector.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ let collect = function(AzureConfig, settings, callback) {
8484
return cb(null, localData);
8585
}
8686

87-
if (data && ((obj.paginate && data[obj.paginate]) || data['nextLink'])) {
87+
let resData = localData || data;
88+
if (data && ((obj.paginate && data[obj.paginate]) || data['nextLink']) && (!obj.limit || (obj.limit && resData && resData.value && resData.value.length < obj.limit))) {
8889
obj.nextUrl = data['nextLink'] || data[obj.paginate];
8990
processCall(obj, cb, localData || data);
9091
} else {
@@ -97,8 +98,7 @@ let collect = function(AzureConfig, settings, callback) {
9798
let localUrl = obj.nextUrl || obj.url.replace(/\{subscriptionId\}/g, AzureConfig.SubscriptionID);
9899
if (obj.rateLimit) {
99100
setTimeout(function() {
100-
console.log('timeout check');
101-
console.log(`url: ${localUrl} obj: ${JSON.stringify(obj)} localData: ${JSON.stringify(localData)}`);
101+
console.log(`url: ${localUrl}`);
102102
makeCall(localUrl, obj, cb, localData);
103103
}, obj.rateLimit);
104104
} else {
@@ -135,7 +135,7 @@ let collect = function(AzureConfig, settings, callback) {
135135
cback();
136136
}
137137
};
138-
138+
139139
async.series([
140140
// Calls - process the simple calls
141141
function(cb) {
@@ -205,7 +205,8 @@ let collect = function(AzureConfig, settings, callback) {
205205
token: subCallObj.token,
206206
graph: subCallObj.graph,
207207
vault: subCallObj.vault,
208-
rateLimit: subCallObj.rateLimit
208+
rateLimit: subCallObj.rateLimit,
209+
limit: subCallObj.limit
209210
};
210211
// Check and replace properties
211212
if (subCallObj.properties && subCallObj.properties.length) {
@@ -309,7 +310,8 @@ let collect = function(AzureConfig, settings, callback) {
309310
token: subCallObj.token,
310311
graph: subCallObj.graph,
311312
vault: subCallObj.vault,
312-
rateLimit: subCallObj.rateLimit
313+
rateLimit: subCallObj.rateLimit,
314+
limit: subCallObj.limit
313315
};
314316
// Check and replace properties
315317
if (subCallObj.properties && subCallObj.properties.length) {

helpers/asl/asl-1.js

+45-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var parse = function(obj, path) {
1+
var parse = function(obj, path, region, cloud, accountId, resourceId) {
22
//(Array.isArray(obj)) return [obj];
33
if (typeof path == 'string' && path.includes('.')) path = path.split('.');
44
if (Array.isArray(path) && path.length && typeof obj === 'object') {
@@ -22,12 +22,37 @@ var parse = function(obj, path) {
2222
}
2323
if (obj[localPath] || typeof obj[localPath] === 'boolean') {
2424
return parse(obj[localPath], path);
25-
} else {
26-
return ['not set'];
27-
}
25+
} else return ['not set'];
2826
} else if (!Array.isArray(obj) && path && path.length) {
2927
if (obj[path]) return [obj[path]];
30-
else return ['not set'];
28+
else {
29+
if (cloud==='aws' && path.startsWith('arn:aws')) {
30+
const template_string = path;
31+
const placeholders = template_string.match(/{([^{}]+)}/g);
32+
let extracted_values = [];
33+
if (placeholders) {
34+
extracted_values = placeholders.map(placeholder => {
35+
const key = placeholder.slice(1, -1);
36+
if (key === 'value') return [obj][0];
37+
else return obj[key];
38+
});
39+
}
40+
// Replace other variables
41+
let converted_string = template_string
42+
.replace(/\{region\}/g, region)
43+
.replace(/\{cloudAccount\}/g, accountId)
44+
.replace(/\{resourceId\}/g, resourceId);
45+
placeholders.forEach((placeholder, index) => {
46+
if (index === placeholders.length - 1) {
47+
converted_string = converted_string.replace(placeholder, extracted_values.pop());
48+
} else {
49+
converted_string = converted_string.replace(placeholder, extracted_values.shift());
50+
}
51+
});
52+
path = converted_string;
53+
return [path];
54+
} else return ['not set'];
55+
}
3156
} else if (Array.isArray(obj)) {
3257
return [obj];
3358
} else {
@@ -375,7 +400,7 @@ var runValidation = function(obj, condition, inputResultsArr, nestedResultArr) {
375400
return resultObj;
376401
};
377402

378-
var runConditions = function(input, data, results, resourcePath, resourceName, region) {
403+
var runConditions = function(input, data, results, resourcePath, resourceName, region, cloud, accountId) {
379404
let dataToValidate;
380405
let newPath;
381406
let newData;
@@ -401,12 +426,12 @@ var runConditions = function(input, data, results, resourcePath, resourceName, r
401426
if (dataToValidate.length) {
402427
dataToValidate.forEach(newData => {
403428
condition.validated = runValidation(newData, condition, inputResultsArr);
404-
parsedResource = parse(newData, resourcePath)[0];
429+
parsedResource = parse(newData, resourcePath, region, cloud, accountId, resourceName)[0];
405430
if (typeof parsedResource !== 'string' || parsedResource === 'not set') parsedResource = resourceName;
406431
});
407432
} else {
408433
condition.validated = runValidation([], condition, inputResultsArr);
409-
parsedResource = parse([], resourcePath)[0];
434+
parsedResource = parse([], resourcePath, region, cloud, accountId, resourceName)[0];
410435
if (typeof parsedResource !== 'string' || parsedResource === 'not set') parsedResource = resourceName;
411436
}
412437
// result per resource
@@ -418,13 +443,13 @@ var runConditions = function(input, data, results, resourcePath, resourceName, r
418443
newData.forEach(dataElm =>{
419444
if (newPath) condition.property = JSON.parse(JSON.stringify(newPath));
420445
condition.validated = runValidation(dataElm, condition, inputResultsArr);
421-
parsedResource = parse(dataElm, resourcePath)[0];
446+
parsedResource = parse(dataElm, resourcePath, region, cloud, accountId, resourceName)[0];
422447
if (typeof parsedResource !== 'string' || parsedResource === 'not set') parsedResource = resourceName;
423448
});
424449
} else if (newPath && !newData.length) {
425450
condition.property = JSON.parse(JSON.stringify(newPath));
426451
condition.validated = runValidation(newData, condition, inputResultsArr);
427-
parsedResource = parse(newData, resourcePath)[0];
452+
parsedResource = parse(newData, resourcePath, region, cloud, accountId, resourceName)[0];
428453
if (parsedResource === 'not set' || typeof parsedResource !== 'string') parsedResource = resourceName;
429454
} else if (!newPath) {
430455
// no path returned. means it has fully parsed and got the value.
@@ -435,23 +460,23 @@ var runConditions = function(input, data, results, resourcePath, resourceName, r
435460
}
436461
condition.validated = runValidation(newData, condition, inputResultsArr);
437462
condition.property = JSON.parse(JSON.stringify(newPath));
438-
parsedResource = parse(newData, resourcePath)[0];
463+
parsedResource = parse(newData, resourcePath, region, cloud, accountId, resourceName)[0];
439464
if (parsedResource === 'not set' || typeof parsedResource !== 'string') parsedResource = resourceName;
440465
}
441466
}
442467
} else {
443468
dataToValidate = parse(data, condition.property);
444469
if (dataToValidate.length === 1) {
445470
validated = runValidation(data, condition, inputResultsArr);
446-
parsedResource = parse(data, resourcePath)[0];
471+
parsedResource = parse(data, resourcePath, region, cloud, accountId, resourceName)[0];
447472
if (typeof parsedResource !== 'string' || parsedResource === 'not set') parsedResource = resourceName;
448473
} else {
449474
newPath = dataToValidate[1];
450475
newData = dataToValidate[0];
451476
condition.property = newPath;
452477
newData.forEach(element =>{
453478
condition.validated = runValidation(element, condition, inputResultsArr);
454-
parsedResource = parse(data, resourcePath)[0];
479+
parsedResource = parse(data, resourcePath, region, cloud, accountId, resourceName)[0];
455480
if (typeof parsedResource !== 'string' || parsedResource === 'not set') parsedResource = null;
456481

457482
results.push({
@@ -468,11 +493,10 @@ var runConditions = function(input, data, results, resourcePath, resourceName, r
468493
compositeResult(inputResultsArr, parsedResource, region, results, logical);
469494
};
470495

471-
var asl = function(source, input, resourceMap, callback) {
496+
var asl = function(source, input, resourceMap, cloud, accountId, callback) {
472497
if (!source || !input) return callback('No source or input provided');
473498
if (!input.apis || !input.apis[0]) return callback('No APIs provided for input');
474499
if (!input.conditions || !input.conditions.length) return callback('No conditions provided for input');
475-
476500
let service = input.conditions[0].service;
477501
var subService = (input.conditions[0].subservice) ? input.conditions[0].subservice : null;
478502
let api = input.conditions[0].api;
@@ -502,8 +526,8 @@ var asl = function(source, input, resourceMap, callback) {
502526
});
503527
} else if (regionVal.data && regionVal.data.length) {
504528
regionVal.data.forEach(function(regionData) {
505-
var resourceName = parse(regionData, resourcePath)[0];
506-
runConditions(input, regionData, results, resourcePath, resourceName, region);
529+
var resourceName = parse(regionData, resourcePath, region, cloud, accountId)[0];
530+
runConditions(input, regionData, results, resourcePath, resourceName, region, cloud, accountId);
507531
});
508532
} else if (regionVal.data && Object.keys(regionVal.data).length) {
509533
runConditions(input, regionVal.data, results, resourcePath, '', region);
@@ -527,11 +551,12 @@ var asl = function(source, input, resourceMap, callback) {
527551
} else {
528552
if (resourceObj.data && resourceObj.data.length){
529553
resourceObj.data.forEach(function(regionData) {
530-
var resourceName = parse(regionData, resourcePath)[0];
531-
runConditions(input, regionData, results, resourcePath, resourceName, region);
554+
var resourceName = parse(regionData, resourcePath, region, cloud, accountId)[0];
555+
runConditions(input, regionData, results, resourcePath, resourceName, region, cloud, accountId);
532556
});
533557
} else {
534-
runConditions(input, resourceObj.data, results, resourcePath, resourceName, region);
558+
559+
runConditions(input, resourceObj.data, results, resourcePath, resourceName, region, cloud, accountId);
535560
}
536561
}
537562
}

helpers/aws/api.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ var calls = {
634634
paginate: 'NextToken',
635635
},
636636
listModelCustomizationJobs:{
637-
property: 'modelCustomizationJobSummaries"',
637+
property: 'modelCustomizationJobSummaries',
638638
paginate: 'NextToken',
639639
},
640640
getModelInvocationLoggingConfiguration: {

0 commit comments

Comments
 (0)