From 3bd82fe69f0ee44b3a213c7297b690a9d708cde7 Mon Sep 17 00:00:00 2001 From: Roman Dobosz Date: Wed, 23 Dec 2020 13:14:59 +0100 Subject: [PATCH] Adapt selfLink calculation for KuryrLoadBalancer CRD objects. Implements: blueprint selflink Change-Id: I1654572b4653df939d61e0a9875b42c32a26f748 --- .../controller/drivers/lbaasv2.py | 2 +- kuryr_kubernetes/controller/handlers/lbaas.py | 6 +-- .../controller/handlers/loadbalancer.py | 50 +++++++++---------- .../controller/handlers/test_loadbalancer.py | 2 + 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/kuryr_kubernetes/controller/drivers/lbaasv2.py b/kuryr_kubernetes/controller/drivers/lbaasv2.py index 5dd7b972f..20eda6d0d 100644 --- a/kuryr_kubernetes/controller/drivers/lbaasv2.py +++ b/kuryr_kubernetes/controller/drivers/lbaasv2.py @@ -857,7 +857,7 @@ class LBaaSv2Driver(base.LBaaSDriver): lb = klb['status']['loadbalancer'] try: - k8s.patch_crd('status/loadbalancer', klb['metadata']['selfLink'], + k8s.patch_crd('status/loadbalancer', utils.get_res_link(klb), {'security_groups': sgs}) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadBalancer CRD not found %s', lbaas_name) diff --git a/kuryr_kubernetes/controller/handlers/lbaas.py b/kuryr_kubernetes/controller/handlers/lbaas.py index 769696fda..dd8ce90df 100644 --- a/kuryr_kubernetes/controller/handlers/lbaas.py +++ b/kuryr_kubernetes/controller/handlers/lbaas.py @@ -174,8 +174,8 @@ class ServiceHandler(k8s_base.ResourceEventHandler): spec = self._build_kuryrloadbalancer_spec(service) LOG.debug('Patching KuryrLoadBalancer CRD %s', loadbalancer_crd) try: - kubernetes.patch_crd('spec', loadbalancer_crd['metadata'][ - 'selfLink'], spec) + kubernetes.patch_crd('spec', utils.get_res_link(loadbalancer_crd), + spec) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadBalancer CRD not found %s', loadbalancer_crd) except k_exc.K8sConflict: @@ -374,7 +374,7 @@ class EndpointsHandler(k8s_base.ResourceEventHandler): try: kubernetes.patch_crd( 'spec', - loadbalancer_crd['metadata']['selfLink'], + utils.get_res_link(loadbalancer_crd), spec) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) diff --git a/kuryr_kubernetes/controller/handlers/loadbalancer.py b/kuryr_kubernetes/controller/handlers/loadbalancer.py index 66244ab61..d536c06fb 100644 --- a/kuryr_kubernetes/controller/handlers/loadbalancer.py +++ b/kuryr_kubernetes/controller/handlers/loadbalancer.py @@ -98,9 +98,8 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): self._update_lb_status(loadbalancer_crd) kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd[ - 'metadata']['selfLink'], loadbalancer_crd[ - 'status']) + kubernetes.patch_crd('status', utils.get_res_link( + loadbalancer_crd), loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -202,8 +201,7 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): lb['security_groups'] = lb_sgs try: - k8s.patch_crd('status/loadbalancer', - klb_crd['metadata']['selfLink'], + k8s.patch_crd('status/loadbalancer', utils.get_res_link(klb_crd), {'security_groups': lb_sgs}) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadBalancer %s not found', svc_name) @@ -327,9 +325,8 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): member) kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd[ - 'metadata']['selfLink'], loadbalancer_crd[ - 'status']) + kubernetes.patch_crd('status', utils.get_res_link( + loadbalancer_crd), loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -440,9 +437,9 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd[ - 'metadata']['selfLink'], loadbalancer_crd[ - 'status']) + kubernetes.patch_crd('status', + utils.get_res_link(loadbalancer_crd), + loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -489,8 +486,9 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): pool) kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd['metadata'][ - 'selfLink'], loadbalancer_crd['status']) + kubernetes.patch_crd('status', + utils.get_res_link(loadbalancer_crd), + loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -535,9 +533,9 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd[ - 'metadata']['selfLink'], loadbalancer_crd[ - 'status']) + kubernetes.patch_crd('status', + utils.get_res_link(loadbalancer_crd), + loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -611,8 +609,9 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd[ - 'metadata']['selfLink'], loadbalancer_crd['status']) + kubernetes.patch_crd('status', + utils.get_res_link(loadbalancer_crd), + loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -641,9 +640,9 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd[ - 'metadata']['selfLink'], loadbalancer_crd[ - 'status']) + kubernetes.patch_crd('status', + utils.get_res_link(loadbalancer_crd), + loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -715,8 +714,9 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): kubernetes = clients.get_kubernetes_client() try: - kubernetes.patch_crd('status', loadbalancer_crd['metadata'][ - 'selfLink'], loadbalancer_crd['status']) + kubernetes.patch_crd('status', + utils.get_res_link(loadbalancer_crd), + loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) @@ -757,8 +757,8 @@ class KuryrLoadBalancerHandler(k8s_base.ResourceEventHandler): loadbalancer_crd['status'] = {} k8s = clients.get_kubernetes_client() try: - k8s.patch_crd('status', loadbalancer_crd['metadata'][ - 'selfLink'], loadbalancer_crd['status']) + k8s.patch_crd('status', utils.get_res_link(loadbalancer_crd), + loadbalancer_crd['status']) except k_exc.K8sResourceNotFound: LOG.debug('KuryrLoadbalancer CRD not found %s', loadbalancer_crd) diff --git a/kuryr_kubernetes/tests/unit/controller/handlers/test_loadbalancer.py b/kuryr_kubernetes/tests/unit/controller/handlers/test_loadbalancer.py index 7b48a6046..ef29fe314 100644 --- a/kuryr_kubernetes/tests/unit/controller/handlers/test_loadbalancer.py +++ b/kuryr_kubernetes/tests/unit/controller/handlers/test_loadbalancer.py @@ -30,6 +30,8 @@ _SUPPORTED_LISTENER_PROT = ('HTTP', 'HTTPS', 'TCP') def get_lb_crd(): return { + 'apiVersion': 'openstack.org/v1', + 'kind': 'KuryrLoadBalancer', "metadata": { "creationTimestamp": "2020-07-28T13:13:30Z", "finalizers": [