Fix device matching to check template NAME field
- DeviceName comes from template's NAME field (e.g., 'Treatlife SS02') - Config keys use different names (e.g., 'TreatLife_SW_SS02S') - Now falls back to checking template NAME if key doesn't match - Fixes issue where devices with template-based names weren't getting console settings - Both console_settings and device_diff use same matching logic
This commit is contained in:
parent
137899cfc2
commit
70e0b038e6
@ -97,16 +97,30 @@ class ConsoleSettingsManager:
|
||||
"""
|
||||
device_list = self.config.get('device_list', {})
|
||||
|
||||
# First try exact match
|
||||
# First try exact match on key
|
||||
if device_type in device_list:
|
||||
return device_list[device_type].get('console_set')
|
||||
|
||||
# Then try case-insensitive match
|
||||
# Then try case-insensitive match on key
|
||||
device_type_lower = device_type.lower()
|
||||
for template_name, template_data in device_list.items():
|
||||
if template_name.lower() == device_type_lower:
|
||||
return template_data.get('console_set')
|
||||
|
||||
# Finally, try matching against the template NAME field
|
||||
# DeviceName comes from the template's NAME field
|
||||
import json
|
||||
for template_name, template_data in device_list.items():
|
||||
template_str = template_data.get('template', '')
|
||||
if template_str:
|
||||
try:
|
||||
template_obj = json.loads(template_str)
|
||||
template_device_name = template_obj.get('NAME', '')
|
||||
if template_device_name.lower() == device_type_lower:
|
||||
return template_data.get('console_set')
|
||||
except json.JSONDecodeError:
|
||||
continue
|
||||
|
||||
return None
|
||||
|
||||
def _get_console_commands(self, console_set_name: str) -> List[str]:
|
||||
|
||||
@ -118,13 +118,28 @@ class DeviceComparison:
|
||||
if device_type in device_list:
|
||||
console_set_name = device_list[device_type].get('console_set')
|
||||
else:
|
||||
# Try case-insensitive match
|
||||
# Try case-insensitive match on key
|
||||
device_type_lower = device_type.lower()
|
||||
for template_name, template_data in device_list.items():
|
||||
if template_name.lower() == device_type_lower:
|
||||
console_set_name = template_data.get('console_set')
|
||||
break
|
||||
|
||||
# If still not found, try matching against template NAME field
|
||||
if not console_set_name:
|
||||
import json
|
||||
for template_name, template_data in device_list.items():
|
||||
template_str = template_data.get('template', '')
|
||||
if template_str:
|
||||
try:
|
||||
template_obj = json.loads(template_str)
|
||||
template_device_name = template_obj.get('NAME', '')
|
||||
if template_device_name.lower() == device_type_lower:
|
||||
console_set_name = template_data.get('console_set')
|
||||
break
|
||||
except json.JSONDecodeError:
|
||||
continue
|
||||
|
||||
if not console_set_name:
|
||||
self.logger.warning(f"No console_set found for device type: {device_type}")
|
||||
return expected
|
||||
|
||||
Loading…
Reference in New Issue
Block a user