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)
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()