Exemplo n.º 1
0
def get_mib_map(config):
    """:type config: ConfigParser.ConfigParser"""
    candidate_classes = {
        k: v
        for k, v in mibretriever.MibRetrieverMaker.modules.items()
        if hasattr(v, 'get_all_sensors')
    }
    _logger.debug("sensor candidate classes: %r", candidate_classes)
    candidate_classes.update(
        {cls.__name__: cls
         for cls in candidate_classes.values()})

    mib_map = defaultdict(list)
    for opt in config.options('sensors:vendormibs'):
        names = _get_space_separated_list(config, 'sensors:vendormibs', opt)
        enterprise = _translate_enterprise_id(opt)
        if not enterprise:
            raise ConfigurationError("Unknown enterprise value: %s", opt)

        for mib in names:
            if mib not in candidate_classes:
                raise ConfigurationError(
                    "No known MIB implementation with "
                    "sensor support: %s", mib)
            cls = candidate_classes[mib]
            mib_map[enterprise].append(cls)

    return dict(mib_map)
Exemplo n.º 2
0
 def get_vlan_limit_set(self):
     """Returns a set of VLAN IDs to limit linkState alerts to"""
     opt = ("linkdown", "limit_to_vlans")
     if self.config.has_option(*opt):
         vlanstring = self.config.get(*opt)
         try:
             vlans = [int(vlan) for vlan in vlanstring.split()]
         except (TypeError, ValueError):
             raise ConfigurationError("Invalid config value for %s" % opt)
         return set(vlans)
     else:
         return set()