Name

sn_agent.AgentSilentModeUtils

Description

No description available

Script

var AgentSilentModeUtils = Class.create();
AgentSilentModeUtils.prototype = {

  initialize: function() {},

  silentAgents: function(agentSysIds) {

      this.handleAgents(agentSysIds, "1");
  },

  unsilentAgents: function(agentSysIds) {

      this.handleAgents(agentSysIds, "0");

      if (GlidePluginManager().isActive('com.glideapp.itom.snac')) {
          this.closeAlertToAgentInSilent(agentSysIds);
      }
  },

  //If the agent switched to silent mode due to high CPU usage, there is an alert that opens to notify it, so this alert should be closed.
  closeAlertToAgentInSilent: function(agentIds) {
      var msgKeyList = agentIds.split(",").join(",agent_protection_");
      var alertGr = new GlideRecord("em_alert");
      alertGr.addQuery("message_key", "IN", "agent_protection_" + msgKeyList);
      alertGr.addQuery("state", "IN", "Open,Reopen");
      alertGr.setValue("state", "Closed");
      alertGr.updateMultiple();
  },

  handleAgentsByAgentIds: function(agentIds, silentMode) {
      return this.handleAgents(undefined, silentMode, agentIds);
  },

  handleAgents: function(agentSysIds, silentMode, agentIds) {
      var agentsDataCollectionOn = [];
      var agentsDataCollectionOff = [];
      var gr = new GlideRecord('sn_agent_cmdb_ci_agent');
      if (agentIds)
          gr.addQuery('agent_id', 'IN', agentIds);
      else
          gr.addQuery('sys_id', 'IN', agentSysIds);
      gr.query();
      while (gr.next()) {
          var agent = gr.getElement("agent_extended_info").getRefRecord();
          var currSilentMode = agent.getValue("data_collection");
          if (currSilentMode != silentMode) { //update only if the agent is not in the current status
              if (silentMode == '0')
                  agentsDataCollectionOn.push(agent.getValue('agent_id'));
              else if (silentMode == '1' || silentMode == '2')
                  agentsDataCollectionOff.push(agent.getValue('agent_id'));
              agent.setValue("data_collection", silentMode);
              agent.update();
          }
      }
      // Send events
      this.chunkAndSendEvents(agentsDataCollectionOn, 'on');
      this.chunkAndSendEvents(agentsDataCollectionOff, 'off');
      //recalc policy clients
      (new PolicyClientsGeneratorNG()).getAndUpdateReCalcFilterFlag(true);
  },

  chunkAndSendEvents: function(arr, dataCollectionState) {
      if (!arr || arr.length < 1)
          return;

      var MAX_CHARS = 4000; // max per Parm1
      var agentIdsLength = 16;
      var maxArrItems = MAX_CHARS / (agentIdsLength + 1); // account for comma character.

      var chunks = MonitoringUtils.chunkArray(arr, maxArrItems);
      for (i = 0; i < chunks.length; i++) {
          gs.eventQueue('sn_agent.data_collection_' + dataCollectionState, undefined, chunks[i].join(','));
      }
  },

  type: 'AgentSilentModeUtils'
};

Sys ID

51e3da08c7c02010fd0e975c14c260a5

Offical Documentation

Official Docs: