From becd2dce0fdcc5459bc683695812e1ea562e8858 Mon Sep 17 00:00:00 2001 From: Piyush Kumar Date: Mon, 29 Jan 2024 13:43:59 +0530 Subject: [PATCH] fix(console): updated target namespace to md5 hash namespace for below resource: - Project - Environment - Project Manage Service --- apps/console/internal/domain/environment.go | 10 +++++++++- .../internal/domain/project-managed-service.go | 14 ++++++++++++-- apps/console/internal/domain/project.go | 9 ++++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/apps/console/internal/domain/environment.go b/apps/console/internal/domain/environment.go index 51a522927..669b8d098 100644 --- a/apps/console/internal/domain/environment.go +++ b/apps/console/internal/domain/environment.go @@ -1,6 +1,8 @@ package domain import ( + "crypto/md5" + "encoding/hex" "fmt" "github.com/kloudlite/api/common/fields" @@ -116,7 +118,7 @@ func (d *domain) CreateEnvironment(ctx ConsoleContext, projectName string, env e env.IncrementRecordVersion() if env.Spec.TargetNamespace == "" { - env.Spec.TargetNamespace = fmt.Sprintf("env-%s", env.Name) + env.Spec.TargetNamespace = d.getEnvironmentTargetNamespace(projectName, env.Name) } if env.Spec.Routing == nil { @@ -396,6 +398,12 @@ func (d *domain) CloneEnvironment(ctx ConsoleContext, projectName string, source return destEnv, nil } +func (d *domain) getEnvironmentTargetNamespace(projectName string, envName string) string { + envNamespace := fmt.Sprintf("env-%s-%s", projectName, envName) + hash := md5.Sum([]byte(envNamespace)) + return fmt.Sprintf("env-%s", hex.EncodeToString(hash[:])) +} + func (d *domain) UpdateEnvironment(ctx ConsoleContext, projectName string, env entities.Environment) (*entities.Environment, error) { if err := d.canMutateResourcesInProject(ctx, projectName); err != nil { return nil, errors.NewE(err) diff --git a/apps/console/internal/domain/project-managed-service.go b/apps/console/internal/domain/project-managed-service.go index b9e781c10..0aa1ee58e 100644 --- a/apps/console/internal/domain/project-managed-service.go +++ b/apps/console/internal/domain/project-managed-service.go @@ -1,6 +1,8 @@ package domain import ( + "crypto/md5" + "encoding/hex" "fmt" "github.com/kloudlite/api/apps/console/internal/entities" @@ -71,10 +73,12 @@ func (d *domain) CreateProjectManagedService(ctx ConsoleContext, projectName str return nil, errors.NewE(err) } - service.Namespace = d.getProjectNamespace(projectName) + service.Namespace = d.getProjectTargetNamespace(projectName) service.IncrementRecordVersion() - service.Spec.TargetNamespace = fmt.Sprintf("%s-pmsvc-%s", projectName, service.Name) + if service.Spec.TargetNamespace == "" { + service.Spec.TargetNamespace = d.getPMSTargetNamespace(projectName, service.Name, entities.ResourceTypeProjectManagedService) + } service.CreatedBy = common.CreatedOrUpdatedBy{ UserId: ctx.UserId, @@ -125,6 +129,12 @@ func (d *domain) CreateProjectManagedService(ctx ConsoleContext, projectName str return pms, nil } +func (d *domain) getPMSTargetNamespace(projectName string, msvcName string, msvcType entities.ResourceType) string { + msvcNamespace := fmt.Sprintf("pmsvc-%s-%s-%s", projectName, msvcName, msvcType) + hash := md5.Sum([]byte(msvcNamespace)) + return fmt.Sprintf("pmsvc-%s", hex.EncodeToString(hash[:])) +} + func (d *domain) UpdateProjectManagedService(ctx ConsoleContext, projectName string, service entities.ProjectManagedService) (*entities.ProjectManagedService, error) { if err := d.canMutateResourcesInProject(ctx, projectName); err != nil { return nil, errors.NewE(err) diff --git a/apps/console/internal/domain/project.go b/apps/console/internal/domain/project.go index 92a2dc1dc..8753d4f5c 100644 --- a/apps/console/internal/domain/project.go +++ b/apps/console/internal/domain/project.go @@ -2,6 +2,8 @@ package domain import ( "context" + "crypto/md5" + "encoding/hex" "fmt" "github.com/kloudlite/api/common/fields" @@ -166,7 +168,7 @@ func (d *domain) CreateProject(ctx ConsoleContext, project entities.Project) (*e project.AccountName = ctx.AccountName if project.Spec.TargetNamespace == "" { - project.Spec.TargetNamespace = d.getProjectNamespace(project.Name) + project.Spec.TargetNamespace = d.getProjectTargetNamespace(project.Name) } prj, err := d.projectRepo.Create(ctx, &project) @@ -202,8 +204,9 @@ func (d *domain) CreateProject(ctx ConsoleContext, project entities.Project) (*e return prj, nil } -func (d *domain) getProjectNamespace(projectName string) string { - return fmt.Sprintf("prj-%s", projectName) +func (d *domain) getProjectTargetNamespace(projectName string) string { + hash := md5.Sum([]byte(projectName)) + return fmt.Sprintf("prj-%s", hex.EncodeToString(hash[:])) } func (d *domain) DeleteProject(ctx ConsoleContext, name string) error {