haiku вайб 6

This commit is contained in:
dv 2026-04-08 12:11:39 +03:00
parent 475250eb6f
commit 5b6324e967

View file

@ -103,40 +103,49 @@ def _parse_config(config_text: str, rack_host: str) -> list[DiscoveredDevice]:
discovered: list[DiscoveredDevice] = [] discovered: list[DiscoveredDevice] = []
seen_ips: set[str] = set() seen_ips: set[str] = set()
all_sections = parser.sections()
plugin_sections = [s for s in all_sections if s.startswith("plugin:")]
for section in parser.sections(): logger.info(f"[ssh_discovery] Config parsing: found {len(all_sections)} sections total, {len(plugin_sections)} are plugins")
for section in all_sections:
if not section.startswith("plugin:"): if not section.startswith("plugin:"):
continue continue
plugin_name = section[len("plugin:"):] plugin_name = section[len("plugin:"):]
if any(plugin_name.startswith(prefix) for prefix in _SKIP_PLUGIN_PREFIXES): if any(plugin_name.startswith(prefix) for prefix in _SKIP_PLUGIN_PREFIXES):
logger.debug(f"[ssh_discovery] Plugin {plugin_name} - IGNORED (prefix in skip list: {_SKIP_PLUGIN_PREFIXES})") logger.info(f"[ssh_discovery] Plugin '{plugin_name}' - IGNORED (in skip list)")
continue continue
cls = parser.get(section, "cls", fallback="") cls = parser.get(section, "cls", fallback="")
if not cls: if not cls:
logger.debug(f"[ssh_discovery] Plugin {plugin_name} - IGNORED (no 'cls' field)") logger.info(f"[ssh_discovery] Plugin '{plugin_name}' - IGNORED (no 'cls' field)")
continue continue
logger.info(f"[ssh_discovery] Plugin '{plugin_name}' (cls={cls})")
# Collect all URI-like values in this section # Collect all URI-like values in this section
uri_fields = ("uri", "frame_uri", "host") uri_fields = ("uri", "frame_uri", "host")
found_ip_in_plugin = False
for field_name in uri_fields: for field_name in uri_fields:
raw = parser.get(section, field_name, fallback=None) raw = parser.get(section, field_name, fallback=None)
if not raw: if not raw:
logger.debug(f"[ssh_discovery] {field_name}: not set")
continue continue
logger.debug(f"[ssh_discovery] {field_name}='{raw}'")
ip = _extract_ip(raw) ip = _extract_ip(raw)
if not ip: if not ip:
logger.debug(f"[ssh_discovery] Plugin {plugin_name} field {field_name}='{raw}' - IGNORED (not a valid network IP)") logger.info(f"[ssh_discovery] {field_name}='{raw}' - IGNORED (not a valid network IP)")
continue continue
if ip == rack_host: if ip == rack_host:
logger.debug(f"[ssh_discovery] IP {ip} from plugin {plugin_name} - IGNORED (matches rack_host)") logger.info(f"[ssh_discovery] IP {ip} - IGNORED (matches rack_host {rack_host})")
continue continue
if ip in seen_ips: if ip in seen_ips:
logger.debug(f"[ssh_discovery] IP {ip} from plugin {plugin_name} - IGNORED (duplicate, already seen)") logger.info(f"[ssh_discovery] IP {ip} - IGNORED (duplicate, already seen)")
continue continue
seen_ips.add(ip) seen_ips.add(ip)
logger.debug(f"[ssh_discovery] IP {ip} from plugin {plugin_name} - EXTRACTED (cls={cls}, category={_cls_to_category(cls)}, role={_cls_to_role(cls, plugin_name)})") logger.info(f"[ssh_discovery] IP {ip} - EXTRACTED (category={_cls_to_category(cls)}, role={_cls_to_role(cls, plugin_name)})")
discovered.append(DiscoveredDevice( discovered.append(DiscoveredDevice(
ip=ip, ip=ip,
category=_cls_to_category(cls), category=_cls_to_category(cls),
@ -144,6 +153,7 @@ def _parse_config(config_text: str, rack_host: str) -> list[DiscoveredDevice]:
plugin_name=plugin_name, plugin_name=plugin_name,
cls=cls, cls=cls,
)) ))
found_ip_in_plugin = True
return discovered return discovered