package mapper import ( "reflect" "strings" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/constants" ) const ( registriesKey = "REGISTRIES" mirrorRegistriesKey = "MIRROR_REGISTRIES" edgeRegistry = "https://us-east1-docker.pkg.dev" localRegistry30020 = "http://127.0.0.1:30020" localRegistry30021 = "http://127.0.0.1:30021" ) func CreateSpegelConfigMap(artifactRegistries []*model.ArtifactRegistry) *corev1.ConfigMap { urls := urlsFromArtifactRegistries(artifactRegistries) return spegelConfig(urls) } func urlsFromArtifactRegistries(artifactRegistries []*model.ArtifactRegistry) []string { urls := []string{} for _, artifactRegistry := range artifactRegistries { urls = append(urls, artifactRegistry.URL) } return urls } func spegelConfig(urls []string) *corev1.ConfigMap { return &corev1.ConfigMap{ TypeMeta: metav1.TypeMeta{ Kind: reflect.TypeOf(corev1.ConfigMap{}).Name(), APIVersion: corev1.SchemeGroupVersion.String(), }, ObjectMeta: metav1.ObjectMeta{ Name: constants.SpegelConfig, Namespace: constants.SpegelNamespace, }, Data: map[string]string{ registriesKey: registriesValue(urls), mirrorRegistriesKey: mirrorRegistriesValue(urls), }, } } func registriesValue(urls []string) string { registries := []string{ edgeRegistry, } registries = append(registries, urls...) return strings.Join(registries, ",") } func mirrorRegistriesValue(urls []string) string { mirrorRegistries := []string{ localRegistry30020, localRegistry30021, edgeRegistry, } mirrorRegistries = append(mirrorRegistries, urls...) return strings.Join(mirrorRegistries, ",") }