Name
sn_itom_pattern.ProbeInvoker
Description
No description available
Script
var ProbeInvoker = Class.create();
ProbeInvoker.prototype = {
initialize: function() {
},
sendProbe : function(accountID,credentialsID,probeName,jobName) {
var midId = this.getMid();
if(!midId)
{
gs.debug("ProbeInvoker: No Mid was found to trigger the GCP-Events-Probe");
return;
}
gs.debug("ProbeInvoker: Invoking probe on Mid "+midId);
var payload = this._createProbePayload(accountID,credentialsID);
this._sendProbe(midId,payload,probeName,jobName,accountID);
},
_createProbePayload : function(accountID,credentialsID){
var payload = new XMLDocument2();
payload.createElement("parameters");
// account context
this._addParameter(payload,'account_id', accountID);
this._addParameter(payload,'discovery_credentials', credentialsID);
// set infra context params
this._addParameter(payload,'used_by_runbook', "true");
this._addParameter(payload,'glide.xmlhelper.trim.enable', "true");
this._addParameter(payload,'probe', "428e6bf8db813300dc92f1910f961978");
this._addParameter(payload,'used_by_discovery', "true");
this._addParameter(payload,'probe_name', "GCP-Events-Probe");
var ts = this._getLatestTimeStampFromDB(accountID);
gs.debug("ProbeInvoker timestamp is " + ts);
this._addParameter(payload,'latest_timestamp', ts);
// GCP API filter
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','gcp_supported_resource_type');
probeParams.query();
if(probeParams.next()) {
this._addParameter(payload, probeParams.name, probeParams.value);
}else{
gs.error("Could not find the probe parameter gcp_supported_resource_type for probe 428e6bf8db813300dc92f1910f961978");
}
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 428e6bf8db813300dc92f1910f961978");
}
var probeParams2 = this._createGlideQueryForProbTable();
probeParams2.addQuery('name','max_number_pages');
probeParams2.query();
if(probeParams2.next()) {
this._addParameter(payload,probeParams2.name, probeParams2.value);
}
else{
gs.error("Could not find the probe parameter max_number_pages for probe 428e6bf8db813300dc92f1910f961978");
}
},
_createGlideQueryForProbTable : function() {
var probeParams = new GlideRecord('discovery_probe_parameter');
probeParams.addQuery('probe','428e6bf8db813300dc92f1910f961978');
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, "Google", null, "{}");
var midGr = new GlideRecord('ecc_agent');
midGr.get(midID);
gs.debug("Selected MID: " + midGr.name);
return midGr.name;
},
//added function for adding the Domain to the Probe properties
getDomain : function(serviceAccountId) {
var accountGR = new GlideRecord("cmdb_ci_cloud_service_account");
accountGR.addQuery("account_id", serviceAccountId);
accountGR.setLimit(1);
accountGR.query();
if (accountGR.next()) {
var sys_domain = accountGR.getValue("sys_domain");
}
return sys_domain;
},
_sendProbe: function(midId, payload,probeName,jobName,accountID) {
var gr = new GlideRecord('ecc_queue');
gr.initialize();
gr.setValue('agent', 'mid.server.'+midId);
//gr.setValue('source', command); //TODO: new. check that is working
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.setValue('sys_domain', this.getDomain(accountID));
gr.insert();
},
_getLatestTimeStampFromDB : function(accountID) {
var tsHandler = new EventsTimestampHandler();
return tsHandler.getLatestTimeStampForAccount(accountID);
},
type: 'ProbeInvoker'
};
Sys ID
03f1c1e81b1dbf802e1cfccf1d4bcb8f