Name

sn_itom_pattern.CloudRetryMetricsHandler

Description

No description available

Script

var CloudRetryMetricsHandler = {
  
  fetchRetryMetrics: function () {
  	var selectedMids = this.getMidServers();
  	selectedMids.forEach(function (midName) {
  		var eccQueueGr = new GlideRecord('ecc_queue');
  		eccQueueGr.initialize();
  		eccQueueGr.agent = 'mid.server.' + midName;
  		eccQueueGr.name = 'GetCloudRequestStatsProbe';
  		eccQueueGr.topic = 'JavascriptProbe';
  		eccQueueGr.payload = '<?xml version="1.0" encoding="UTF-8"?><parameters><parameter name="probe_name" value="Get cloud request stats"/><parameter name="probe" value="504adf6977f2c110996857792c5a99b0"/></parameters>';
  		eccQueueGr.queue = 'output';
  		eccQueueGr.insert();
  	});
  },
  
  processRetryMetrics: function (result) {
  	var results;
  	try {
  		results = JSON.parse(result);
  	} catch (ex) { return; }

  	var cloudRequestRetryMetricsGr = new GlideRecord('sn_cloud_discovery_retry_metrics');
  	results.forEach( function(entry) {
  		cloudRequestRetryMetricsGr.initialize();
  		cloudRequestRetryMetricsGr.provider = entry.provider;
  		cloudRequestRetryMetricsGr.url = entry.url;
  		cloudRequestRetryMetricsGr.discovery_status = entry.discoveryStatusSysId;
  		cloudRequestRetryMetricsGr.ecc_queue = entry.eccSysId;
  		cloudRequestRetryMetricsGr.pattern = entry.pattern;
  		cloudRequestRetryMetricsGr.try_count = entry.tryCount;
  		cloudRequestRetryMetricsGr.total_delay = entry.totalDelay;
  		cloudRequestRetryMetricsGr.status = entry.status;
  		cloudRequestRetryMetricsGr.insert();
  	});
  },

  getMidServers: function () {
  	// skipping IBM and OCI as the cloud request calls are routed through Cloud Access Layer and not CloudRequestExecutor
  	var mids = [];
  	var midServerFinder = new global.MIDServerFinder();
  	var cloudDiscoveryRelatedCapabilities = ['ALL', 'Google', 'AWS', 'Azure', 'Cloud Management'];
  	// 1. fetch mid servers that match the capability
  	// 2. add the mid server to the list if it's not part of mids list
  	cloudDiscoveryRelatedCapabilities.forEach(function (capability) {
  		midServerFinder.capabilities = new Array(capability);
  		var midsWithDesiredCapability = midServerFinder.getMIDServers();
  		
  		midsWithDesiredCapability.forEach(function (midName) {
  			if (mids.indexOf(midName) < 0)
  				mids.push(midName);
  		});
  	});
  	return mids;
  }
};

Sys ID

e89448f177e30110996857792c5a9940

Offical Documentation

Official Docs: