Name

sn_acc_adapter.AccAdapterUtilsSNC

Description

No description available

Script

var AccAdapterUtilsSNC = Class.create();
AccAdapterUtilsSNC.prototype = {
  PLUGIN_ACC_CORE: "com.agent-now",

  TABLES: {
      SN_AGENT_CI_EXTENDED_INFO: "sn_agent_ci_extended_info",
      SN_AGENT_CHECK_PARAM_DEF: "sn_agent_check_param_def",
      SN_AGENT_CMDB_CI_AGENT: "sn_agent_cmdb_ci_agent",
      CMDB_CI_COMPUTER: "cmdb_ci_computer",
      CMDB_CI: "cmdb_ci"
  },

  initialize: function() {
      this.agentNowHandler = new sn_agent.AgentNowHandler();
  },

  isProviderInstalled: function(ciSysId) {
      var agentGr = new GlideRecord(this.TABLES.SN_AGENT_CMDB_CI_AGENT);
      agentGr.addQuery("agent_extended_info.cmdb_ci", ciSysId);
      agentGr.query();
      return agentGr.hasNext();
  },

  isAgentAvailable: function(ciSysId) {
      return this.agentNowHandler.hasAgent(ciSysId);
  },

  isMidServerUpAndValidated: function(ciSysId) {
      var agentGr = new GlideRecord(this.TABLES.SN_AGENT_CMDB_CI_AGENT);
      agentGr.addQuery("agent_extended_info.cmdb_ci", ciSysId);
      agentGr.addQuery("agent_extended_info.mid.status", "Up");
      agentGr.addQuery("agent_extended_info.mid.validated", "true");
      agentGr.query();
      return agentGr.hasNext();
  },

  isDataCollectionRunning: function(ciSysId) {
      var agentGr = new GlideRecord(this.TABLES.SN_AGENT_CI_EXTENDED_INFO);
      agentGr.addQuery("cmdb_ci", ciSysId);
      agentGr.addQuery("data_collection", "0");
      agentGr.setLimit(1);
      agentGr.query();
      return agentGr.hasNext();
  },

  runCheckDefOnCI: function(ciSysId, checkDefSysId, command, skipPreRequestChecks) {
      // skip the checks if they are done at UI layer
      if (!skipPreRequestChecks) {
          var hasAgent = this.isAgentAvailable(ciSysId);
          var errorMsg;
          if (hasAgent === false) {
              errorMsg = "Provided CI does not have any agent installed.";
              gs.error(errorMsg);
              throw new Error(errorMsg);
          }

          var isDataCollectionOn = this.isDataCollectionRunning(ciSysId);
          if (isDataCollectionOn === false) {
              errorMsg = "Data collection is paused. Contact your admin.";
              gs.error(errorMsg);
              throw new Error(errorMsg);
          }
      }

      var checkJson = this.buildCheckJson(checkDefSysId, command);

      var ci = new GlideRecord(this.TABLES.CMDB_CI_COMPUTER);
      ci.addQuery("sys_id", ciSysId);
      ci.query();

      var reqId = this.agentNowHandler.runCheckForCis(ci, checkJson, '1');
      return reqId;
  },

  buildCheckJson: function(checkDefSysId, command) {
      var checkJson = {
          "checkDefId": checkDefSysId,
          "params": {}
      };
      var paramsGr = new GlideRecord(this.TABLES.SN_AGENT_CHECK_PARAM_DEF);
      paramsGr.addQuery("check_def", checkDefSysId);
      paramsGr.query();
      if (paramsGr.next()) {
          checkJson.params[paramsGr.name] = command;
      }
      return checkJson;
  },
  
  getCommandWithArgValues: function(cmd, argMap) {
      var args = Object.keys(argMap);
      for(var i=0; i<args.length; i++) {
          var arg = args[i];
          var token = "{{" + arg + "}}";
          var tokenRegex = new RegExp(token, "g");
          cmd = cmd.replace(tokenRegex, argMap[arg]);
      }
      return cmd;
  },

  type: 'AccAdapterUtilsSNC'
};

Sys ID

4ee00f4a53c41110ae50ddeeff7b1278

Offical Documentation

Official Docs: