From e8080adbf38c807d156275aa8f6b6c6c5ad3f544 Mon Sep 17 00:00:00 2001 From: nxtcoder17 Date: Tue, 6 Feb 2024 19:23:09 +0530 Subject: [PATCH] fix(apps/console): updates mres '.spec.resourceName' when cloning managed resources gh-issue: #252 --- apps/console/internal/domain/environment.go | 31 ++++++++++++++------- apps/console/internal/domain/mres.go | 6 +++- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/apps/console/internal/domain/environment.go b/apps/console/internal/domain/environment.go index f9abf7d67..ee1d7f674 100644 --- a/apps/console/internal/domain/environment.go +++ b/apps/console/internal/domain/environment.go @@ -215,6 +215,15 @@ func (d *domain) CloneEnvironment(ctx ConsoleContext, projectName string, source return nil, errors.NewE(err) } + if _, err := d.iamClient.AddMembership(ctx, &iam.AddMembershipIn{ + UserId: string(ctx.UserId), + ResourceType: string(iamT.ResourceEnvironment), + ResourceRef: iamT.NewResourceRef(ctx.AccountName, iamT.ResourceEnvironment, destEnv.Spec.TargetNamespace), + Role: string(iamT.RoleResourceOwner), + }); err != nil { + d.logger.Errorf(err, "error while adding membership") + } + destEnv, err = d.environmentRepo.Create(ctx, destEnv) if err != nil { return nil, errors.NewE(err) @@ -224,6 +233,15 @@ func (d *domain) CloneEnvironment(ctx ConsoleContext, projectName string, source return nil, errors.NewE(err) } + if err := d.applyK8sResource(ctx, sourceEnv.ProjectName, &corev1.Namespace{ + TypeMeta: metav1.TypeMeta{APIVersion: "v1", Kind: "Namespace"}, + ObjectMeta: metav1.ObjectMeta{ + Name: destEnv.Spec.TargetNamespace, + }, + }, destEnv.RecordVersion); err != nil { + return nil, errors.NewE(err) + } + if err := d.applyK8sResource(ctx, sourceEnv.ProjectName, &destEnv.Environment, destEnv.RecordVersion); err != nil { return nil, errors.NewE(err) } @@ -370,11 +388,13 @@ func (d *domain) CloneEnvironment(ctx ConsoleContext, projectName string, source } for i := range managedResources { + spec := managedResources[i].Spec + spec.ResourceName = genMresResourceName(destEnv.Name, managedResources[i].Name) if _, err := d.createAndApplyManagedResource(resCtx, &entities.ManagedResource{ ManagedResource: crdsv1.ManagedResource{ TypeMeta: managedResources[i].TypeMeta, ObjectMeta: objectMeta(managedResources[i].ObjectMeta, destEnv.Spec.TargetNamespace), - Spec: managedResources[i].Spec, + Spec: spec, Enabled: managedResources[i].Enabled, }, AccountName: ctx.AccountName, @@ -386,15 +406,6 @@ func (d *domain) CloneEnvironment(ctx ConsoleContext, projectName string, source } } - if _, err := d.iamClient.AddMembership(ctx, &iam.AddMembershipIn{ - UserId: string(ctx.UserId), - ResourceType: string(iamT.ResourceEnvironment), - ResourceRef: iamT.NewResourceRef(ctx.AccountName, iamT.ResourceEnvironment, destEnv.Spec.TargetNamespace), - Role: string(iamT.RoleResourceOwner), - }); err != nil { - d.logger.Errorf(err, "error while adding membership") - } - return destEnv, nil } diff --git a/apps/console/internal/domain/mres.go b/apps/console/internal/domain/mres.go index 5fa339439..8503b58ef 100644 --- a/apps/console/internal/domain/mres.go +++ b/apps/console/internal/domain/mres.go @@ -154,11 +154,15 @@ func (d *domain) CreateManagedResource(ctx ResourceContext, mres entities.Manage mres.ProjectName = ctx.ProjectName mres.EnvironmentName = ctx.EnvironmentName - mres.Spec.ResourceName = fmt.Sprintf("env-%s-%s", ctx.EnvironmentName, mres.Name) + mres.Spec.ResourceName = genMresResourceName(ctx.EnvironmentName, mres.Name) return d.createAndApplyManagedResource(ctx, &mres) } +func genMresResourceName(envName string, mresName string) string { + return fmt.Sprintf("env-%s-%s", envName, mresName) +} + func (d *domain) createAndApplyManagedResource(ctx ResourceContext, mres *entities.ManagedResource) (*entities.ManagedResource, error) { mres.SyncStatus = t.GenSyncStatus(t.SyncActionApply, 0)