import json import logging import re from inventory_provider.tasks.common import get_next_redis logger = logging.getLogger(__name__) def derive_router_hostnames(config): r = get_next_redis(config) routers = r.get('netdash') assert routers netdash_equipment = json.loads(routers.decode('utf-8')) assert isinstance(netdash_equipment, (list, tuple)) netdash_equipment = set(netdash_equipment) opsdb_equipment = set() for k in r.scan_iter('opsdb:interface_services:*'): m = re.match( 'opsdb:interface_services:([^:]+):.*$', k.decode('utf-8')) if m: opsdb_equipment.add(m.group(1)) else: logger.info("Unable to derive router name from %s" % k.decode('utf-8')) return netdash_equipment & opsdb_equipment