Name
global.ProbeHandlerCim
Description
Called for setup of a CIM Probe.
Script
// Discovery
/**
* Called for setup of a CIM Probe.
* @author roy.laurie
*/
gs.include('PrototypeServer');
var ProbeHandlerCim = Class.create();
ProbeHandlerCim.PARAMETER_STATEMENTS = 'queries';
ProbeHandlerCim.PARAMETER_STATEMENT_NAMES = 'statement_names';
ProbeHandlerCim.PARAMETER_NAMESPACE = 'namespace';
ProbeHandlerCim.PARAMETER_INTEROP_NAMESPACES = 'interop_namespaces';
ProbeHandlerCim.PARAMETER_CIDATA = 'cidata';
ProbeHandlerCim.CIDATA_INTEROP_NAMESPACE = 'interopNamespace';
ProbeHandlerCim.STATEMENT_PARAMETER_DELIMITER = ';;';
ProbeHandlerCim.TOPIC = 'CimProbe';
ProbeHandlerCim.prototype = {
initialize: function(probe) {
this.probe = probe;
},
run: function() {
// this.probe.setTopic(ProbeHandlerCim.TOPIC);
// configure all necessary parameters
var params = this.getParameters();
this.setProbeParameters(params);
// override parameters with anything found in discovery_probe_parameters
this.probe.addParameters(this.probe.getId());
},
/**
* Returns a hash map of the parameters added by this probe handler.
*/
getParameters: function() {
var result = {};
result[ProbeHandlerCim.PARAMETER_STATEMENTS] = this.getCimStatements();
result[ProbeHandlerCim.PARAMETER_STATEMENT_NAMES] = this.getCimStatementNames();
var namespace = this.getNamespace();
if (namespace !== null)
result[ProbeHandlerCim.PARAMETER_NAMESPACE] = namespace;
var interopNamespaces = this.getInteropNamespaces();
if (interopNamespaces !== null)
result[ProbeHandlerCim.PARAMETER_INTEROP_NAMESPACES] = interopNamespaces;
return result;
},
setProbeParameters: function(params) {
for (var name in params)
this.probe.addParameter(name, params[name]);
},
/**
* Generate a string containing the CIM fields to fetch
* @return string
* @throws IllegalStateException If no CIM statements available.
*/
getCimStatements: function() {
var existing = this.probe.getParameter(ProbeHandlerCim.PARAMETER_STATEMENTS);
if (!gs.nil(existing))
return existing;
var statements = new CimProbe(this.probe.getId()).getStatements();
var parameter = statements.join(ProbeHandlerCim.STATEMENT_PARAMETER_DELIMITER);
// if (gs.nil(parameter))
// throw new IllegalStateException('No CIM statements specified for CIM probe.');
return parameter;
},
/**
* Generate a string containing the CIM field names to fetch, in the same order as getCimStatements
* @return string
* @throws IllegalStateException If no CIM statements available.
*/
getCimStatementNames: function() {
var existing = this.probe.getParameter(ProbeHandlerCim.PARAMETER_STATEMENT_NAMES);
if (!gs.nil(existing))
return existing;
var statementNames = new CimProbe(this.probe.getId()).getStatementNames();
var parameter = statementNames.join(ProbeHandlerCim.STATEMENT_PARAMETER_DELIMITER);
// if (gs.nil(parameter))
// throw new IllegalStateException('No CIM statement names specified for CIM probe.');
return parameter;
},
/**
* @return string|null
*/
getNamespace: function() {
var namespace = this.probe.getParameter(ProbeHandlerCim.PARAMETER_NAMESPACE);
if (!gs.nil(namespace))
return namespace;
namespace = this.getCiDataInteropNamespace();
return namespace;
},
getCiDataInteropNamespace: function() {
var cidata = new CIData();
cidata.fromXML(this.probe.getParameter(ProbeHandlerCim.PARAMETER_CIDATA));
cidata = cidata.getData();
var namespace = cidata[ProbeHandlerCim.CIDATA_INTEROP_NAMESPACE];
return ( gs.nil(namespace) ? null : namespace );
},
getInteropNamespaces: function() {
var namespaces = this.probe.getParameter(ProbeHandlerCim.PARAMETER_INTEROP_NAMESPACES);
if (gs.nil(namespaces))
namespaces = gs.getProperty('mid.cim.interop.namespaces');
if (gs.nil(namespaces))
return null;
return namespaces;
},
type: 'ProbeHandlerCim'
};
Sys ID
5d2ac49937231000627d8c00dfbe5d4b