Name
sn_itom_pde.CommandValidationProbeLauncher
Description
No description available
Script
var CommandValidationProbeLauncher = Class.create();
CommandValidationProbeLauncher.prototype = {
initialize: function() {
this.midSysId = '';
this.midSelector = new global.CommonMIDServerSelector();
this.credAffinity = new MidFromCredentialAffinity();
},
launchProbe: function(ip, midServer, protocol, class_name, command, runAdvanceCredentialTest, advanceCredTestSysId, advanceCredTestResultSysId, credentialSysId) {
var midName;
if (global.JSUtil.nil(midServer)) {
//Check available Mid Servers in credential affinity
var mid_sys_id = this.credAffinity.getMidsFromCredAffinity(ip,"auto_select_mid");
if(global.JSUtil.notNil(mid_sys_id)){
this.midSysId = mid_sys_id;
midName = this._getMidServerName(mid_sys_id);
}else
midName = this.midSelector.findAgent(this._getIP(ip, protocol), '', 'Discovery');
if(global.JSUtil.nil(this.midSysId)){
if (global.JSUtil.notNil(midName)) {
gs.info('CommandValidationProbeLauncher: midName: ' + midName);
this.midSysId = this._getMidServerSysId(midName);
gs.info('CommandValidationProbeLauncher: midSysId: ' + this.midSysId);
} else {
this.midSysId = null;
}
}
} else {
this.midSysId = midServer;
midName = this._getMidServerName(midServer);
}
gs.info('CommandValidationProbeLauncher: inside launcher where ip is:' + ip);
this._updateRelevantRecords(advanceCredTestResultSysId, ip, protocol, command, this.midSysId, advanceCredTestSysId);
if (global.JSUtil.notNil(midName)) {
var mid = "mid.server." + midName;
gs.info("CommandValidationProbeLauncher: mid server name: " + mid);
var discoveryHostUtils = new global.DiscoveryHostUtils();
var context = {};
context['sys_class_name'] = class_name;
context['os'] = '';
var osfamily = discoveryHostUtils.getOsFamily(context);
var osType = discoveryHostUtils.getOsType(context);
gs.info("CommandValidationProbeLauncher: ACT Probe Input Probe parameters: midserver:" + mid + " osFamily: " + osfamily + " OS type: " + osType);
var payload = this._createProbePayload(ip, protocol, osfamily, osType, class_name, command, runAdvanceCredentialTest, advanceCredTestSysId, advanceCredTestResultSysId, credentialSysId);
gs.info('CommandValidationProbeLauncher: payload for ip:' + ip + ' is: ' + payload);
this._sendProbe(mid, payload, 'CommandValidationProbe', this._getIP(ip, protocol));
}
},
_createProbePayload: function(ip, protocol, osfamily, osType, class_name, command, runAdvanceCredentialTest, advanceCredTestSysId, advanceCredTestResultSysId, credentialSysId) {
var payload1 = new XMLDocument2();
gs.info("CommandValidationProbeLauncher for ip:" + ip + "the params are: " + protocol + " " + osfamily + " " + osType + " " + class_name + " " + command);
payload1.createElement("parameters");
this._addParameter(payload1, 'ip_address', ip);
this._addParameter(payload1, 'protocol', protocol);
this._addParameter(payload1, 'os_family', osfamily);
this._addParameter(payload1, 'os_type', osType);
this._addParameter(payload1, 'class_name', class_name);
this._addParameter(payload1, 'command', command);
this._addParameter(payload1, 'run_adavnce_credential_test', runAdvanceCredentialTest);
this._addParameter(payload1, 'advanceCredTestSysId', advanceCredTestSysId);
this._addParameter(payload1, 'advanceCredTestResultSysId', advanceCredTestResultSysId);
this._addParameter(payload1, 'probe', 'ac28904d778201104cb984e35b5a9938');
this._addParameter(payload1, 'credentialSysId', credentialSysId);
return payload1;
},
_sendProbe: function(mid, payload, jobName, source) {
var gr = new GlideRecord('ecc_queue');
gr.initialize();
gr.setValue('agent', mid);
gr.setValue('name', jobName);
if (payload) {
gs.info("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('source', source);
gr.insert();
},
_addParameter: function(payload, name, value) {
var el = payload.createElement("parameter");
el.setAttribute("name", name);
if (value)
el.setAttribute("value", value);
return el;
},
_getIP: function(ip, protocol) {
var ipAddress;
if (protocol == 'http' && ip.includes(':')) {
ipAddress = ip.split(':');
return ipAddress[0];
}
return ip;
},
_getMidServerName: function(midServer) {
var grEccAgent = new GlideRecord("ecc_agent");
grEccAgent.get(midServer);
return grEccAgent.name;
},
_getMidServerSysId: function(midServerName) {
var grEccAgent = new GlideRecord("ecc_agent");
var id = '';
grEccAgent.addQuery('name', midServerName);
grEccAgent.query();
if (grEccAgent.next())
gs.info('CommandValidationProbeLauncher: midExists');
id = grEccAgent.sys_id;
return id;
},
_updateRelevantRecords: function(advanceCredTestResultSysId, ip, operation_type, command, midSysId, advanceCredTestSysId) {
gs.info('Inside ProbeLauncher insertCredentialTestResultRecord. and sys-id: ' + advanceCredTestResultSysId);
var gr = new GlideRecord('pd_command_validation_results');
gr.get(advanceCredTestResultSysId);
var gra = new GlideRecord('pd_command_validation');
gra.get(advanceCredTestSysId);
var completed = parseInt(gra.getValue('completed')) + 1;
if (global.JSUtil.nil(midSysId)) {
gr.setValue('state', 'done');
gr.setValue("result", 'FAILURE');
gr.setValue("result_details", gs.getMessage('Auto Selection of MID server failed. No Eligible MID was found.'));
gra.setValue('completed', completed);
} else
gr.setValue('state', 'processing');
gr.setValue('mid_server', midSysId);
gr.update();
gra.update();
},
type: 'CommandValidationProbeLauncher'
};
Sys ID
2ecc9e15776201104cb984e35b5a9944