Name

sn_itom_pattern.CPGConfigureChangeProcessingUtil

Description

CPG Configure Change Processing Utility

Script

var CPGConfigureChangeProcessingUtil = Class.create();
CPGConfigureChangeProcessingUtil.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

  checkForActiveMid: function() {
      var midServers = this.checkActiveMidServers();
      var response = {};
      response['midServers'] = midServers;
      return JSON.stringify(response);
  },

  checkActiveMidServers: function() {
      var discoveryConfig = new global.CloudDiscoveryScheduleConfig();
      var midList = discoveryConfig.getActiveMidsByProvider('azure');
      var midServers = midList.midsInfo.length;

      if (midServers == 0)
          gs.info('Azure Change Processing- No active mid servers found.');
      return midServers;
  },

  disableAlerts: function() {
      var serviceAccounts = this.disableactiveAlerts();
      var filter = getFilterLink();
      var response = {};
      response['serviceAccounts'] = serviceAccounts;
      response['filter'] = filter;
      return JSON.stringify(response);

      function getFilterLink() {
          return gs.getProperty('glide.servlet.uri') + "syslog_list.do?sysparm_query=sys_created_onONToday@javascript:gs.daysAgoStart(0)@javascript:gs.daysAgoEnd(0)%5EmessageSTARTSWITHAzure%20Changes%20Processing&sysparm_first_row=1&sysparm_view=&sysparm_choice_query_raw=&sysparm_list_header_search=true";
      }
  },

  disableactiveAlerts: function() {
      var alertconfigs = new GlideRecord("sn_cmp_azure_alert_configuration");
      alertconfigs.addEncodedQuery("active=true");
      alertconfigs.query();
      var serviceAccounts = "";
      while (alertconfigs.next()) {
          gs.info("Azure Changes Processing - Disabling alert config " + alertconfigs.subscription.getDisplayValue(), 'Migration_To_Pull_Based');
          if (serviceAccounts) {
              serviceAccounts += ",";
          }
          serviceAccounts += alertconfigs.subscription;
          alertconfigs.active = "false";
          alertconfigs.update();
      }
      return serviceAccounts;
  },

  hasRecords: function() {
      var alertconfigsGr = new GlideRecord('sn_cmp_azure_alert_configuration');
      alertconfigsGr.addEncodedQuery('active=True');
      alertconfigsGr.query();
      var alertConfigsInfo = {};
      if (alertconfigsGr.getRowCount() > 0) {
          alertConfigsInfo.url = activeAlertsFilter();
      }
      var alertConfigs = [];
      while (alertconfigsGr.next()) {
          var alertConfig = {};
          alertConfig.serviceAccount = alertconfigsGr.getDisplayValue('subscription');
          alertConfig.resourceGroup = alertconfigsGr.getDisplayValue('resource_group');
          alertConfigs.push(alertConfig);
      }
      alertConfigsInfo.alertConfigs = alertConfigs;
      return JSON.stringify(alertConfigsInfo);

      function activeAlertsFilter() {
          return gs.getProperty('glide.servlet.uri') + "sn_cmp_azure_alert_configuration_list.do?sysparm_query=active%3Dtrue&sysparm_first_row=1&sysparm_view";
      }
  },

  deprecateModule: function() {
      var globalUtil = new global.UtilScript();
      var azureAlertConfigModule = ['ba57a09807735010a049f1bb4bd30002'];
      var values = {
          'title': 'Azure Alert Configurations (Deprecated)',
          'sys_name': 'Azure Alert Configurations (Deprecated)',
          'hint': 'List of Azure Alert Configurations (Deprecated)'
      };
      if (gs.getProperty('sn_cmp.azure.disable_new_alert_configs')) {
          globalUtil.setValuesFromScopedApp('sys_app_module', azureAlertConfigModule, values);
      }
      return;
  },

  getServiceAccountsWithPullNotEnabled: function() {
      var serviceAccountsGr = new GlideRecord("cmdb_ci_cloud_service_account");
      serviceAccountsGr.addEncodedQuery('datacenter_typeSTARTSWITHcmdb_ci_azure_datacenter^should_pull_events=False^parent_account=NULL');
      serviceAccountsGr.query();
      var serviceAccounts = [];
      while (serviceAccountsGr.next()) {
          var serviceAccount = {};
          serviceAccount['id'] = serviceAccountsGr.sys_id.toString();
          serviceAccount['name'] = serviceAccountsGr.name.toString();
          serviceAccounts.push(serviceAccount);
      }
      return JSON.stringify(serviceAccounts);
  },

  getServiceAccountsWithPullEnabled: function() {
      var serviceAccountsGr = new GlideRecord("cmdb_ci_cloud_service_account");
      serviceAccountsGr.addEncodedQuery('datacenter_typeSTARTSWITHcmdb_ci_azure_datacenter^should_pull_events=True^parent_account=NULL');
      serviceAccountsGr.query();
      var serviceAccounts = [];
      while (serviceAccountsGr.next()) {
          var serviceAccount = {};
          serviceAccount['id'] = serviceAccountsGr.sys_id.toString();
          serviceAccount['name'] = serviceAccountsGr.name.toString();
          serviceAccounts.push(serviceAccount);
      }
      return JSON.stringify(serviceAccounts);
  },

  updateShouldPullEvents: function() {
      var serviceAccounts = this.getParameter('sysparm_accounts') + '';
      var should_pull_events = this.getParameter('sysparm_should_pull_events') + '';
      var serviceAccountsList = serviceAccounts.split(",");
      var serviceAccountsGr = new GlideRecord('cmdb_ci_cloud_service_account');
      for (var i = 0; i < serviceAccountsList.length; i++) {
          serviceAccountsGr.get('sys_id', serviceAccountsList[i]);
          if (!serviceAccountsGr) {
              continue;
          }
          //update master account should_pull_events if current account is member account
          if (!serviceAccountsGr.is_master_account && serviceAccountsGr.parent_account) {
              serviceAccountsGr.get(serviceAccountsGr.parent_account);
          }
          if (serviceAccountsGr.should_pull_events != should_pull_events) {
              serviceAccountsGr.setValue('should_pull_events', should_pull_events);
              serviceAccountsGr.update();
              gs.info("Azure Change Processing - Pull events for Service Account " + serviceAccountsGr.name + " is set to " + should_pull_events);
          }

      }
      return;
  },

  type: 'CPGConfigureChangeProcessingUtil'
});

Sys ID

af98bb26876bd1507546ed3e0ebb35fe

Offical Documentation

Official Docs: