diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py index 9a8af475adaab1a2719c4bcaceb226373d7806eb..7cda57d27c9cf9f6807a559de12c40771ebc73ff 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) }