Name

sn_agent.AgentDiscoverySharedUtils

Description

No description available

Script

var AgentDiscoverySharedUtils = Class.create();
AgentDiscoverySharedUtils.prototype = {
  initialize: function() {},

  runDiscoveryCheckForAgentPerMid: function(policyPerMid) {
      var checkObj = AgentDiscoverySharedUtils.getDiscoveryCheckToRun();

      if (!checkObj) {
          gs.error("ACC-F: Could not find any discovery to run against new agents: agentsInfo=" + JSON.stringify(agentsInfo));
          return;
      }

      var agentsRunningDiscoveryIds = [];
      for (var mid in policyPerMid) {
          var agentsForSpecificMid = Object.keys(policyPerMid[mid]["clients_cis"]);
          for (var i = 0; i < agentsForSpecificMid.length; i++)
              agentsRunningDiscoveryIds.push(agentsForSpecificMid[i]);
      }

      AgentDiscoverySharedUtils.setAgentsToHostDataCollectingStatus(agentsRunningDiscoveryIds);
      //use agent now api to run discovery request 
      var discoHandler = new AgentNowHandler();
      discoHandler.runCheckForAgentPerMid({
              "checkDefId": checkObj.checkSysId
          },
          policyPerMid, 2, checkObj.timeout
      );
  },

  type: 'AgentDiscoverySharedUtils'
};

AgentDiscoverySharedUtils.getDiscoveryCheckToRun = function() {
  var discoCheckTypesSysIds = [];
  var grDiscoCheckTypes = new GlideRecord('sn_agent_disco_check_type');
  grDiscoCheckTypes.query();

  while (grDiscoCheckTypes.next()) {
      discoCheckTypesSysIds.push(grDiscoCheckTypes.getValue('sys_id'));
  }

  var grChecks = new GlideRecord('sn_agent_check_def');
  grChecks.addQuery('check_script_type', discoCheckTypesSysIds);
  grChecks.addActiveQuery();
  grChecks.addQuery('order', '>=', 0);
  grChecks.orderBy('order');
  grChecks.setLimit(1);
  grChecks.query();

  if (!grChecks.next())
      return null;

  var timeoutVar = "600"; // default
  try {
      timeoutVar = grChecks.getValue('timeout');
  } catch (e) {}

  return {
      checkSysId: grChecks.getValue('sys_id'),
      timeout: timeoutVar
  };
};

AgentDiscoverySharedUtils.setAgentsHostDataStatus = function(agentsIds, hostDataStatus) {
  if (!agentsIds || (agentsIds instanceof Array && agentsIds.length < 1) || (agentsIds instanceof String && agentsIds.startsWith("ASI_")))
      return;

  // Update all agents that are running Discovery
  var agentGr = new GlideRecord('sn_agent_ci_extended_info');
  agentGr.addQuery('agent_id', agentsIds);
  agentGr.setValue('host_data', hostDataStatus);
  if (hostDataStatus == '0') // Collected
      agentGr.setValue('host_data_last_collected', new GlideDateTime());
  agentGr.updateMultiple();
};

AgentDiscoverySharedUtils.setAgentsToHostDataCollectedStatus = function(agentsIds) {
  AgentDiscoverySharedUtils.setAgentsHostDataStatus(agentsIds, '0'); // Update host_data to collected
};

AgentDiscoverySharedUtils.setAgentsToHostDataCollectingStatus = function(agentsIds) {
  AgentDiscoverySharedUtils.setAgentsHostDataStatus(agentsIds, '1'); // Update host_data to Collecting...
};

AgentDiscoverySharedUtils.setAgentsToHostDataCollectionFailedStatus = function(agentsIds) {
  AgentDiscoverySharedUtils.setAgentsHostDataStatus(agentsIds, '2'); // Update host_data to Collection Failed
};

AgentDiscoverySharedUtils.setAgentsToHostDataCollectionDisabledStatus = function(agentsIds) {
  AgentDiscoverySharedUtils.setAgentsHostDataStatus(agentsIds, '3'); // Update host_data to Collection Disabled
};

AgentDiscoverySharedUtils.isDiscoveryCheckType = function(checkTypeSysId) {
  var grdiscoCheckType = new GlideRecord('sn_agent_disco_check_type');
  return grdiscoCheckType.get('sys_id', checkTypeSysId);
};

// returns 4 to prefer IPv4 and 6 to prefer IPv6
AgentDiscoverySharedUtils.getPreferredIPVersion = function() {
  return gs.getProperty('sn_agent.ci_prefers_ip_version', 4) == 6 ? 6 : 4;
};

Sys ID

75335a745399e0108ec4ddeeff7b1204

Offical Documentation

Official Docs: