def _extract_snmp_sections( inf_info: Dict[InventoryPluginNameStr, InventoryInfo], plugin_file_lookup: Dict[str, str], ) -> None: for plugin_name, plugin_info in sorted(inv_info.items()): if 'snmp_info' not in plugin_info: continue section_name = section_name_of(plugin_name) if isinstance(agent_based_register.get_section_plugin(SectionName(section_name)), SNMPSectionPlugin): continue fallback_files = ([_include_file_path(i) for i in plugin_info.get('includes', [])] + [plugin_file_lookup[plugin_name]]) try: agent_based_register.add_section_plugin( create_snmp_section_plugin_from_legacy( section_name, {}, plugin_info['snmp_scan_function'], plugin_info['snmp_info'], scan_function_fallback_files=fallback_files, )) except (NotImplementedError, KeyError, AssertionError, ValueError): msg = config.AUTO_MIGRATION_ERR_MSG % ('section', plugin_name) if cmk.utils.debug.enabled(): raise MKGeneralException(msg) console.warning(msg)
def _extract_snmp_sections(): # type: () -> None for plugin_name, plugin_info in sorted(inv_info.items()): if 'snmp_info' not in plugin_info: continue section_name = section_name_of(plugin_name) if config.get_registered_section_plugin(PluginName(section_name)): continue fallback_files = ( [_include_file_path(i) for i in plugin_info.get('includes', [])] + [_plugin_file_lookup[plugin_name]]) try: snmp_section_plugin = create_snmp_section_plugin_from_legacy( section_name, {}, plugin_info['snmp_scan_function'], plugin_info['snmp_info'], scan_function_fallback_files=fallback_files, ) except (NotImplementedError, KeyError, AssertionError, ValueError): msg = config.AUTO_MIGRATION_ERR_MSG % ('section', plugin_name) if cmk.utils.debug.enabled(): raise MKGeneralException(msg) # TODO (mo): bring this back: #console.warning(msg) else: config.registered_snmp_sections[ snmp_section_plugin.name] = snmp_section_plugin
def _extract_snmp_sections( inf_info: Dict[InventoryPluginNameStr, InventoryInfo], plugin_file_lookup: Dict[str, str], ) -> List[str]: errors = [] for plugin_name, plugin_info in sorted(inv_info.items()): if 'snmp_info' not in plugin_info: continue section_name = section_name_of(plugin_name) if isinstance(agent_based_register.get_section_plugin(SectionName(section_name)), SNMPSectionPlugin): continue fallback_files = ([_include_file_path(i) for i in plugin_info.get('includes', [])] + [plugin_file_lookup[plugin_name]]) try: agent_based_register.add_section_plugin( create_snmp_section_plugin_from_legacy( section_name, {}, plugin_info['snmp_scan_function'], plugin_info['snmp_info'], scan_function_fallback_files=fallback_files, # We have to validate, because we read inventory plugin files # directly, and do not know whether they changed. validate_creation_kwargs=True, )) except (NotImplementedError, KeyError, AssertionError, ValueError): msg = config.AUTO_MIGRATION_ERR_MSG % ('section', plugin_name) if cmk.utils.debug.enabled(): raise MKGeneralException(msg) errors.append(msg) return errors
def test_create_snmp_section_plugin_from_legacy(): plugin = section_plugins_legacy.create_snmp_section_plugin_from_legacy( "norris", { 'parse_function': old_school_parse_function, 'inventory_function': old_school_discover_function, }, old_school_scan_function, (".1.2.3.4.5", ["2", 3]), ) assert plugin.name == SectionName("norris") assert plugin.parsed_section_name == ParsedSectionName("norris") assert plugin.parse_function.__name__ == "old_school_parse_function" assert plugin.host_label_function.__name__ == "host_label_function" assert plugin.supersedes == [] assert plugin.detect_spec == [[(".1.2.3.4.5", "norris.*", True)]] assert plugin.trees == [SNMPTree(base=".1.2.3.4.5", oids=["2", "3"])]