Name

global.DiscoverySensorTest

Description

No description available

Script

var DiscoverySensorTest = Class.create();

DiscoverySensorTest.prototype = {
  initialize: function(payload) {
  	this._setup(payload);
  	this.fDebug = false;
  },

  getResults: function() {
  	this.debug("The following field and value pairs are what the sensor will update");
  	var statements = [];
  	for (var name in current)
  		statements.push(name + " ==> " + current[name]);
  	
  	return statements.join("\n");
  },
  
  getCurrent: function() {
  	return current;
  },
  
  setDebug: function(flag) {
  	fDebug = flag;	
  },
  
  _setup: function(payload) {
  	gs.include("DiscoveryIncludes");
  	
  	// Set up up ECC Queue Record
  	var eccQGr = new GlideRecord("ecc_queue");
  	eccQGr.topic = "SensorTest";
  	eccQGr.name = "SensorTest";
  	eccQGr.source = "127.0.0.1";
  	
  	// create a daily discovery_status only if sensor debug property is set
  	if (gs.getProperty("glide.discovery.sensors.debugging", "false") == "true")
  		eccQGr.agent_correlator = this._getStatusID();
  	
  	var payloadXML = this._buildPayload(payload);
  	eccQGr.payload = payloadXML;
  	
  	var sensorECCQID = eccQGr.insert();
  	this._debug("The ECC queue input record created is " + sensorECCQID);
  	
  	// Expose necessary globals
  	// See Probe.java::expose() for the (partial?) list of globals exposed to sensors
  	g_probe = SncProbe.createProbeResponse(eccQGr);
  	// Avoid calls to Probe.expose() from JS except for special situations.
  	g_probe.expose();
  	topic = '';
  	g_device = {};
  	g_sensor = {};
  	current = {};
  	g_mockSensor = true;
  	document = new XMLHelper().toObject(payloadXML);		
  },
  
  _buildPayload: function(payload) {
  	if (JSUtil.nil(payload))
  		return "";
  	else if (payload.indexOf('</results>') > 0)
  		return payload;
  	
  	var parameters = {};
  	parameters["agent_correlator"] = this._getStatusID();		

  	var paramStr = '';
  	for (var name in parameters) {
  		value = parameters[name];
  		paramStr += '<parameter name="' + name + '" value="' + value + '"/>'  
  	}
  	
  	if (payload.indexOf('</result>') > 0)
  		return '<?xml version="1.0" encoding="UTF-8"?><results>' +
  			payload +
  			'<parameters>' + paramStr + '</parameters>' +
  			'</results>';
  	
  	return '<?xml version="1.0" encoding="UTF-8"?><results>' +
  			'<result><output>' + payload + '</output></result>' +
  			'<parameters>' +			
  			paramStr +
  			'</parameters>' +
  			'</results>';
  },
  
  /*
  *	We just need to pass in stub discovery status sys_id
  */
  _getStatusID: function() {
  	var gr = new GlideRecord("discovery_status");
  	gr.addQuery('sys_created_onONToday@javascript:gs.daysAgoStart(0)@javascript:gs.daysAgoEnd(0)');
  	gr.addQuery('description', 'Sensor Testing');
  	gr.query();
  	if (gr.next())
  		return gr.sys_id;
  	
  	gr.initialize();
  	gr.description = 'Sensor Testing';
  	gr.state = 'Completed';
  	return gr.insert();
  },
  
  _debug: function(msg) {
  	if (this.fDebug)
  	  gs.log(msg);
  },
  

  type: 'DiscoverySensorTest'
}

Sys ID

71859447ef01110098d5925495c0fb43

Offical Documentation

Official Docs: