Skip to content
This repository was archived by the owner on Jun 11, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion apps/console/internal/domain/environment.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package domain

import (
"crypto/md5"
"encoding/hex"
"fmt"

"github.com/kloudlite/api/common/fields"
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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[:]))
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (llm): The use of MD5 for namespace generation is consistent across different domain functions. However, as previously mentioned, consider the implications of hash collisions and whether a stronger hash function would be more appropriate.

}

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)
Expand Down
14 changes: 12 additions & 2 deletions apps/console/internal/domain/project-managed-service.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package domain

import (
"crypto/md5"
"encoding/hex"
"fmt"

"github.com/kloudlite/api/apps/console/internal/entities"
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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[:]))
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (llm): Using MD5 for generating a part of the namespace could lead to potential hash collisions. While the risk is low, consider using a more collision-resistant hashing algorithm if the namespace uniqueness is critical.

}

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)
Expand Down
9 changes: 6 additions & 3 deletions apps/console/internal/domain/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package domain

import (
"context"
"crypto/md5"
"encoding/hex"
"fmt"

"github.com/kloudlite/api/common/fields"
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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 {
Expand Down