From 35d66455cb96bbee074964fffb9888f3fd2fe256 Mon Sep 17 00:00:00 2001 From: charanm08 Date: Fri, 24 Jan 2025 11:18:52 +0530 Subject: [PATCH] fix static routes override --- f5_cccl/resource/net/route.py | 3 ++- f5_cccl/service/config_reader.py | 1 + f5_cccl/service/manager.py | 9 +++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/f5_cccl/resource/net/route.py b/f5_cccl/resource/net/route.py index 16f817d..c423311 100644 --- a/f5_cccl/resource/net/route.py +++ b/f5_cccl/resource/net/route.py @@ -29,7 +29,8 @@ class Route(Resource): properties = dict(name=None, partition=None, network=None, - gw=None) + gw=None, + description=None) def __init__(self, name, partition, **data): """Create an Route entry from CCCL routeType.""" diff --git a/f5_cccl/service/config_reader.py b/f5_cccl/service/config_reader.py index 6e9da28..e7d28b2 100644 --- a/f5_cccl/service/config_reader.py +++ b/f5_cccl/service/config_reader.py @@ -220,5 +220,6 @@ def read_net_config(self, service_config, default_route_domain): a['name']: self._create_config_item(ApiRoute, a) for a in routes } + config_dict['cis-identifier'] = service_config.get('cis-identifier',str()) return config_dict diff --git a/f5_cccl/service/manager.py b/f5_cccl/service/manager.py index 765e41f..10a5102 100644 --- a/f5_cccl/service/manager.py +++ b/f5_cccl/service/manager.py @@ -41,9 +41,10 @@ class ServiceConfigDeployer(object): first_pass = True - def __init__(self, bigip_proxy): + def __init__(self, bigip_proxy,partition=None): """Initialize the config deployer.""" self._bigip = bigip_proxy + self._partition = partition # pylint: disable=too-many-locals def _get_resource_tasks(self, existing, desired): @@ -485,6 +486,10 @@ def deploy_net(self, desired_config): # pylint: disable=too-many-locals (create_routes, update_routes, delete_routes) = ( self._get_resource_tasks(existing, desired)[0:3]) + if self._partition: + if self._partition.lower() == 'common' and len(delete_routes) > 0: + delete_routes = [x for x in delete_routes if x._data.get("description") == desired_config.get('cis-identifier')] + # Get the list of arp tasks LOGGER.debug("Getting arp tasks...") existing = self._bigip.get_arps() @@ -648,7 +653,7 @@ def __init__(self, bigip_proxy, partition, schema): self._partition = partition self._bigip = bigip_proxy self._config_validator = ServiceConfigValidator(schema) - self._service_deployer = ServiceConfigDeployer(bigip_proxy) + self._service_deployer = ServiceConfigDeployer(bigip_proxy,partition) self._config_reader = ServiceConfigReader(self._partition) def get_partition(self):