Name

global.SLPServiceRegistryQuery

Description

Maps Shazzam! SLP query results to Port Probes.

Script

// Discovery
/***********************************************************************************************************************
* Discovery - Service Registry Query for SLP
* Maps Shazzam! SLP query results to Port Probes.
* @author Roy Laurie <roy.laurie@service-now.com>
**********************************************************************************************************************/
var SLPServiceRegistryQuery = Class.create();

SLPServiceRegistryQuery.TABLE = 'service_reg_query_slp';
SLPServiceRegistryQuery.SLP_QUERY = 'SLPQuery';
SLPServiceRegistryQuery.SERVICE_TYPE_TABLE = 'service_reg_query_slp_service_type';
SLPServiceRegistryQuery.SERVICE_TYPE_FIELD_SLP_QUERY = 'slp_query';
  		
SLPServiceRegistryQuery.prototype = Object.extend(new ServiceRegistryQuery(), {
  /**
   * @param GlideRecord|string source The record or id
   */
  initialize: function(source) {
      var record;
      
      if(source instanceof ServiceRegQueryCacheEntry)
          record = source;
      else if(ServiceRegistryQuery.USE_CACHE && typeof source == "string")
          record = ServiceRegistryQuery.ENTRY_CACHE.getEntry(source);
          
      record = record || this._getRecord(source, SLPServiceRegistryQuery.TABLE);
      
      if (!record)
          throw new IllegalArgumentException('Invalid SLP Service Registry Query source.');

      ServiceRegistryQuery.prototype.initialize.call(this, record);
      this._serviceTypes = this._queryServiceTypes();
  },

  /**
   * Creates a scalar map for port probes to use in XML output to Shazzam!.
   * @return Object
   * @override
   */
  toPortProbeMap: function() {
      var map = ServiceRegistryQuery.prototype.toPortProbeMap.call(this);
      map.serviceType = this._serviceTypes;
      return map;
  },

  /**
  * @return string
  * @override
  */
  getShazzamQuerierClassname: function() {
      return SLPServiceRegistryQuery.SLP_QUERY;
  },

  _queryServiceTypes: function() {
      var related = new GlideRecord(SLPServiceRegistryQuery.SERVICE_TYPE_TABLE)
      related.addQuery(SLPServiceRegistryQuery.SERVICE_TYPE_FIELD_SLP_QUERY, this._sysID)
      related.query();
  	
      var types = [];
      while (related.next())
          types.push(related.service_type + "");

      return types;
  },
  
  type: 'SLPServiceRegistryQuery'
});

Sys ID

e956530037102000627d8c00dfbe5db9

Offical Documentation

Official Docs: