From f8c32e1e8ee658fa68e19d20978a00ff7dd1aa8a Mon Sep 17 00:00:00 2001 From: Serge Logvinov Date: Mon, 8 May 2023 14:52:21 +0300 Subject: [PATCH] test: cloud config Check cluster config params. --- Dockerfile | 4 +++- pkg/cluster/cloud_config.go | 19 +++++++++++++++++++ pkg/cluster/cloud_config_test.go | 10 ++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c15ec57..ca59280 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,9 @@ RUN make build-all-archs ######################################## FROM --platform=${TARGETARCH} scratch AS release -LABEL org.opencontainers.image.source https://github.com/sergelogvinov/proxmox-cloud-controller-manager +LABEL org.opencontainers.image.source https://github.com/sergelogvinov/proxmox-cloud-controller-manager \ + org.opencontainers.image.licenses = "Apache-2.0" \ + org.opencontainers.image.description = "Proxmox VE CCM for Kubernetes" COPY --from=gcr.io/distroless/static-debian11:nonroot . . ARG TARGETARCH diff --git a/pkg/cluster/cloud_config.go b/pkg/cluster/cloud_config.go index d7d4bf5..d5f8f9f 100644 --- a/pkg/cluster/cloud_config.go +++ b/pkg/cluster/cloud_config.go @@ -21,6 +21,7 @@ import ( "io" "os" "path/filepath" + "strings" yaml "gopkg.in/yaml.v3" ) @@ -46,6 +47,24 @@ func ReadCloudConfig(config io.Reader) (ClustersConfig, error) { } } + for idx, c := range cfg.Clusters { + if c.TokenID == "" { + return ClustersConfig{}, fmt.Errorf("cluster #%d: token_id is required", idx+1) + } + + if c.TokenSecret == "" { + return ClustersConfig{}, fmt.Errorf("cluster #%d: token_secret is required", idx+1) + } + + if c.Region == "" { + return ClustersConfig{}, fmt.Errorf("cluster #%d: region is required", idx+1) + } + + if c.URL == "" || !strings.HasPrefix(c.URL, "http") { + return ClustersConfig{}, fmt.Errorf("cluster #%d: url is required", idx+1) + } + } + return cfg, nil } diff --git a/pkg/cluster/cloud_config_test.go b/pkg/cluster/cloud_config_test.go index 622e46a..a24d214 100644 --- a/pkg/cluster/cloud_config_test.go +++ b/pkg/cluster/cloud_config_test.go @@ -46,6 +46,16 @@ clusters: assert.NotNil(t, err) assert.NotNil(t, cfg) + // Non full config + cfg, err = cluster.ReadCloudConfig(strings.NewReader(` +clusters: +- url: abcd + region: cluster-1 +`)) + + assert.NotNil(t, err) + assert.NotNil(t, cfg) + // Valid config with one cluster cfg, err = cluster.ReadCloudConfig(strings.NewReader(` clusters: