From 8547da584e1c96408163999cf93b2dcebe0b0715 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Thu, 13 Aug 2020 11:25:01 +0200
Subject: [PATCH] remove assumption that interface name doesn't contain ':'

---
 inventory_provider/tasks/data.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/inventory_provider/tasks/data.py b/inventory_provider/tasks/data.py
index 4f01fb37..15527bdb 100644
--- a/inventory_provider/tasks/data.py
+++ b/inventory_provider/tasks/data.py
@@ -18,12 +18,17 @@ def build_service_interface_user_list(config):
         r = get_next_redis(config)
         for k in r.scan_iter('netconf-interfaces:*'):
             k = k.decode('utf-8')
-            (_, router_name, ifc_name) = k.split(':')
+            m = re.match('^netconf-interfaces:([^:]+):(.+)$', k)
+            if not m:
+                logger.error('invalid redis key: "{k}"')
+                continue  # skip, rather than fail the entire update
+            router_name = m.group(1)
+            ifc_name = m.group(2)
 
             info = r.get(k).decode('utf-8')
             info = json.loads(info)
 
-            assert ifc_name == info['name']
+            assert ifc_name == info['name']  # sanity
             yield {
                 'router': router_name,
                 'interface': info['name'],
-- 
GitLab