From 267e520fce68fa262f1c478c41ac92c82efca13f Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Mon, 18 Jan 2021 15:35:57 +0100 Subject: [PATCH] registry: basic merge of existing registry with generated registry config --- pkg/client/cluster.go | 2 ++ pkg/client/registry.go | 9 +++++++++ tests/assets/test_registries.yaml | 4 ++++ 3 files changed, 15 insertions(+) create mode 100644 tests/assets/test_registries.yaml diff --git a/pkg/client/cluster.go b/pkg/client/cluster.go index 4ce4950d..4920ecc1 100644 --- a/pkg/client/cluster.go +++ b/pkg/client/cluster.go @@ -188,6 +188,8 @@ func ClusterPrep(ctx context.Context, runtime k3drt.Runtime, clusterConfig *conf if err != nil { return fmt.Errorf("Failed to generate registry config file for k3s: %+v", err) } + RegistryMergeConfig(ctx, regConf, clusterConfig.ClusterCreateOpts.Registries.Config) + log.Tracef("Merged registry config: %+v", regConf) regConfBytes, err := yaml.Marshal(®Conf) if err != nil { return fmt.Errorf("Failed to marshal registry configuration: %+v", err) diff --git a/pkg/client/registry.go b/pkg/client/registry.go index 05a8f557..f14d79ca 100644 --- a/pkg/client/registry.go +++ b/pkg/client/registry.go @@ -26,6 +26,7 @@ import ( "fmt" "github.com/docker/go-connections/nat" + "github.com/imdario/mergo" "github.com/rancher/k3d/v4/pkg/runtimes" k3d "github.com/rancher/k3d/v4/pkg/types" "github.com/rancher/k3d/v4/pkg/types/k3s" @@ -305,3 +306,11 @@ func RegistryGenerateLocalRegistryHostingConfigMapYAML(ctx context.Context, regi return cmYaml, nil } + +// RegistryMergeConfig merges a source registry config into an existing dest registry cofnig +func RegistryMergeConfig(ctx context.Context, dest, src *k3s.Registry) error { + if err := mergo.MergeWithOverwrite(dest, src); err != nil { + return fmt.Errorf("Failed to merge registry configs: %+v", err) + } + return nil +} diff --git a/tests/assets/test_registries.yaml b/tests/assets/test_registries.yaml new file mode 100644 index 00000000..c9fa033a --- /dev/null +++ b/tests/assets/test_registries.yaml @@ -0,0 +1,4 @@ +mirrors: + "my.company.registry": + endpoint: + - http://my.company.registry:5000 \ No newline at end of file