From a6320d522276d9ec9ca7416b0375d63b30b96ab2 Mon Sep 17 00:00:00 2001 From: cong meng Date: Tue, 22 Dec 2020 13:38:54 +1300 Subject: [PATCH] fix(frontend) unable to retrieve config map error when trying to manage newly created resource pool (ce#180) (#4618) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend) unable to retrieve config map error when trying to manage newly created resource pool (ce#180) * fix(frontend) rephrase comments (#4629) Co-authored-by: Stéphane Busso Co-authored-by: Simon Meng Co-authored-by: Stéphane Busso --- app/kubernetes/services/configMapService.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/kubernetes/services/configMapService.js b/app/kubernetes/services/configMapService.js index be863eaeb..b8ebbe38b 100644 --- a/app/kubernetes/services/configMapService.js +++ b/app/kubernetes/services/configMapService.js @@ -28,8 +28,19 @@ class KubernetesConfigMapService { this.KubernetesConfigMaps(namespace).get(params).$promise, this.KubernetesConfigMaps(namespace).getYaml(params).$promise, ]); - const configMap = KubernetesConfigMapConverter.apiToConfigMap(rawPromise.value, yamlPromise.value); - return configMap; + + if (_.get(rawPromise, 'reason.status') == 404 && _.get(yamlPromise, 'reason.status') == 404) { + return KubernetesConfigMapConverter.defaultConfigMap(namespace, name); + } + + // Saving binary data to 'data' field in configMap Object is not allowed by kubernetes and getYaml() may get + // an error. We should keep binary data to 'binaryData' field instead of 'data'. Before that, we + // use response from get() and ignore 500 error as a workaround. + if (rawPromise.value) { + return KubernetesConfigMapConverter.apiToConfigMap(rawPromise.value, yamlPromise.value); + } + + throw new PortainerError('Unable to retrieve config map ', name); } catch (err) { if (err.status === 404) { return KubernetesConfigMapConverter.defaultConfigMap(namespace, name);