Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Name: Process Discovery Log Filters
- Table: Queue [ecc_queue]
- When: after
- Insert: true
- Condition: current.queue == 'input' && current.agent.startsWith('mid.server.') && current.topic != 'HeartbeatProbe' && current.topic != 'queue.processing' && current.topic != 'SystemCommand'
- */
- processFilters();
- function processFilters() {
- var filters = new GlideRecord("u_discovery_log_filters");
- filters.addQuery('u_active', true);
- filters.query();
- while(filters.next()) {
- //check for a match in ECC payload, ECC name, and ECC topic
- if(current.payload.indexOf(filters.u_message_match_string) > -1 &&
- current.name.indexOf(filters.u_ecc_name) > -1 &&
- current.topic == filters.u_ecc_topic) {
- //Check discovery errors for duplicates that have been set to ignore
- var ignoreCheck = new GlideRecord("u_discovery_errors");
- ignoreCheck.addQuery('name', filters.name);
- ignoreCheck.addQuery('u_ecc_name', filters.u_ecc_name);
- ignoreCheck.addQuery('u_ecc_topic', filters.u_ecc_topic);
- ignoreCheck.addQuery('u_device', current.source);
- ignoreCheck.addQuery('u_state', '!=',6);
- ignoreCheck.query();
- if(!ignoreCheck.next()){
- //gs.log('Filter Log:' + filters.u_message_match_string, 'eric');
- var ci = findCMDBItem();//Try to match IP to a CI
- if(!ci.nil() && !filters.u_conditions.nil()){
- //gs.log('CI:' + ci, 'eric');
- //Query for CI and match conditions
- var gr = new GlideRecord('cmdb_ci_server');
- gr.addQuery('sys_id', ci);
- gr.addQuery(filters.u_conditions);
- gr.query();
- if(gr.next()) {
- //gs.log('CI Match:' + gr.name, 'eric');
- addDiscoveryError(current, filters, ci);
- }
- }else{
- addDiscoveryError(current, filters, ci);
- }
- }
- }
- }
- }
- function addDiscoveryError(queue_item, filter, ci) {
- var errorLog = new GlideRecord("u_discovery_errors");
- errorLog.initialize();
- errorLog.status = queue_item.agent_correlator;
- errorLog.level = filter.u_level;
- errorLog.source = queue_item.name;
- errorLog.sensor = queue_item.sys_id;
- errorLog.cmdb_ci = ci;
- errorLog.device = queue_item.source;
- errorLog.message = filter.u_error_message;
- errorLog.device_history.setDisplayName(queue_item.source);
- errorLog.u_device = queue_item.source;
- errorLog.u_name = filter.u_name;
- errorLog.insert();
- }
- function findCMDBItem() {
- var ip = Packages.com.snc.commons.networks.IPAddressV4.getIPAddressV4Instance(current.source);
- var ci = Packages.com.snc.discovery.DiscoveryUtils.getCIFromIP(ip);
- var url = current;
- if (ci)
- return ci;
- ci = findByHostname(current.source);
- if (ci)
- return ci;
- }
- /*
- * In Help the helpdesk, the source name is always the name of the computer.
- */
- function findByHostname(source) {
- var gr = new GlideRecord("cmdb_ci_computer");
- gr.addQuery("name", source);
- gr.query();
- if (gr.next())
- return gr.sys_id + '';
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment