From 34f936e21ccddb926cf42426f8974530471956d4 Mon Sep 17 00:00:00 2001 From: Kris Forbes Date: Fri, 6 Feb 2026 16:11:48 -0500 Subject: [PATCH] Capture Server Name column and prioritize for inventory keys --- wif2ansible/excel_reader.py | 13 ++++++++++--- wif2ansible/inventory.py | 4 ++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/wif2ansible/excel_reader.py b/wif2ansible/excel_reader.py index ced6bc4..be59dcb 100644 --- a/wif2ansible/excel_reader.py +++ b/wif2ansible/excel_reader.py @@ -77,8 +77,8 @@ def read_servers(filename: str) -> Dict[str, Server]: print("Warning: No 'Servers' sheet found.") return {} - # keywords: reference, platform, ip address, management ip, production ip - header_keywords = ['reference', 'platform', 'ip address', 'production ip'] + # keywords: reference, platform, ip address, management ip, production ip, server name + header_keywords = ['reference', 'platform', 'ip address', 'production ip', 'server name'] header_row_idx, col_map = find_header_row(target_sheet, header_keywords) @@ -96,6 +96,7 @@ def read_servers(filename: str) -> Dict[str, Server]: # Extract data ref_idx = col_map.get('reference') + name_idx = col_map.get('server name') # User confirmed header plat_idx = col_map.get('platform') ip_idx = col_map.get('ip address') # Generic/Management IP prod_ip_idx = col_map.get('production ip') # Specific Production IP @@ -110,6 +111,12 @@ def read_servers(filename: str) -> Dict[str, Server]: if not ref or ref.lower() == 'example': continue + # Hostname Logic: + # 1. Use 'Server Name' column if available (e.g. ITSMDEV-5009898) + # 2. Fallback to cleaned Reference (Stripping SRV###) + server_name_raw = get_val(name_idx) + final_hostname = server_name_raw if server_name_raw else clean_reference(ref) + plat = get_val(plat_idx) or 'unknown' # Parse Management IP @@ -130,7 +137,7 @@ def read_servers(filename: str) -> Dict[str, Server]: s = Server( reference=ref, - hostname=clean_reference(ref), + hostname=final_hostname, platform=plat, ip_address=ip_addr, production_ip=prod_ip_addr diff --git a/wif2ansible/inventory.py b/wif2ansible/inventory.py index 94fc1c0..0d82b95 100644 --- a/wif2ansible/inventory.py +++ b/wif2ansible/inventory.py @@ -61,8 +61,8 @@ def generate_inventory(servers: Dict[str, Server], flows: List[Flow]) -> Dict[st match_count += 1 # Prepare host entry if new - # We use the Reference/Hostname as the key in inventory 'hosts' - host_key = server.reference or server.hostname or server.ip_address + # We use the Hostname (from Server Name col) -> Reference (cleaned) -> IP match + host_key = server.hostname or server.reference or server.ip_address if host_key not in inventory_hosts: host_vars = server.get_ansible_vars()