Fix console settings matching to use DeviceName instead of Hostname

- Changed from using Hostname base (e.g., 'KitchenBar') to DeviceName (e.g., 'TreatLife_SW_SS02S')
- DeviceName matches the template names in device_list configuration
- This fixes issue where console settings weren't being applied correctly
- Devices were not matching any templates due to hostname vs device type mismatch
- Now uses exact match first, then case-insensitive fallback
This commit is contained in:
Mike Geppert 2026-01-04 16:17:06 -06:00
parent 80b55b6b43
commit 265fa33497

View File

@ -37,16 +37,15 @@ class ConsoleSettingsManager:
""" """
device_name = device.get('name', 'Unknown') device_name = device.get('name', 'Unknown')
device_ip = device.get('ip', '') device_ip = device.get('ip', '')
if not device_ip: if not device_ip:
return False, "No IP address" return False, "No IP address"
# Get hostname base for template matching # Get device type from DeviceName for template matching
hostname = device_details.get('StatusNET', {}).get('Hostname', device_name) device_type = device_details.get('Status', {}).get('DeviceName', '')
hostname_base = get_hostname_base(hostname)
# Find which console_set to use for this device # Find which console_set to use for this device
console_set_name = self._get_console_set_name(hostname_base) console_set_name = self._get_console_set_name(device_type)
if not console_set_name: if not console_set_name:
self.logger.debug(f"{device_name}: No console settings configured") self.logger.debug(f"{device_name}: No console settings configured")
@ -86,22 +85,28 @@ class ConsoleSettingsManager:
self.logger.info(f"{device_name}: All console settings applied successfully") self.logger.info(f"{device_name}: All console settings applied successfully")
return True, "Applied" return True, "Applied"
def _get_console_set_name(self, hostname_base: str) -> Optional[str]: def _get_console_set_name(self, device_type: str) -> Optional[str]:
""" """
Get the console_set name for a device based on hostname. Get the console_set name for a device based on DeviceName.
Args: Args:
hostname_base: Base hostname of device device_type: Device type/DeviceName from Status
Returns: Returns:
str: Console set name or None str: Console set name or None
""" """
device_list = self.config.get('device_list', {}) device_list = self.config.get('device_list', {})
# First try exact match
if device_type in device_list:
return device_list[device_type].get('console_set')
# Then try case-insensitive match
device_type_lower = device_type.lower()
for template_name, template_data in device_list.items(): for template_name, template_data in device_list.items():
if hostname_base.lower() in template_name.lower(): if template_name.lower() == device_type_lower:
return template_data.get('console_set') return template_data.get('console_set')
return None return None
def _get_console_commands(self, console_set_name: str) -> List[str]: def _get_console_commands(self, console_set_name: str) -> List[str]: