use of org.opennms.protocols.wmi.wbem.OnmsWbemObject in project opennms by OpenNMS.
the class WmiCollector method collect.
/**
* {@inheritDoc}
*/
@Override
public CollectionSet collect(final CollectionAgent agent, final Map<String, Object> parameters) {
// Find attributes to collect - check groups in configuration. For each,
// check scheduled nodes to see if that group should be collected
final WmiCollection collection = (WmiCollection) parameters.get(WMI_COLLECTION_KEY);
final WmiAgentConfig agentConfig = (WmiAgentConfig) parameters.get(WMI_AGENT_CONFIG_KEY);
final WmiAgentState agentState = new WmiAgentState(agent.getAddress(), agentConfig, parameters);
// Create a new collection set.
CollectionSetBuilder builder = new CollectionSetBuilder(agent).withStatus(CollectionStatus.FAILED);
if (collection.getWpms().size() < 1) {
LOG.info("No groups to collect.");
return builder.withStatus(CollectionStatus.SUCCEEDED).build();
}
final NodeLevelResource nodeResource = new NodeLevelResource(agent.getNodeId());
// Iterate through the WMI collection groups.
for (final Wpm wpm : collection.getWpms()) {
// A wpm consists of a list of attributes, identified by name
if (agentState.shouldCheckAvailability(wpm.getName(), wpm.getRecheckInterval())) {
if (!isGroupAvailable(agentState, wpm)) {
continue;
}
}
if (agentState.groupIsAvailable(wpm.getName())) {
WmiClient client = null;
// Collect the data
try {
// Tell the agent to connect
agentState.connect(wpm.getWmiNamespace());
// And retrieve the client object for working.
client = (WmiClient) agentState.getWmiClient();
// Retrieve the WbemObjectSet from the class defined on the group.
final OnmsWbemObjectSet wOS = client.performInstanceOf(wpm.getWmiClass());
// If we received a WbemObjectSet result, lets go through it and collect it.
if (wOS != null) {
// Go through each object (class instance) in the object set.
for (int i = 0; i < wOS.count(); i++) {
// Create a new collection resource.
Resource resource = null;
// Fetch our WBEM Object
final OnmsWbemObject obj = wOS.get(i);
// If this is multi-instance, fetch the instance name and store it.
if (wOS.count() > 1) {
// Fetch the value of the key value. e.g. Name.
final OnmsWbemProperty prop = obj.getWmiProperties().getByName(wpm.getKeyvalue());
final Object propVal = prop.getWmiValue();
String instance = null;
if (propVal instanceof String) {
instance = (String) propVal;
} else {
instance = propVal.toString();
}
resource = getWmiResource(agent, wpm.getResourceType(), nodeResource, instance);
} else {
resource = nodeResource;
}
for (final Attrib attrib : wpm.getAttribs()) {
final OnmsWbemProperty prop = obj.getWmiProperties().getByName(attrib.getWmiObject());
final AttributeType type = attrib.getType();
final String stringValue = prop.getWmiValue().toString();
if (type.isNumeric()) {
Double numericValue = Double.NaN;
try {
numericValue = Double.parseDouble(stringValue);
} catch (NumberFormatException e) {
LOG.warn("Value '{}' for attribute named '{}' cannot be converted to a number. Skipping.", prop.getWmiValue(), attrib.getName());
continue;
}
builder.withNumericAttribute(resource, wpm.getName(), attrib.getAlias(), numericValue, type);
} else {
builder.withStringAttribute(resource, wpm.getName(), attrib.getAlias(), stringValue);
}
}
}
}
builder.withStatus(CollectionStatus.SUCCEEDED);
} catch (final WmiException e) {
LOG.info("unable to collect params for wpm '{}'", wpm.getName(), e);
} finally {
if (client != null) {
try {
client.disconnect();
} catch (final WmiException e) {
LOG.warn("An error occurred disconnecting while collecting from WMI.", e);
}
}
}
}
}
return builder.build();
}
use of org.opennms.protocols.wmi.wbem.OnmsWbemObject in project opennms by OpenNMS.
the class TestingNewStructure method main.
/**
* <p>main</p>
*
* @param args an array of {@link java.lang.String} objects.
*/
public static void main(final String[] args) {
try {
// Connect to the WMI server.
final WmiClient wmiClient = new WmiClient("localhost");
wmiClient.connect("CHILDRENSNT", "CE136452", "aj7162007", WmiParams.WMI_DEFAULT_NAMESPACE);
final OnmsWbemObjectSet wos = wmiClient.performExecQuery("Select * From Win32_NTLogEvent");
System.out.println("The number of objects retrieved: " + wos.count());
for (int i = 0; i < wos.count(); i++) {
final OnmsWbemObject obj = wos.get(i);
if (obj == null)
System.out.println("Received null object.");
// System.out.println("+++++ Testing Object PropertySet +++++");
final OnmsWbemPropertySet propSet = obj.getWmiProperties();
// System.out.println("Object has " + propSet.count() + " properties available.");
System.out.println("The service (" + propSet.getByName("EventIdentifier").getWmiValue() + ") is: " + propSet.getByName("Message").getWmiValue());
// for(int b=0; b<propSet.count(); b++) {
// OnmsWbemProperty prop = propSet.get(b);
// System.out.println("Property named: " + prop.getWmiName());
// System.out.println("Property origin: " + prop.getWmiOrigin());
// System.out.println("Property is array: " + prop.getWmiIsArray());
// System.out.println("Property is local: " + prop.getWmiIsLocal());
// System.out.println("Property value: " + prop.getWmiValue());
// System.out.println("Property CIMType: " + OnmsWbemCimTypeEnum.get(prop.getWmiCIMType()).getCimName() );
// }
}
// lets do some logic here....
// OnmsWbemObjectSet wos = wmiClient.performInstanceOf("Win32_Keyboard");
//
// System.out.println("The number of objects retrieved: " + wos.count());
// for(int i=0; i<wos.count(); i++) {
// OnmsWbemObject obj = wos.get(0);
// if(obj == null)
// System.out.println("Received null object.");
//
// System.out.println("+++++ Testing OnmsWbemMethodSet and Mehod +++++");
// OnmsWbemMethodSet methodSet = obj.getWmiMethods();
// System.out.println("object has " + methodSet.getCount() + " methods available.");
// for(int a=0;a<methodSet.getCount(); a++) {
// OnmsWbemMethod method = methodSet.get(a);
// System.out.println("Object method Name: " + method.getWmiName());
// System.out.println("Object method Origin: " + method.getWmiOrigin());
// }
//
// System.out.println("+++++ Testing OnmsWbemObjectPath +++++");
// OnmsWbemObjectPath objPath = obj.getWmiPath();
// System.out.println("Object Path is: " + objPath.getWmiPath());
// System.out.println("Object ParentNamespace is: " + objPath.getWmiParentNamespace());
// System.out.println("Object Namespace is: " + objPath.getWmiNamespace());
// System.out.println("Object Locale is: " + objPath.getWmiLocale());
// System.out.println("Object DisplayName is: " + objPath.getWmiDisplayName());
// System.out.println("Object Class is: " + objPath.getWmiClass());
// System.out.println("Object Authority is: " + objPath.getWmiAuthority());
// System.out.println("Object RelPath is: " + objPath.getWmiRelPath());
// System.out.println("Object Server is: " + objPath.getWmiServer());
// System.out.println("Object IsClass is: " + objPath.getWmiIsClass());
// System.out.println("Object IsSingleton is: " + objPath.getWmiIsSingleton());
//
// System.out.println("+++++ Testing Getting Object Text +++++");
// System.out.println(obj.getWmiObjectText());
//
// System.out.println("+++++ Testing Object PropertySet +++++");
// OnmsWbemPropertySet propSet = obj.getWmiProperties();
// System.out.println("Object has " + propSet.count() + " properties available.");
// for(int b=0; b<propSet.count(); b++) {
// OnmsWbemProperty prop = propSet.get(b);
// System.out.println("Property named: " + prop.getWmiName());
// System.out.println("Property origin: " + prop.getWmiOrigin());
// System.out.println("Property is array: " + prop.getWmiIsArray());
// System.out.println("Property is local: " + prop.getWmiIsLocal());
// System.out.println("Property value: " + prop.getWmiValue());
// System.out.println("Property CIMType: " + OnmsWbemCimTypeEnum.get(prop.getWmiCIMType()).getCimName() );
//
//
// }
//
// }
// Disconenct from the WMI server.
wmiClient.disconnect();
} catch (final WmiException e) {
System.out.println("Caught exception: " + e.getMessage() + "\n");
e.printStackTrace();
}
}
use of org.opennms.protocols.wmi.wbem.OnmsWbemObject in project opennms by OpenNMS.
the class OnmsWbemObjectSetImpl method get.
/**
* {@inheritDoc}
*/
@Override
public OnmsWbemObject get(final Integer idx) throws WmiException {
try {
final IJIComObject enumComObject = wbemObjectSet.get("_NewEnum").getObjectAsComObject();
final IJIEnumVariant enumVariant = (IJIEnumVariant) JIObjectFactory.narrowObject(enumComObject.queryInterface(IJIEnumVariant.IID));
OnmsWbemObject wbemObj = null;
IJIDispatch wbemObject_dispatch = null;
for (int i = 0; i < (idx + 1); i++) {
final Object[] values = enumVariant.next(1);
final JIArray array = (JIArray) values[0];
final Object[] arrayObj = (Object[]) array.getArrayInstance();
for (int j = 0; j < arrayObj.length; j++) {
wbemObject_dispatch = (IJIDispatch) JIObjectFactory.narrowObject(((JIVariant) arrayObj[j]).getObjectAsComObject());
}
}
wbemObj = new OnmsWbemObjectImpl(wbemObject_dispatch);
return wbemObj;
} catch (final JIException e) {
throw new WmiException("Failed to enumerate WbemObject variant: " + e.getMessage(), e);
}
}
Aggregations