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