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

Offical Documentation

Official Docs: