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