@@ -971,14 +971,18 @@ def update_devices_names(pm):
971971 (resolver .resolve_nbtlookup , "NBTSCAN" ),
972972 ]
973973
974- def resolve_devices (devices , resolve_both_name_and_fqdn = True ):
974+ def resolve_devices (devices , resolve_both_name_and_fqdn = True , active_labels = None ):
975975 """
976976 Attempts to resolve device names and/or FQDNs using available strategies.
977977
978978 Parameters:
979979 devices (list): List of devices to resolve.
980980 resolve_both_name_and_fqdn (bool): If True, resolves both name and FQDN.
981981 If False, resolves only FQDN.
982+ active_labels (set|None): If provided, only strategies whose label is in
983+ this set are tried. Used by Step 1b to prevent
984+ non-SET_ALWAYS plugins from short-circuiting
985+ SET_ALWAYS ones.
982986
983987 Returns:
984988 recordsToUpdate (list): List of
@@ -997,6 +1001,8 @@ def resolve_devices(devices, resolve_both_name_and_fqdn=True):
9971001
9981002 # Attempt each resolution strategy in order
9991003 for resolve_fn , label in strategies :
1004+ if active_labels is not None and label not in active_labels :
1005+ continue
10001006 resolved = resolve_fn (device ["devMac" ], device ["devLastIP" ])
10011007
10021008 # Extract values
@@ -1111,7 +1117,7 @@ def resolve_devices(devices, resolve_both_name_and_fqdn=True):
11111117 mylog ("debug" , f"[Update Device Name] SET_ALWAYS re-resolve: active plugins={ set_always_plugins } , candidate devices={ len (resolvableDevices )} " )
11121118
11131119 if resolvableDevices :
1114- recordsToUpdate , _ , fs , notFound = resolve_devices (resolvableDevices )
1120+ recordsToUpdate , _ , fs , notFound = resolve_devices (resolvableDevices , active_labels = set ( set_always_plugins ) )
11151121
11161122 res_string = f"{ fs ['DIGSCAN' ]} /{ fs ['AVAHISCAN' ]} /{ fs ['NSLOOKUP' ]} /{ fs ['NBTSCAN' ]} "
11171123 mylog ("verbose" , f"[Update Device Name] SET_ALWAYS re-resolve - Found (DIG/AVAHI/NSL/NBT): { len (recordsToUpdate )} ({ res_string } ), Not Found: { notFound } " )
0 commit comments