From fb962181cf4a3a7038638d4757c5f060dd1f5b4f Mon Sep 17 00:00:00 2001 From: Serge Logvinov Date: Thu, 4 May 2023 12:19:50 +0300 Subject: [PATCH] test: more tests Check second cluster. --- Dockerfile | 7 ++++--- Makefile | 2 +- go.mod | 6 +++--- go.sum | 12 ++++++------ pkg/proxmox/instances.go | 4 ++-- pkg/proxmox/instances_test.go | 37 +++++++++++++++++++++++++++++++---- 6 files changed, 49 insertions(+), 19 deletions(-) diff --git a/Dockerfile b/Dockerfile index fc6e069..f106cc5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,10 +15,11 @@ RUN make build-all-archs ######################################## -FROM --platform=${TARGETARCH} gcr.io/distroless/static-debian11:nonroot AS release +FROM --platform=${TARGETARCH} scratch AS release LABEL org.opencontainers.image.source https://github.com/sergelogvinov/proxmox-cloud-controller-manager +COPY --from=gcr.io/distroless/static-debian11:nonroot . . ARG TARGETARCH -COPY --from=builder /src/bin/proxmox-cloud-controller-manager-${TARGETARCH} /proxmox-cloud-controller-manager +COPY --from=builder /src/bin/proxmox-cloud-controller-manager-${TARGETARCH} /bin/proxmox-cloud-controller-manager -ENTRYPOINT ["/proxmox-cloud-controller-manager"] +ENTRYPOINT ["/bin/proxmox-cloud-controller-manager"] diff --git a/Makefile b/Makefile index 3257bb4..d91ac7e 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ PLATFORM ?= linux/arm64,linux/amd64 PUSH ?= false SHA ?= $(shell git describe --match=none --always --abbrev=8 --dirty) -TAG ?= $(shell git describe --tag --always --match v[0-9]\*) +TAG ?= $(shell git describe --tag --always --match='v*') ifneq ($(TAG),edge) GO_LDFLAGS ?= -ldflags '-X k8s.io/component-base/version.gitVersion=$(TAG)' else diff --git a/go.mod b/go.mod index e384ba3..14a92f6 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/sergelogvinov/proxmox-cloud-controller-manager go 1.20 require ( - github.com/Telmate/proxmox-api-go v0.0.0-20230329163449-4d08b16c14e0 + github.com/Telmate/proxmox-api-go v0.0.0-20230418175406-5c7733d8993f github.com/jarcoal/httpmock v1.3.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.2 @@ -49,7 +49,7 @@ require ( github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0 // indirect github.com/imdario/mergo v0.3.6 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -65,7 +65,7 @@ require ( github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect - github.com/spf13/cobra v1.6.0 // indirect + github.com/spf13/cobra v1.7.0 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect go.etcd.io/etcd/api/v3 v3.5.7 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.7 // indirect diff --git a/go.sum b/go.sum index f90d293..95f425a 100644 --- a/go.sum +++ b/go.sum @@ -42,8 +42,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Telmate/proxmox-api-go v0.0.0-20230329163449-4d08b16c14e0 h1:RpMkhkY8Vd1fT0CaNxWjw9XVBTmPAErYJfiPxnwFHaM= -github.com/Telmate/proxmox-api-go v0.0.0-20230329163449-4d08b16c14e0/go.mod h1:zQ/B1nkMv6ueUlAEr0D/x5eaFe3rHSScuTc08dcvvPI= +github.com/Telmate/proxmox-api-go v0.0.0-20230418175406-5c7733d8993f h1:98l+ItjOwoQ30ODgPK8skac2eyYfti6fYHpPWn/v8H8= +github.com/Telmate/proxmox-api-go v0.0.0-20230418175406-5c7733d8993f/go.mod h1:HKwnwBcgJxT+UjTUyRP7+aDxXSgu0kLWvlrRhd4i1YU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -223,8 +223,8 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jarcoal/httpmock v1.3.0 h1:2RJ8GP0IIaWwcC9Fp2BmVi8Kog3v2Hn7VXM3fTd+nuc= github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= @@ -318,8 +318,8 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= -github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= diff --git a/pkg/proxmox/instances.go b/pkg/proxmox/instances.go index b533049..730e8b5 100644 --- a/pkg/proxmox/instances.go +++ b/pkg/proxmox/instances.go @@ -81,14 +81,14 @@ func (i *instances) InstanceShutdown(_ context.Context, node *v1.Node) (bool, er vmr, region, err := i.parseProviderID(node.Spec.ProviderID) if err != nil { - klog.Warningf("instances.InstanceShutdown() failed to parse providerID %s: %v", node.Spec.ProviderID, err) + klog.Errorf("instances.InstanceShutdown() failed to parse providerID %s: %v", node.Spec.ProviderID, err) return false, nil } px, err := i.c.GetProxmoxCluster(region) if err != nil { - klog.Warningf("instances.InstanceShutdown() failed to get Proxmox cluster: %v", err) + klog.Errorf("instances.InstanceShutdown() failed to get Proxmox cluster: %v", err) return false, nil } diff --git a/pkg/proxmox/instances_test.go b/pkg/proxmox/instances_test.go index 242474a..13cc4b3 100644 --- a/pkg/proxmox/instances_test.go +++ b/pkg/proxmox/instances_test.go @@ -90,10 +90,12 @@ clusters: return httpmock.NewJsonResponse(200, map[string]interface{}{ "data": []interface{}{ map[string]interface{}{ - "node": "pve-3", - "type": "qemu", - "vmid": 100, - "name": "cluster-2-node-1", + "node": "pve-3", + "type": "qemu", + "vmid": 100, + "name": "cluster-2-node-1", + "maxcpu": 1, + "maxmem": 2 * 1024 * 1024 * 1024, }, }, }) @@ -413,6 +415,33 @@ func (ts *ccmTestSuite) TestInstanceMetadata() { Zone: "pve-1", }, }, + { + msg: "NodeExistsCluster2", + node: &v1.Node{ + ObjectMeta: metav1.ObjectMeta{ + Name: "cluster-2-node-1", + Annotations: map[string]string{ + cloudproviderapi.AnnotationAlphaProvidedIPAddr: "1.2.3.4", + }, + }, + }, + expected: &cloudprovider.InstanceMetadata{ + ProviderID: "proxmox://cluster-2/100", + NodeAddresses: []v1.NodeAddress{ + { + Type: v1.NodeInternalIP, + Address: "1.2.3.4", + }, + { + Type: v1.NodeHostName, + Address: "cluster-2-node-1", + }, + }, + InstanceType: "1VCPU-2GB", + Region: "cluster-2", + Zone: "pve-3", + }, + }, } for _, testCase := range tests {