From 19b3858750f6129bba3cb749a6ea5e4dc655fbb2 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Tue, 10 Mar 2020 15:31:34 +0100
Subject: [PATCH] changed junosspace device hostname derivation

---
 inventory_provider/juniper.py | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py
index 9a8af475..7cda57d2 100644
--- a/inventory_provider/juniper.py
+++ b/inventory_provider/juniper.py
@@ -384,22 +384,25 @@ def load_routers_from_junosspace(config):
             logger.error('%d.%d: %s' % (e.line, e.column, e.message))
         assert False
 
-    for d in devices.xpath('//devices/device'):
-        name = d.xpath('./name/text()')[0]
+    def _derive_hostname(n):
         # TODO: ask ops if this name->hostname operation is valid
+        if name.endswith('geant.net'):
+            return name
         m = re.match(r'^(.*?)(\.re\d+)?$', name)
         if m:
-            hostname = m.group(1) + '.geant.net'
-        else:
-            logger.error(
-                'unrecognized junosspace device name format :%s' % name)
-            hostname = None
+            return m.group(1) + '.geant.net'
+        logger.error(
+            'unrecognized junosspace device name format :%s' % name)
+        return None
+
+    for d in devices.xpath('//devices/device'):
+        name = d.xpath('./name/text()')[0]
         yield {
             "OSVersion": d.xpath('./OSVersion/text()')[0],
             "platform": d.xpath('./platform/text()')[0],
             "address": d.xpath('./ipAddr/text()')[0],
             "name": name,
-            "hostname": hostname
+            "hostname": _derive_hostname(name)
         }
 
 
-- 
GitLab