diff --git a/core/cautils/customerloader.go b/core/cautils/customerloader.go index 4016cbeb..a2a0fe8b 100644 --- a/core/cautils/customerloader.go +++ b/core/cautils/customerloader.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "os" + "regexp" "strings" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -468,7 +469,11 @@ func DeleteConfigFile() error { } func AdoptClusterName(clusterName string) string { - return strings.ReplaceAll(clusterName, "/", "-") + re, err := regexp.Compile(`[^\w]+`) + if err != nil { + return clusterName + } + return re.ReplaceAllString(clusterName, "-") } func getConfigMapName() string { diff --git a/core/cautils/customerloader_test.go b/core/cautils/customerloader_test.go index 3a17106f..8a7f1ce5 100644 --- a/core/cautils/customerloader_test.go +++ b/core/cautils/customerloader_test.go @@ -191,3 +191,34 @@ func TestLoadConfigFromData(t *testing.T) { } } + +func TestAdoptClusterName(t *testing.T) { + tests := []struct { + name string + clusterName string + want string + }{ + { + name: "replace 1", + clusterName: "my-name__is--ks", + want: "my-name__is-ks", + }, + { + name: "replace 2", + clusterName: "my-name1", + want: "my-name1", + }, + { + name: "replace 3", + clusterName: "my:name", + want: "my-name", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := AdoptClusterName(tt.clusterName); got != tt.want { + t.Errorf("AdoptClusterName() = %v, want %v", got, tt.want) + } + }) + } +}