diff --git a/console_settings.py b/console_settings.py index 376da2d..bcb8e34 100644 --- a/console_settings.py +++ b/console_settings.py @@ -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]: diff --git a/device_diff.py b/device_diff.py index efa7237..872774d 100644 --- a/device_diff.py +++ b/device_diff.py @@ -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