diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index dd1689d934ad5a39695e5ee5b509ff9716fab12a..b9e48a8c46a1975667d4321f4f0004005d64b352 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -1,3 +1,4 @@ +import enum import json import logging import os @@ -654,15 +655,19 @@ def refresh_finalizer(self, pending_task_ids_json): self.log_info('latched current/next dbs') +class PollerServiceCategory(str, enum.Enum): + MDVPN = 'mdvpn' + LHCONE = 'lhcone' + + @log_task_entry_and_exit def _build_service_category_interface_list(update_callback=lambda s: None): def _classify(ifc): if ifc['description'].startswith('SRV_MDVPN'): - return 'mdvpn' + yield PollerServiceCategory.MDVPN if 'LHCONE' in ifc['description']: - return 'lhcone' - return None + yield PollerServiceCategory.LHCONE update_callback('loading all known interfaces') interfaces = data.build_service_interface_user_list(InventoryTask.config) @@ -674,13 +679,11 @@ def _build_service_category_interface_list(update_callback=lambda s: None): rp = r.pipeline() for ifc in interfaces: - service_type = _classify(ifc) - if not service_type: - continue - rp.set( - f'interface-services:{service_type}' - f':{ifc["router"]}:{ifc["interface"]}', - json.dumps(ifc)) + for service_category in _classify(ifc): + rp.set( + f'interface-services:{service_category.value}' + f':{ifc["router"]}:{ifc["interface"]}', + json.dumps(ifc)) rp.execute()