Name

global.CheckIpServicesForServiceMapping

Description

Update the MID properties used by service mapping based on cmdb_ip_services table.

Script

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

  updateMidProperty: function() {
  	var ports = [];
  	// Look for all entries related to SSH
  	var portProbeGr = new GlideRecord('discovery_port_probe');
  	portProbeGr.addQuery('name', 'ssh');
  	portProbeGr.query();
  	while (portProbeGr.next()) {
  		var services = portProbeGr.services;
  		var serviceArray = services.split(',');
  		for (var i = 0;i<serviceArray.length; i++) {
  	        var gr =  new GlideRecord("cmdb_ip_service");
  	        gr.get(serviceArray[i]);
  	        if (gr.isValid()) {
  		        ports.push(gr.getValue("port"));
  		    }
  			
  		}
  	}
  	
  	gs.log("number of ports found for ssh is " + ports.length);
  	
  	// if single entry with port 22, only check if there is mid property not associated with specific MID.
  	// if such found, update it.
  	if (ports.length < 1) {
  		gs.log("no ports found for ssh");
          return;
  	}
  	
  	var midProp = new GlideRecord("ecc_agent_property");
  	if (ports.length == 1 && ports[0] == "22") {
  		midProp.addQuery("name", "mid.sa.ssh.port");
  		midProp.addQuery("ecc_agent", null);
  		midProp.query();
  		if (midProp.next()) {
  			gs.log("Updating mid.sa.ssh.port to 22");
  			midProp.setValue("value", "22");
  			midProp.update();
  		} else {
  			gs.log("No MID property mid.sa.ssh.port found. Nothing to update");
  		}
  		return;
  	}
  	
  	
  	// If more than one entry, or the port associated is not 22, create/update the MID property to contain
  	// comma separated list of ports
  	midProp = new GlideRecord("ecc_agent_property");
  	midProp.addQuery("name", "mid.sa.ssh.port");
  	midProp.addQuery("ecc_agent", null);
  	midProp.query();
  	if (midProp.next()) {
  		gs.log("Updating mid.sa.ssh.port");
  		midProp.setValue("value", ports.toString());
  		midProp.update();
  	} else {
  		gs.log("Creating property mid.sa.ssh.port");
  		midProp.initialize();
  		midProp.setValue("name", "mid.sa.ssh.port");
  		midProp.setValue("value", ports.toString());
  		midProp.insert();
  	}
  	
  },
  
  type: 'CheckIpServicesForServiceMapping'
};

Sys ID

ccc0e172c32012003e76741e81d3ae76

Offical Documentation

Official Docs: