Fixed issue of leftovers after instace create failure 13/122913/1 honolulu
authorLukasz Rajewski <lukasz.rajewski@orange.com>
Mon, 9 Aug 2021 20:44:48 +0000 (22:44 +0200)
committerLukasz Rajewski <lukasz.rajewski@orange.com>
Mon, 9 Aug 2021 21:00:30 +0000 (21:00 +0000)
Fixed issue of leftovers after instace create failure

Issue-ID: MULTICLOUD-1269
Signed-off-by: Lukasz Rajewski <lukasz.rajewski@orange.com>
Change-Id: I69b4a170d72a482f29fd79ecdfc949f55c70a61a

src/k8splugin/internal/app/client.go
src/k8splugin/internal/app/instance.go

index 00fd8e9..405fdc3 100644 (file)
@@ -353,16 +353,17 @@ func (k *KubernetesClient) updateKind(resTempl helm.KubernetesResourceTemplate,
 func (k *KubernetesClient) createResources(sortedTemplates []helm.KubernetesResourceTemplate,
        namespace string) ([]helm.KubernetesResource, error) {
 
+       var createdResources []helm.KubernetesResource
+
        err := k.ensureNamespace(namespace)
        if err != nil {
-               return nil, pkgerrors.Wrap(err, "Creating Namespace")
+               return createdResources, pkgerrors.Wrap(err, "Creating Namespace")
        }
 
-       var createdResources []helm.KubernetesResource
        for _, resTempl := range sortedTemplates {
                resCreated, err := k.CreateKind(resTempl, namespace)
                if err != nil {
-                       return nil, pkgerrors.Wrapf(err, "Error creating kind: %+v", resTempl.GVK)
+                       return createdResources, pkgerrors.Wrapf(err, "Error creating kind: %+v", resTempl.GVK)
                }
                createdResources = append(createdResources, resCreated)
        }
index c1ec35b..4a326d5 100644 (file)
@@ -164,6 +164,10 @@ func (v *InstanceClient) Create(i InstanceRequest) (InstanceResponse, error) {
 
        createdResources, err := k8sClient.createResources(sortedTemplates, profile.Namespace)
        if err != nil {
+               if len(createdResources) > 0 {
+                       log.Printf("[Instance] Reverting created resources on Error: %s", err.Error())
+                       k8sClient.deleteResources(createdResources, profile.Namespace)
+               }
                return InstanceResponse{}, pkgerrors.Wrap(err, "Create Kubernetes Resources")
        }