Name

global.CimProbeResult

Description

Processes CIM Probe results.

Script

// Discovery
/**
* Processes CIM Probe results.
* @author roy.laurie
*/
var CimProbeResult = Class.create();

CimProbeResult.prototype = {
  initialize: function(probeResult) {
  	var gr;

      if (gs.nil(probeResult) || gs.nil(probeResult.cimqueryset))
          return;

      var cimQueries = g_array_util.ensureArray(probeResult.cimqueryset.cimquery);
      for (var iq = 0, nq = cimQueries.length; iq < nq; ++iq) {

  		// Find the name of the query using the query string
  		gr = new GlideRecord('discovery_probes_cim_query');
  		gr.addQuery('query', '' + cimQueries[iq].probeQuery);
  		gr.query();
  		if (gr.next())
  			cimQueries[iq].name = gr.name;

          if (gs.nil(cimQueries[iq].result)) {
              cimQueries[iq].result = { instance: [], schema: [] };
          } else {
              cimQueries[iq].result.instance = g_array_util.ensureArray(cimQueries[iq].result.instance);
              cimQueries[iq].result.schema = g_array_util.ensureArray(cimQueries[iq].result.schema);
  			
  			// ensure arrays within each cim object
  			for (var o = 0; o < cimQueries[iq].result.instance.length; ++o) {
  				cimQueries[iq].result.instance[o]._associations = g_array_util.ensureArray(cimQueries[iq].result.instance[o]._association);
  				delete cimQueries[iq].result.instance[o]._association;
  			}
          }
      }
  	
      this._queries = cimQueries;
  },
  
  getQueries: function() {
      return this._queries;
  },
 
  /**
   * @param { name: query,.. } namedQueries
   */
  getNamedInstances: function(namedQueries) {
  	var instances = {};
  	for (var name in namedQueries) {
  		var query = this._findQuery(namedQueries[name], this._queries);
  		if (!query)
  			throw new IllegalArgumentException('CIM query `' + name + '` not found in CIM Probe results.');
  		
  		instances[name] = query.result.instance;			
  	}
  	
  	return instances;
  },

  /**
   * @param string query
   * @param XMLObj(//cimqueryset/cimquery[]) classificationCimQuery
   * @return null|XMLObj(//cimqueryset/cimquery)
   */
  _findQuery: function(queryStr, queries) {
  	for (var i = 0, n = queries.length; i < n; ++i) {
  		if (queries[i].probeQuery == queryStr)
  			return queries[i];
  	}
  	
  	return null;
  },	

  type: 'CimProbeResult'
};

Sys ID

f17d995337c1200032ff8c00dfbe5dce

Offical Documentation

Official Docs: