Name

sn_itom_pattern.NutanixProbeInvoker

Description

No description available

Script

var NutanixProbeInvoker = Class.create();
NutanixProbeInvoker.prototype = {
  initialize: function() {
  },

  sendProbe : function(clusterName,clusterIp,clusterId,probeName,jobName) {
  	var midId = this.getMid();
  	if(!midId)
  	{
  		gs.debug("NutanixProbeInvoker: No Mid was found to trigger the Nutanix-Events-Probe");
  		return;
  	}
  	gs.debug("NutanixProbeInvoker: Invoking probe on Mid "+midId);
  	var payload = this._createProbePayload(clusterName,clusterIp,clusterId);
  	this._sendProbe(midId,payload,probeName,jobName);
  },

  _createProbePayload : function(clusterName,clusterIp,clusterId) {
  	var payload = new XMLDocument2();
  	payload.createElement("parameters");

  	// cluster context
  	this._addParameter(payload,'cluster_name', clusterName);
  	this._addParameter(payload,'cluster_ip', clusterIp);
  	this._addParameter(payload,'cluster_id', clusterId);

  	// set infra context params
  	this._addParameter(payload,'used_by_runbook', "true");
  	this._addParameter(payload,'glide.xmlhelper.trim.enable', "true");
  	this._addParameter(payload,'probe', "09db10fcdb46b700e7dc7c4daf96191f");
  	this._addParameter(payload,'used_by_discovery', "true");
  	this._addParameter(payload,'probe_name', "Nutanix-Events-Probe");

  	var ts = this._getLatestTimeStampFromDB(clusterId);
  	gs.debug("NutanixProbeInvoker timestamp is " + ts);
  	this._addParameter(payload,'latest_timestamp', ts);
  	this._addAPIFilterParams(payload);

  	return payload;

  },

  /*
   * retrieve the suppported resources from the probe parameters table
   * @private
   */
  _addAPIFilterParams : function(payload) {
  	var probeParams = this._createGlideQueryForProbTable();
  	probeParams.addQuery('name','nutanix_supported_resource_type');
  	probeParams.query();
  	if(probeParams.next()) {
  			this._addParameter(payload, probeParams.name, probeParams.value);
  	}else{
  		gs.error("Could not find the probe parameter nutanix_supported_resource_type for probe 09db10fcdb46b700e7dc7c4daf96191f");
  	}
  	
  	var probeParams1 = this._createGlideQueryForProbTable();
  	probeParams1.addQuery('name','max_events_size');
  	probeParams1.query();
  	if(probeParams1.next()) {
  		this._addParameter(payload,probeParams1.name, probeParams1.value);
  	}
  	else{
  		gs.error("Could not find the probe parameter max_events_size for probe 09db10fcdb46b700e7dc7c4daf96191f");
  	}

  },
  
  _createGlideQueryForProbTable : function() {
  	var probeParams = new GlideRecord('discovery_probe_parameter');
  	probeParams.addQuery('probe','09db10fcdb46b700e7dc7c4daf96191f');
  	return probeParams;
  },

  _addParameter : function(payload, name, value) {
  	var el = payload.createElement("parameter");
  	el.setAttribute("name", name);

  	if (value)
  		el.setAttribute("value", value);

  	return el;
  },

  getMid: function () {
  	var midSelector = new global.CloudMidSelectionApi();
  	var midID = midSelector.selectMid(null, "Nutanix", null, "{}");
  	var midGr = new GlideRecord('ecc_agent');
  	midGr.get(midID);
  	gs.debug("Selected MID: " + midGr.name);
  	return midGr.name;
  },

  _sendProbe: function(midId, payload,probeName,jobName) {
  	var gr = new GlideRecord('ecc_queue');
  	gr.initialize();
  	gr.setValue('agent', 'mid.server.'+midId);
  	
  	gr.setValue('name', jobName);
  	if (payload) {
  		gs.debug("payload is "+payload.toString());
  		gr.setValue('payload', payload.toString());
  	}
  	gr.setValue('topic', 'JavascriptProbe');
  	gr.setValue('queue', 'output');
  	gr.setValue('state', 'ready');
  	gr.setValue('priority', '0');
  	gr.insert();
  },

  _getLatestTimeStampFromDB : function(clusterId) {
  	var eventsTimestampHandler = new EventsTimestampHandler();
  	saHash = eventsTimestampHandler._runGlideQuery(clusterId);
  	var rtrn = -1;
  	if(saHash.next()){
  		rtrn = saHash.hash;
  	}
  	else
  	{
  		var ts = Math.round(((new Date()).getTime() - 5*60*1000)/ 1000);
  		rtrn = ts;
  	}
  	return rtrn;
  },

  type: 'NutanixProbeInvoker'
};

Sys ID

58a22434db86b700e7dc7c4daf961913

Offical Documentation

Official Docs: