From 1f2a90a7220686c4e91408c9ee8064efe57cba4d Mon Sep 17 00:00:00 2001 From: cong meng Date: Thu, 10 Jun 2021 07:54:36 +1200 Subject: [PATCH] fix(frontend): When a docker endpoint is selected, configuring a newly added k8s agent fails EE-821 (#5115) * fix(frontend): When a docker endpoint is selected, configuring a newly added k8s agent fails EE-821 * fix(frontend): restore endpointID in a finally block EE-821 Co-authored-by: Simon Meng --- .../views/configure/configureController.js | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/app/kubernetes/views/configure/configureController.js b/app/kubernetes/views/configure/configureController.js index a3c5b4e5e..0d7fdda15 100644 --- a/app/kubernetes/views/configure/configureController.js +++ b/app/kubernetes/views/configure/configureController.js @@ -139,20 +139,32 @@ class KubernetesConfigureController { } async removeIngressesAcrossNamespaces() { - const promises = []; const ingressesToDel = _.filter(this.formValues.IngressClasses, { NeedsDeletion: true }); - const allResourcePools = await this.KubernetesResourcePoolService.get(); - const resourcePools = _.filter( - allResourcePools, - (resourcePool) => - !this.KubernetesNamespaceHelper.isSystemNamespace(resourcePool.Namespace.Name) && !this.KubernetesNamespaceHelper.isDefaultNamespace(resourcePool.Namespace.Name) - ); - ingressesToDel.forEach((ingress) => { - resourcePools.forEach((resourcePool) => { - promises.push(this.KubernetesIngressService.delete(resourcePool.Namespace.Name, ingress.Name)); + if (!ingressesToDel.length) { + return; + } + + const promises = []; + const oldEndpointID = this.EndpointProvider.endpointID(); + this.EndpointProvider.setEndpointID(this.endpoint.Id); + + try { + const allResourcePools = await this.KubernetesResourcePoolService.get(); + const resourcePools = _.filter( + allResourcePools, + (resourcePool) => + !this.KubernetesNamespaceHelper.isSystemNamespace(resourcePool.Namespace.Name) && !this.KubernetesNamespaceHelper.isDefaultNamespace(resourcePool.Namespace.Name) + ); + + ingressesToDel.forEach((ingress) => { + resourcePools.forEach((resourcePool) => { + promises.push(this.KubernetesIngressService.delete(resourcePool.Namespace.Name, ingress.Name)); + }); }); - }); + } finally { + this.EndpointProvider.setEndpointID(oldEndpointID); + } const responses = await Promise.allSettled(promises); responses.forEach((respons) => {