From 71c0e8e6619e539f901598993fee9db543832377 Mon Sep 17 00:00:00 2001 From: Prabhat Khera <91852476+prabhat-org@users.noreply.github.com> Date: Tue, 31 May 2022 10:12:37 +1200 Subject: [PATCH] fix(kubernetes): fix redeploying kubernetes app EE-2875 (#6984) --- app/kubernetes/services/applicationService.js | 22 +++++++++++-------- app/kubernetes/services/serviceService.js | 4 ++-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/kubernetes/services/applicationService.js b/app/kubernetes/services/applicationService.js index cc7613081..5eaa865bd 100644 --- a/app/kubernetes/services/applicationService.js +++ b/app/kubernetes/services/applicationService.js @@ -237,7 +237,6 @@ class KubernetesApplicationService { } if (service) { - await this.KubernetesServiceService.create(service); if (formValues.PublishingType === KubernetesApplicationPublishingTypes.INGRESS) { const ingresses = KubernetesIngressConverter.applicationFormValuesToIngresses(formValues, service.Name); await Promise.all(this._generateIngressPatchPromises(formValues.OriginalIngresses, ingresses)); @@ -281,19 +280,24 @@ class KubernetesApplicationService { * in this method should also be displayed in the summary output (getUpdatedApplicationResources) */ async patchAsync(oldFormValues, newFormValues) { - const [oldApp, oldHeadlessService, oldServices, oldService, oldClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(oldFormValues); - const [newApp, newHeadlessService, newServices, newService, newClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(newFormValues); + const [oldApp, oldHeadlessService, oldServices, , oldClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(oldFormValues); + const [newApp, newHeadlessService, newServices, , newClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(newFormValues); const oldApiService = this._getApplicationApiService(oldApp); const newApiService = this._getApplicationApiService(newApp); if (oldApiService !== newApiService) { - await this.delete(oldApp); - if (oldService) { - await this.KubernetesServiceService.delete(oldService); - } - if (newService) { - return ''; + // delete services first + if (oldServices) { + await this.KubernetesServiceService.delete(oldServices); } + + // delete the app + await this.delete(oldApp); + + // sleep for 5 seconds to allow the app/services to be deleted + await new Promise((r) => setTimeout(r, 5000)); + + // create the app return await this.create(newFormValues); } diff --git a/app/kubernetes/services/serviceService.js b/app/kubernetes/services/serviceService.js index 30aa82d07..2fa783a8c 100644 --- a/app/kubernetes/services/serviceService.js +++ b/app/kubernetes/services/serviceService.js @@ -101,8 +101,8 @@ class KubernetesServiceService { services.forEach(async (service) => { try { const params = new KubernetesCommonParams(); - params.id = service.metadata.name; - const namespace = service.metadata.namespace; + params.id = (service.metadata && service.metadata.name) || service.Name; + const namespace = (service.metadata && service.metadata.namespace) || service.Namespace; await this.KubernetesServices(namespace).delete(params).$promise; } catch (err) { // eslint-disable-next-line no-console