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

Offical Documentation

Official Docs: