Compare commits
1 Commits
v2026.02.0
...
v2026.02.0
| Author | SHA1 | Date | |
|---|---|---|---|
| a13fc5b282 |
@@ -55,5 +55,12 @@ class TestInventoryKeys(unittest.TestCase):
|
|||||||
self.assertIn("good_name", hosts)
|
self.assertIn("good_name", hosts)
|
||||||
self.assertNotIn("bad_name", hosts)
|
self.assertNotIn("bad_name", hosts)
|
||||||
|
|
||||||
|
def test_suffix_stripping(self):
|
||||||
|
from wif2ansible.parsers import clean_hostname
|
||||||
|
self.assertEqual(clean_hostname("server.prod.global.gc.ca"), "server")
|
||||||
|
self.assertEqual(clean_hostname("server.PROD.GLOBAL.GC.CA"), "server")
|
||||||
|
self.assertEqual(clean_hostname("nosuffix"), "nosuffix")
|
||||||
|
self.assertEqual(clean_hostname("other.suffix.com"), "other.suffix.com")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
@@ -117,10 +117,16 @@ def generate_inventory(servers: Dict[str, Server], flows: List[Flow]) -> Dict[st
|
|||||||
print(f"Warning: No resolvable name found for {server.primary_ip} (Candidates: {candidates}). Using IP.")
|
print(f"Warning: No resolvable name found for {server.primary_ip} (Candidates: {candidates}). Using IP.")
|
||||||
final_host_key = server.primary_ip
|
final_host_key = server.primary_ip
|
||||||
|
|
||||||
host_key = final_host_key
|
# Final cleanup: Strip suffixes if user requested
|
||||||
|
from .parsers import clean_hostname
|
||||||
|
host_key = clean_hostname(final_host_key)
|
||||||
|
|
||||||
if host_key not in inventory_hosts:
|
if host_key not in inventory_hosts:
|
||||||
host_vars = server.get_ansible_vars()
|
host_vars = server.get_ansible_vars()
|
||||||
|
|
||||||
|
# Ensure proper ansible_host is set if key is not IP
|
||||||
|
if host_key != server.primary_ip and server.primary_ip:
|
||||||
|
host_vars['ansible_host'] = server.primary_ip
|
||||||
host_vars['flows'] = []
|
host_vars['flows'] = []
|
||||||
inventory_hosts[host_key] = host_vars
|
inventory_hosts[host_key] = host_vars
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,15 @@ def clean_reference(ref: str) -> str:
|
|||||||
# Remove leading/trailing whitespace
|
# Remove leading/trailing whitespace
|
||||||
return s.strip()
|
return s.strip()
|
||||||
|
|
||||||
|
def clean_hostname(name: str) -> str:
|
||||||
|
"""
|
||||||
|
Strips specific suffixes like .prod.global.gc.ca to get shortname.
|
||||||
|
"""
|
||||||
|
if not name:
|
||||||
|
return ""
|
||||||
|
# Case insensitive strip
|
||||||
|
return re.sub(r'\.prod\.global\.gc\.ca$', '', name, flags=re.IGNORECASE)
|
||||||
|
|
||||||
def parse_ip(ip_str: str) -> List[str]:
|
def parse_ip(ip_str: str) -> List[str]:
|
||||||
"""Finds all IPv4 addresses in a string."""
|
"""Finds all IPv4 addresses in a string."""
|
||||||
if not ip_str:
|
if not ip_str:
|
||||||
|
|||||||
Reference in New Issue
Block a user