Search in sources :

Example 1 with Groups

use of org.opennms.netmgt.config.datacollection.Groups in project opennms by OpenNMS.

the class DefaultDataCollectionConfigDao method translateConfig.

@Override
protected DatacollectionConfig translateConfig(final DatacollectionConfig config) {
    final DataCollectionConfigParser parser = new DataCollectionConfigParser(getConfigDirectory());
    resourceTypes.clear();
    final Map<String, DatacollectionGroup> externalGroupMap = parser.getExternalGroupMap();
    // Create a special collection to hold all resource types, because they should be defined only once.
    final SnmpCollection resourceTypeCollection = new SnmpCollection();
    resourceTypeCollection.setName("__resource_type_collection");
    // Updating Configured Collections
    for (final SnmpCollection collection : config.getSnmpCollections()) {
        parser.parseCollection(collection);
        // Save local resource types
        for (final ResourceType rt : collection.getResourceTypes()) {
            resourceTypeCollection.addResourceType(rt);
            resourceTypes.put(rt.getName(), rt);
        }
        // Remove local resource types
        collection.setResourceTypes(new ArrayList<ResourceType>());
        // Save external Resource Types
        for (IncludeCollection include : collection.getIncludeCollections()) {
            if (include.getDataCollectionGroup() != null) {
                DatacollectionGroup group = externalGroupMap.get(include.getDataCollectionGroup());
                for (final ResourceType rt : group.getResourceTypes()) {
                    resourceTypeCollection.addResourceType(rt);
                    resourceTypes.put(rt.getName(), rt);
                }
            }
        }
    }
    resourceTypeCollection.setGroups(new Groups());
    resourceTypeCollection.setSystems(new Systems());
    config.insertSnmpCollection(resourceTypeCollection);
    dataCollectionGroups.clear();
    dataCollectionGroups.addAll(parser.getExternalGroupMap().keySet());
    validateResourceTypes(config.getSnmpCollections(), resourceTypes.keySet());
    return config;
}
Also used : SnmpCollection(org.opennms.netmgt.config.datacollection.SnmpCollection) Groups(org.opennms.netmgt.config.datacollection.Groups) IncludeCollection(org.opennms.netmgt.config.datacollection.IncludeCollection) ResourceType(org.opennms.netmgt.config.datacollection.ResourceType) DatacollectionGroup(org.opennms.netmgt.config.datacollection.DatacollectionGroup) Systems(org.opennms.netmgt.config.datacollection.Systems)

Example 2 with Groups

use of org.opennms.netmgt.config.datacollection.Groups in project opennms by OpenNMS.

the class DefaultDataCollectionConfigDao method validateResourceTypes.

private void validateResourceTypes(final Collection<SnmpCollection> snmpCollections, final Set<String> allowedResourceTypes) {
    final String configuredString;
    if (allowedResourceTypes.size() == 0) {
        configuredString = "(none)";
    } else {
        configuredString = StringUtils.join(allowedResourceTypes, ", ");
    }
    final String allowableValues = "any positive number, 'ifIndex', or any of the configured resourceTypes: " + configuredString;
    for (final SnmpCollection collection : snmpCollections) {
        final Groups groups = collection.getGroups();
        if (groups != null) {
            for (final Group group : groups.getGroups()) {
                for (final MibObj mibObj : group.getMibObjs()) {
                    final String instance = mibObj.getInstance();
                    if (instance == null)
                        continue;
                    if (MibObject.INSTANCE_IFINDEX.equals(instance))
                        continue;
                    if (allowedResourceTypes.contains(instance))
                        continue;
                    try {
                        // Check to see if the value is a non-negative integer
                        if (Integer.parseInt(instance.trim()) >= 0) {
                            continue;
                        }
                    } catch (NumberFormatException e) {
                    }
                    // XXX this should be a better exception
                    throw new IllegalArgumentException("instance '" + instance + "' invalid in mibObj definition for OID '" + mibObj.getOid() + "' in collection '" + collection.getName() + "' for group '" + group.getName() + "'.  Allowable instance values: " + allowableValues);
                }
            }
        }
    }
}
Also used : Group(org.opennms.netmgt.config.datacollection.Group) DatacollectionGroup(org.opennms.netmgt.config.datacollection.DatacollectionGroup) SnmpCollection(org.opennms.netmgt.config.datacollection.SnmpCollection) Groups(org.opennms.netmgt.config.datacollection.Groups) MibObj(org.opennms.netmgt.config.datacollection.MibObj)

Example 3 with Groups

use of org.opennms.netmgt.config.datacollection.Groups in project opennms by OpenNMS.

the class DefaultDataCollectionConfigDao method getCollectionGroupMap.

private static Map<String, Map<String, Group>> getCollectionGroupMap(FileReloadContainer<DatacollectionConfig> container) {
    // Build collection map which is a hash map of Collection
    // objects indexed by collection name...also build
    // collection group map which is a hash map indexed
    // by collection name with a hash map as the value
    // containing a map of the collections's group names
    // to the Group object containing all the information
    // for that group. So the associations are:
    // 
    // CollectionMap
    // collectionName -> Collection
    // 
    // CollectionGroupMap
    // collectionName -> groupMap
    // 
    // GroupMap
    // groupMapName -> Group
    // 
    // This is parsed and built at initialization for
    // faster processing at run-timne.
    // 
    final Map<String, Map<String, Group>> collectionGroupMap = new HashMap<String, Map<String, Group>>();
    for (final SnmpCollection collection : container.getObject().getSnmpCollections()) {
        // Build group map for this collection
        final Map<String, Group> groupMap = new HashMap<String, Group>();
        final Groups groups = collection.getGroups();
        if (groups != null) {
            for (final Group group : groups.getGroups()) {
                groupMap.put(group.getName(), group);
            }
        }
        collectionGroupMap.put(collection.getName(), groupMap);
    }
    return Collections.unmodifiableMap(collectionGroupMap);
}
Also used : Group(org.opennms.netmgt.config.datacollection.Group) DatacollectionGroup(org.opennms.netmgt.config.datacollection.DatacollectionGroup) SnmpCollection(org.opennms.netmgt.config.datacollection.SnmpCollection) HashMap(java.util.HashMap) Groups(org.opennms.netmgt.config.datacollection.Groups) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

DatacollectionGroup (org.opennms.netmgt.config.datacollection.DatacollectionGroup)3 Groups (org.opennms.netmgt.config.datacollection.Groups)3 SnmpCollection (org.opennms.netmgt.config.datacollection.SnmpCollection)3 Group (org.opennms.netmgt.config.datacollection.Group)2 HashMap (java.util.HashMap)1 Map (java.util.Map)1 IncludeCollection (org.opennms.netmgt.config.datacollection.IncludeCollection)1 MibObj (org.opennms.netmgt.config.datacollection.MibObj)1 ResourceType (org.opennms.netmgt.config.datacollection.ResourceType)1 Systems (org.opennms.netmgt.config.datacollection.Systems)1