From 30822e21e4dae79720561f9899ed73d96afe71ec Mon Sep 17 00:00:00 2001 From: Robert Latta <robert.latta@geant.org> Date: Fri, 16 Sep 2022 17:10:04 +0100 Subject: [PATCH] added clearing of Dynamic Context Cache --- inventory_provider/db/ims.py | 14 ++++++++++++++ inventory_provider/tasks/worker.py | 3 ++- test/test_worker.py | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/inventory_provider/db/ims.py b/inventory_provider/db/ims.py index ef5210af..d7b4eebd 100644 --- a/inventory_provider/db/ims.py +++ b/inventory_provider/db/ims.py @@ -221,6 +221,20 @@ class IMS(object): cls.bearer_token_init_time = re_init_time cls.bearer_token = response.text + def clear_dynamic_context_cache(self): + if not IMS.bearer_token: + IMS._init_bearer_token(self.username, self.password) + while True: + logger.info('Clearing Dynamic Context Cache') + response = requests.put( + f'{self.base_url + IMS.IMS_PATH}/ClearDynamicContextCache', + headers={'Authorization': f'Bearer {self.bearer_token}'}) + if response.status_code == 401: + IMS._init_bearer_token(self.username, self.password) + continue + response.raise_for_status() + break + def _get_entity( self, url, diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index f6f14642..2919c18a 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -741,6 +741,8 @@ def _extract_ims_data(ims_api_url, ims_username, ims_password): def _ds() -> IMS: return IMS(ims_api_url, ims_username, ims_password) + _ds().clear_dynamic_context_cache() + locations = {} lg_routers = [] geant_nodes = [] @@ -829,7 +831,6 @@ def _extract_ims_data(ims_api_url, ims_username, ims_password): nonlocal flexils_data flexils_data = ims_data.get_flexils_by_circuitid(ds=_ds()) - @log_task_entry_and_exit def _populate_hierarchy(): nonlocal hierarchy diff --git a/test/test_worker.py b/test/test_worker.py index 399ee7b2..970e9ed1 100644 --- a/test/test_worker.py +++ b/test/test_worker.py @@ -16,6 +16,9 @@ def test_extract_ims_data(mocker): 'inventory_provider.tasks.worker.ims_data.get_node_locations', return_value=[('loc_a', 'LOC A'), ('loc_b', 'LOC B')] ) + mocker.patch( + 'inventory_provider.tasks.worker.IMS.clear_dynamic_context_cache' + ) mocker.patch( 'inventory_provider.tasks.worker.ims_data.lookup_lg_routers', return_value=['lg router 1', 'lg router 2'] -- GitLab