From 05aa0ba53041a0f76733e031179bdeb9dcade540 Mon Sep 17 00:00:00 2001 From: Abdhesh Nayak Date: Fri, 19 Jul 2024 11:44:48 +0530 Subject: [PATCH 1/2] :art: Added env resources deletion when env is deleted --- apps/accounts/internal/domain/accounts.go | 3 +- apps/console/internal/domain/environment.go | 40 ++++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/apps/accounts/internal/domain/accounts.go b/apps/accounts/internal/domain/accounts.go index d2d7cc675..4f28d10c9 100644 --- a/apps/accounts/internal/domain/accounts.go +++ b/apps/accounts/internal/domain/accounts.go @@ -91,7 +91,8 @@ func (d *domain) ensureNamespaceForAccount(ctx context.Context, accountName stri } func (d *domain) deleteNamespaceForAccount(ctx context.Context, targetNamespace string) error { - panic("not implemented. Yet to decide if we want to delete namespace when account is deleted") + // panic("not implemented. Yet to decide if we want to delete namespace when account is deleted") + return fmt.Errorf("not supported yet") } func (d *domain) ensureKloudliteRegistryCredentials(ctx UserContext, account *entities.Account) error { diff --git a/apps/console/internal/domain/environment.go b/apps/console/internal/domain/environment.go index b7837af37..649ccf5b0 100644 --- a/apps/console/internal/domain/environment.go +++ b/apps/console/internal/domain/environment.go @@ -24,6 +24,35 @@ import ( t "github.com/kloudlite/api/pkg/types" ) +func (d *domain) cleanupEnvironment(ctx ConsoleContext, envName string) error { + filter := repos.Filter{ + fields.AccountName: ctx.AccountName, + fields.EnvironmentName: envName, + } + + if err := d.appRepo.DeleteMany(ctx, filter); err != nil { + return errors.NewE(err) + } + + if err := d.externalAppRepo.DeleteMany(ctx, filter); err != nil { + return errors.NewE(err) + } + + if err := d.secretRepo.DeleteMany(ctx, filter); err != nil { + return errors.NewE(err) + } + + if err := d.configRepo.DeleteMany(ctx, filter); err != nil { + return errors.NewE(err) + } + + if err := d.routerRepo.DeleteMany(ctx, filter); err != nil { + return errors.NewE(err) + } + + return nil +} + func (d *domain) findEnvironment(ctx ConsoleContext, name string) (*entities.Environment, error) { env, err := d.environmentRepo.FindOne(ctx, repos.Filter{ fields.AccountName: ctx.AccountName, @@ -553,18 +582,21 @@ func (d *domain) OnEnvironmentApplyError(ctx ConsoleContext, errMsg, namespace, } func (d *domain) OnEnvironmentDeleteMessage(ctx ConsoleContext, env entities.Environment) error { - err := d.environmentRepo.DeleteOne( + if err := d.cleanupEnvironment(ctx, env.Name); err != nil { + return errors.NewE(err) + } + + if err := d.environmentRepo.DeleteOne( ctx, repos.Filter{ fields.AccountName: ctx.AccountName, fields.MetadataName: env.Name, }, - ) - if err != nil { + ); err != nil { return errors.NewE(err) } - if _, err = d.iamClient.RemoveResource(ctx, &iam.RemoveResourceIn{ + if _, err := d.iamClient.RemoveResource(ctx, &iam.RemoveResourceIn{ ResourceRef: iamT.NewResourceRef(ctx.AccountName, iamT.ResourceEnvironment, env.Name), }); err != nil { return errors.NewE(err) From fb68881a0fc17caf5e16b3015d591835266d4755 Mon Sep 17 00:00:00 2001 From: Abdhesh Nayak Date: Fri, 19 Jul 2024 13:17:57 +0530 Subject: [PATCH 2/2] :art: Added imported-mres for deletion while deleting environment --- apps/console/internal/domain/environment.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apps/console/internal/domain/environment.go b/apps/console/internal/domain/environment.go index 649ccf5b0..ce18b88ce 100644 --- a/apps/console/internal/domain/environment.go +++ b/apps/console/internal/domain/environment.go @@ -50,6 +50,10 @@ func (d *domain) cleanupEnvironment(ctx ConsoleContext, envName string) error { return errors.NewE(err) } + if err := d.importedMresRepo.DeleteMany(ctx, filter); err != nil { + return errors.NewE(err) + } + return nil } @@ -544,6 +548,10 @@ func (d *domain) DeleteEnvironment(ctx ConsoleContext, name string) error { d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeEnvironment, uenv.Name, PublishUpdate) if uenv.IsArchived != nil && *uenv.IsArchived { + if err := d.cleanupEnvironment(ctx, name); err != nil { + return errors.NewE(err) + } + return d.environmentRepo.DeleteById(ctx, uenv.Id) }