Name
sn_itom_pattern.CloudVendorWhiteList
Description
No description available
Script
var CloudVendorWhiteList = Class.create();
/**
* Queries the "Cloud Inventory Resource Whitelist" table.
* Creates table with the Resource Types based on the Vendor
* @param vendor : the Cloud Vendor acronym
* @returns table of resource types
*/
CloudVendorWhiteList.prototype = {
initialize: function() {},
addResourceTypes: function(vendor, resource_type) {
var gr = new GlideRecord('sa_cloud_inventory_resource_whitelist');
gr.initialize();
gr.setValue('cloud_vendor', vendor);
gr.setValue('resource_type', resource_type);
gr.setWorkflow(false);
gr.insert();
},
getResourceTypes: function(vendor) {
var rt_table = new Packages.java.util.ArrayList();
gs.debug("CloudVendorWhiteList script include: Building Resource Types table for vendor - " + vendor);
var tsGr = new GlideRecord('sa_cloud_inventory_resource_whitelist');
tsGr.addActiveQuery();
tsGr.addQuery("cloud_vendor", vendor);
tsGr.query();
if (!tsGr.hasNext()) {
gs.debug('CloudVendorWhiteList script include: Incorrect vendor parsed from the Cloud Service Account or no such Vendor exist in "Cloud Inventory Resource Whitelist" table.');
}
gs.debug("CloudVendorWhiteList script include: The Cloud Inventory Resource Whitelist table query is: cloud_vendor=" + vendor);
while (tsGr.next()) {
var table_row = new Packages.java.util.HashMap();
table_row.put("vendor", vendor.toLowerCase());
// the table values are made to lower case on purpose to match possible input values and pattern operations.
table_row.put("resource_type", tsGr.getValue('resource_type'));
rt_table.add(table_row);
}
gs.debug("CloudVendorWhiteList script include :rt_table=" + rt_table);
return rt_table;
},
getResourceTagFilter: function(resource_type) {
var filter = '';
switch (resource_type) {
case "AWS::EC2::Host":
filter = "ec2:host";
break;
case "AWS::CloudTrail::Trail":
filter = "cloudtrail:trail";
break;
case "AWS::IAM::Role":
filter = "iam:role";
break;
case "AWS::RDS::DBSubnetGroup":
filter = "rds:subgrp";
break;
case "AWS::RDS::DBSecurityGroup":
filter = "rds:secgrp";
break;
case "AWS::RDS::DBSnapshot":
filter = "rds:snapshot";
break;
case "AWS::RDS::EventSubscription":
filter = "rds:es";
break;
case "AWS::SSM::ManagedInstanceInventory":
filter = "ssm:managed-instance-inventory";
break;
case "AWS::Redshift::Cluster":
filter = "redshift:cluster";
break;
case "AWS::Redshift::ClusterSnapshot":
filter = "redshift:snapshot";
break;
case "AWS::Redshift::ClusterParameterGroup":
filter = "redshift:parametergroup";
break;
case "AWS::Redshift::ClusterSecurityGroup":
filter = "redshift:securitygroup";
break;
case "AWS::Redshift::ClusterSubnetGroup":
filter = "redshift:subnetgroup";
break;
case "AWS::Redshift::EventSubscription":
filter = "redshift:es";
break;
case "AWS::CloudWatch::Alarm":
filter = "cloudwatch:alarm";
break;
case "AWS::CloudFormation::Stack":
filter = "cloudformation:stack";
break;
case "AWS::CodeBuild::Project":
filter = "codebuild:project";
break;
case "AWS::CloudFront::Distribution":
filter = "cloudfront:distribution";
break;
case "AWS::CloudFront::StreamingDistribution":
filter = "cloudfront:streaming-distribution";
break;
case "AWS::ElasticBeanstalk::Application":
filter = "elasticbeanstalk:application";
break;
case "AWS::ElasticBeanstalk::ApplicationVersion":
filter = "elasticbeanstalk:applicationversion";
break;
default:
filter = '';
break;
}
return filter;
},
type: 'CloudVendorWhiteList'
};
Sys ID
86c11d41db9bb70037b9ff041d9619d0