diff --git a/.golangci.yaml b/.golangci.yaml index fe5d6847..ce60dd32 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -13,6 +13,7 @@ linters: - gosec - importas - misspell + - modernize - nilerr - nolintlint - prealloc diff --git a/go.mod b/go.mod index 1af81f00..4e16152f 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/stackitcloud/gardener-extension-provider-stackit/v2 -go 1.25.6 - -toolchain go1.26.1 +go 1.26.1 require ( github.com/Masterminds/semver/v3 v3.4.0 diff --git a/pkg/admission/mutator/mutator.go b/pkg/admission/mutator/mutator.go index e6fac459..2805a361 100644 --- a/pkg/admission/mutator/mutator.go +++ b/pkg/admission/mutator/mutator.go @@ -8,7 +8,6 @@ import ( extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -32,7 +31,7 @@ func New(mgr manager.Manager) (*extensionswebhook.Webhook, error) { Path: "/webhooks/mutate", Mutators: map[extensionswebhook.Mutator][]extensionswebhook.Type{ NewShootMutator(mgr): {{Obj: &gardencorev1beta1.Shoot{}}}, - NewNamespacedCloudProfileMutator(mgr): {{Obj: &gardencorev1beta1.NamespacedCloudProfile{}, Subresource: ptr.To("status")}}, + NewNamespacedCloudProfileMutator(mgr): {{Obj: &gardencorev1beta1.NamespacedCloudProfile{}, Subresource: new("status")}}, }, Target: extensionswebhook.TargetSeed, ObjectSelector: &metav1.LabelSelector{ diff --git a/pkg/admission/mutator/namespacedcloudprofile_test.go b/pkg/admission/mutator/namespacedcloudprofile_test.go index 7430947a..069efc06 100644 --- a/pkg/admission/mutator/namespacedcloudprofile_test.go +++ b/pkg/admission/mutator/namespacedcloudprofile_test.go @@ -17,7 +17,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -66,7 +65,7 @@ var _ = Describe("NamespacedCloudProfile Mutator", func() { }) It("should skip if NamespacedCloudProfile is in deletion phase", func() { - namespacedCloudProfile.DeletionTimestamp = ptr.To(metav1.Now()) + namespacedCloudProfile.DeletionTimestamp = new(metav1.Now()) expectedProfile := namespacedCloudProfile.DeepCopy() Expect(namespacedCloudProfileMutator.Mutate(ctx, namespacedCloudProfile, nil)).To(Succeed()) @@ -140,7 +139,7 @@ var _ = Describe("NamespacedCloudProfile Mutator", func() { "Name": Equal("image-1"), "Versions": ContainElements( stackitv1alpha1.MachineImageVersion{Version: "1.0", Image: "image-name-1", Regions: []stackitv1alpha1.RegionIDMapping{{Name: "image-region-1", ID: "id-img-reg-1"}}}, - stackitv1alpha1.MachineImageVersion{Version: "1.1", Image: "image-name-2", Regions: []stackitv1alpha1.RegionIDMapping{{Name: "image-region-2", ID: "id-img-reg-2", Architecture: ptr.To("armhf")}}}, + stackitv1alpha1.MachineImageVersion{Version: "1.1", Image: "image-name-2", Regions: []stackitv1alpha1.RegionIDMapping{{Name: "image-region-2", ID: "id-img-reg-2", Architecture: new("armhf")}}}, ), }), MatchFields(IgnoreExtras, Fields{ diff --git a/pkg/admission/mutator/shoot.go b/pkg/admission/mutator/shoot.go index 2b565288..94d53dcc 100644 --- a/pkg/admission/mutator/shoot.go +++ b/pkg/admission/mutator/shoot.go @@ -15,7 +15,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/runtime/serializer/json" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -120,7 +119,7 @@ func isShootInMigrationOrRestorePhase(shoot *gardencorev1beta1.Shoot) bool { // and disables the ntp service. func (s *shoot) mutateMachineImageVersion(shoot *gardencorev1beta1.Shoot) error { ptpOverride := configv1alpha1.ExtensionConfig{NTP: &configv1alpha1.NTPConfig{ - Enabled: ptr.To(false), + Enabled: new(false), }} providerConfigBuf := new(bytes.Buffer) err := encoder.Encode(&ptpOverride, providerConfigBuf) diff --git a/pkg/admission/mutator/shoot_test.go b/pkg/admission/mutator/shoot_test.go index f511bd1b..85c9afcf 100644 --- a/pkg/admission/mutator/shoot_test.go +++ b/pkg/admission/mutator/shoot_test.go @@ -17,7 +17,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/runtime/serializer/json" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit" ) @@ -53,7 +52,7 @@ var _ = Describe("Shoot mutator", func() { // Prepare the expected RawExtension for ProviderConfig ptpOverride := configv1alpha1.ExtensionConfig{NTP: &configv1alpha1.NTPConfig{ - Enabled: ptr.To(false), + Enabled: new(false), }} buffer := new(bytes.Buffer) @@ -71,7 +70,7 @@ var _ = Describe("Shoot mutator", func() { Kubernetes: gardencorev1beta1.Kubernetes{ Version: "1.28.2", }, - SeedName: ptr.To("stackit"), + SeedName: new("stackit"), Provider: gardencorev1beta1.Provider{ Type: stackit.Type, Workers: []gardencorev1beta1.Worker{ @@ -81,7 +80,7 @@ var _ = Describe("Shoot mutator", func() { Type: "c1.2", Image: &gardencorev1beta1.ShootMachineImage{ Name: "coreos", - Version: ptr.To("4152.2.3"), + Version: new("4152.2.3"), }, }, }, @@ -91,7 +90,7 @@ var _ = Describe("Shoot mutator", func() { Type: "c1.2", Image: &gardencorev1beta1.ShootMachineImage{ Name: "ubuntu", // Non-coreos - Version: ptr.To("22.04"), + Version: new("22.04"), }, }, }, @@ -99,8 +98,8 @@ var _ = Describe("Shoot mutator", func() { }, Region: "eu01", Networking: &gardencorev1beta1.Networking{ - Nodes: ptr.To("10.250.0.0/16"), - Type: ptr.To("calico"), + Nodes: new("10.250.0.0/16"), + Type: new("calico"), IPFamilies: []gardencorev1beta1.IPFamily{gardencorev1beta1.IPFamilyIPv4}, }, }, @@ -123,7 +122,7 @@ var _ = Describe("Shoot mutator", func() { Type: gardencorev1beta1.LastOperationTypeReconcile, State: gardencorev1beta1.LastOperationStateProcessing, } - shoot.Status.SeedName = ptr.To("gcp-new") // Different from Spec.SeedName + shoot.Status.SeedName = new("gcp-new") // Different from Spec.SeedName shootExpected := shoot.DeepCopy() err := shootMutator.Mutate(ctx, shoot, oldShoot) @@ -202,7 +201,7 @@ var _ = Describe("Shoot mutator", func() { Expect(err).NotTo(HaveOccurred()) // worker1 (coreos 4152.2.3) - should not get ProviderConfig because version < 4230.2.1 - Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(ptr.To("4152.2.3"))) + Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(new("4152.2.3"))) Expect(shoot.Spec.Provider.Workers[0].Machine.Image.ProviderConfig).To(BeNil()) // worker2 (ubuntu 22.04) - should be untouched @@ -210,13 +209,13 @@ var _ = Describe("Shoot mutator", func() { }) It("should not mutate image version but should set ProviderConfig for coreos worker with exact target version", func() { - shoot.Spec.Provider.Workers[0].Machine.Image.Version = ptr.To(FlatcarImageVersion) // Set to exact target + shoot.Spec.Provider.Workers[0].Machine.Image.Version = new(FlatcarImageVersion) // Set to exact target err := shootMutator.Mutate(ctx, shoot, nil) Expect(err).NotTo(HaveOccurred()) // Version should remain FlatcarImageVersion - Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(ptr.To(FlatcarImageVersion))) + Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(new(FlatcarImageVersion))) // ProviderConfig should be set (because version >= FlatcarImageVersion) Expect(shoot.Spec.Provider.Workers[0].Machine.Image.ProviderConfig).To(DeepEqual(expectedPTPDisabledProviderConfig)) @@ -225,13 +224,13 @@ var _ = Describe("Shoot mutator", func() { }) It("should not mutate image version but should set ProviderConfig for coreos worker with newer version", func() { - shoot.Spec.Provider.Workers[0].Machine.Image.Version = ptr.To("4300.0.0") // Newer version + shoot.Spec.Provider.Workers[0].Machine.Image.Version = new("4300.0.0") // Newer version err := shootMutator.Mutate(ctx, shoot, nil) Expect(err).NotTo(HaveOccurred()) // Version should remain 4300.0.0 - Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(ptr.To("4300.0.0"))) + Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(new("4300.0.0"))) // ProviderConfig should be set (because version >= FlatcarImageVersion) Expect(shoot.Spec.Provider.Workers[0].Machine.Image.ProviderConfig).To(DeepEqual(expectedPTPDisabledProviderConfig)) }) @@ -241,7 +240,7 @@ var _ = Describe("Shoot mutator", func() { Expect(err).NotTo(HaveOccurred()) // Version should remain 4152.2.3 (not mutated) - Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(ptr.To("4152.2.3"))) + Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(new("4152.2.3"))) // ProviderConfig should be nil (because version < FlatcarImageVersion) Expect(shoot.Spec.Provider.Workers[0].Machine.Image.ProviderConfig).To(BeNil()) }) @@ -253,7 +252,7 @@ var _ = Describe("Shoot mutator", func() { Machine: gardencorev1beta1.Machine{ Image: &gardencorev1beta1.ShootMachineImage{ Name: "coreos", - Version: ptr.To("4100.0.0"), // Older + Version: new("4100.0.0"), // Older }, }, }, @@ -262,7 +261,7 @@ var _ = Describe("Shoot mutator", func() { Machine: gardencorev1beta1.Machine{ Image: &gardencorev1beta1.ShootMachineImage{ Name: "coreos", - Version: ptr.To("4230.2.1"), // Exact target + Version: new("4230.2.1"), // Exact target }, }, }, @@ -271,7 +270,7 @@ var _ = Describe("Shoot mutator", func() { Machine: gardencorev1beta1.Machine{ Image: &gardencorev1beta1.ShootMachineImage{ Name: "coreos", - Version: ptr.To("4500.0.0"), // Newer + Version: new("4500.0.0"), // Newer }, }, }, @@ -280,7 +279,7 @@ var _ = Describe("Shoot mutator", func() { Machine: gardencorev1beta1.Machine{ Image: &gardencorev1beta1.ShootMachineImage{ Name: "suse-jeos", - Version: ptr.To("15.5"), + Version: new("15.5"), }, }, }, @@ -292,15 +291,15 @@ var _ = Describe("Shoot mutator", func() { Expect(err).NotTo(HaveOccurred()) // old-coreos: version unchanged, ProviderConfig nil - Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(ptr.To("4100.0.0"))) + Expect(shoot.Spec.Provider.Workers[0].Machine.Image.Version).To(Equal(new("4100.0.0"))) Expect(shoot.Spec.Provider.Workers[0].Machine.Image.ProviderConfig).To(BeNil()) // new-coreos: version unchanged, ProviderConfig set - Expect(shoot.Spec.Provider.Workers[1].Machine.Image.Version).To(Equal(ptr.To("4230.2.1"))) + Expect(shoot.Spec.Provider.Workers[1].Machine.Image.Version).To(Equal(new("4230.2.1"))) Expect(shoot.Spec.Provider.Workers[1].Machine.Image.ProviderConfig).To(DeepEqual(expectedPTPDisabledProviderConfig)) // newer-coreos: version unchanged, ProviderConfig set - Expect(shoot.Spec.Provider.Workers[2].Machine.Image.Version).To(Equal(ptr.To("4500.0.0"))) + Expect(shoot.Spec.Provider.Workers[2].Machine.Image.Version).To(Equal(new("4500.0.0"))) Expect(shoot.Spec.Provider.Workers[2].Machine.Image.ProviderConfig).To(DeepEqual(expectedPTPDisabledProviderConfig)) // other-os: untouched diff --git a/pkg/admission/validator/namespacedcloudprofile_test.go b/pkg/admission/validator/namespacedcloudprofile_test.go index fa028c91..2c63f349 100644 --- a/pkg/admission/validator/namespacedcloudprofile_test.go +++ b/pkg/admission/validator/namespacedcloudprofile_test.go @@ -18,7 +18,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/validation/field" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -77,7 +76,7 @@ var _ = Describe("NamespacedCloudProfile Validator", func() { }) It("should succeed if NamespacedCloudProfile is in deletion phase", func() { - namespacedCloudProfile.DeletionTimestamp = ptr.To(metav1.Now()) + namespacedCloudProfile.DeletionTimestamp = new(metav1.Now()) Expect(namespacedCloudProfileValidator.Validate(ctx, namespacedCloudProfile, nil)).To(Succeed()) }) diff --git a/pkg/apis/config/loader/loader_test.go b/pkg/apis/config/loader/loader_test.go index 4bb0955d..15dcdb26 100644 --- a/pkg/apis/config/loader/loader_test.go +++ b/pkg/apis/config/loader/loader_test.go @@ -22,10 +22,10 @@ func TestLoader(t *testing.T) { var _ = Describe("Loader", func() { Describe("#Load", func() { buildConfigYAML := func(customLabelDomain string) []byte { - return []byte(fmt.Sprintf(`apiVersion: stackit.provider.extensions.config.stackit.cloud/v1alpha1 + return fmt.Appendf(nil, `apiVersion: stackit.provider.extensions.config.stackit.cloud/v1alpha1 kind: ControllerConfiguration customLabelDomain: %s -`, customLabelDomain)) +`, customLabelDomain) } It("should apply defaults when data is empty", func() { diff --git a/pkg/apis/stackit/helper/helper.go b/pkg/apis/stackit/helper/helper.go index d123bcab..3d84a46f 100644 --- a/pkg/apis/stackit/helper/helper.go +++ b/pkg/apis/stackit/helper/helper.go @@ -86,7 +86,7 @@ func FindImageFromCloudProfile(cloudProfileConfig *stackitv1alpha1.CloudProfileC return &stackitv1alpha1.MachineImage{ Name: imageName, Version: imageVersion, - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), Image: version.Image, }, nil } diff --git a/pkg/apis/stackit/helper/helper_test.go b/pkg/apis/stackit/helper/helper_test.go index aa3db2f0..047cc5e2 100644 --- a/pkg/apis/stackit/helper/helper_test.go +++ b/pkg/apis/stackit/helper/helper_test.go @@ -7,7 +7,6 @@ package helper_test import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "k8s.io/utils/ptr" . "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/helper" stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" @@ -70,7 +69,7 @@ var _ = Describe("Helper", func() { nil, true, ), Entry("entry not found (architecture mismatch)", - []stackitv1alpha1.MachineImage{{Name: "bar", Version: "1.2.3", Architecture: ptr.To("amd64")}}, + []stackitv1alpha1.MachineImage{{Name: "bar", Version: "1.2.3", Architecture: new("amd64")}}, "bar", "1.2.3", "arm64", nil, true, ), @@ -85,22 +84,22 @@ var _ = Describe("Helper", func() { &stackitv1alpha1.MachineImage{Name: "bar", Version: "1.2.3"}, false, ), Entry("entry exists (architecture amd64)", - []stackitv1alpha1.MachineImage{{Name: "bar", Version: "1.2.3", Architecture: ptr.To("amd64")}}, + []stackitv1alpha1.MachineImage{{Name: "bar", Version: "1.2.3", Architecture: new("amd64")}}, "bar", "1.2.3", "amd64", - &stackitv1alpha1.MachineImage{Name: "bar", Version: "1.2.3", Architecture: ptr.To("amd64")}, false, + &stackitv1alpha1.MachineImage{Name: "bar", Version: "1.2.3", Architecture: new("amd64")}, false, ), Entry("entry exists (architecture arm64)", - []stackitv1alpha1.MachineImage{{Name: "bar", Version: "1.2.3", Architecture: ptr.To("arm64")}}, + []stackitv1alpha1.MachineImage{{Name: "bar", Version: "1.2.3", Architecture: new("arm64")}}, "bar", "1.2.3", "arm64", - &stackitv1alpha1.MachineImage{Name: "bar", Version: "1.2.3", Architecture: ptr.To("arm64")}, false, + &stackitv1alpha1.MachineImage{Name: "bar", Version: "1.2.3", Architecture: new("arm64")}, false, ), Entry("entry exists (multiple architectures)", []stackitv1alpha1.MachineImage{ - {Name: "bar", Version: "1.2.3", ID: "amd", Architecture: ptr.To("amd64")}, - {Name: "bar", Version: "1.2.3", ID: "arm", Architecture: ptr.To("arm64")}, + {Name: "bar", Version: "1.2.3", ID: "amd", Architecture: new("amd64")}, + {Name: "bar", Version: "1.2.3", ID: "arm", Architecture: new("arm64")}, }, "bar", "1.2.3", "amd64", - &stackitv1alpha1.MachineImage{Name: "bar", Version: "1.2.3", ID: "amd", Architecture: ptr.To("amd64")}, false, + &stackitv1alpha1.MachineImage{Name: "bar", Version: "1.2.3", ID: "amd", Architecture: new("amd64")}, false, ), ) @@ -137,12 +136,12 @@ var _ = Describe("Helper", func() { { Name: "eu01", ID: "flatcar_eu01_3.0_amd64", - Architecture: ptr.To("amd64"), + Architecture: new("amd64"), }, { Name: "eu01", ID: "flatcar_eu01_3.0_arm64", - Architecture: ptr.To("arm64"), + Architecture: new("arm64"), }, }, }, @@ -191,7 +190,7 @@ var _ = Describe("Helper", func() { Name: "flatcar", Version: "1.0", Image: "flatcar_1.0", - Architecture: ptr.To("amd64"), + Architecture: new("amd64"), })) }) @@ -210,7 +209,7 @@ var _ = Describe("Helper", func() { Name: "flatcar", Version: "2.0", Image: "flatcar_2.0", - Architecture: ptr.To("amd64"), + Architecture: new("amd64"), })) }) @@ -221,7 +220,7 @@ var _ = Describe("Helper", func() { Name: "flatcar", Version: "2.0", ID: "flatcar_eu01_2.0", - Architecture: ptr.To("amd64"), + Architecture: new("amd64"), })) }) @@ -246,7 +245,7 @@ var _ = Describe("Helper", func() { Name: "flatcar", Version: "3.0", ID: "flatcar_eu01_3.0_arm64", - Architecture: ptr.To("arm64"), + Architecture: new("arm64"), })) }) }) @@ -283,12 +282,12 @@ var _ = Describe("Helper", func() { }, Entry("no fip as list is empty", []stackitv1alpha1.FloatingPool{}, "fip-1", regionName, nil, nil), - Entry("return fip as there only one match in the list", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}}, "fip-1", regionName, nil, ptr.To("fip-*")), - Entry("return best matching fip", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}, {Name: "fip-1", Region: ®ionName}}, "fip-1", regionName, nil, ptr.To("fip-1")), - Entry("no fip as there no entry for the same region", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ptr.To("somewhere-else")}}, "fip-1", regionName, nil, nil), - Entry("no fip as there is no entry with domain", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}}, "fip-1", regionName, ptr.To("net-1"), nil), - Entry("return fip even if there is a non-constraing fip with better score", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}, {Name: "fip-1", Region: ®ionName, NonConstraining: ptr.To(true)}}, "fip-1", regionName, nil, ptr.To("fip-*")), - Entry("return non-constraing fip as there is no other matching fip", []stackitv1alpha1.FloatingPool{{Name: "nofip-1", Region: ®ionName}, {Name: "fip-1", Region: ®ionName, NonConstraining: ptr.To(true)}}, "fip-1", regionName, nil, ptr.To("fip-1")), + Entry("return fip as there only one match in the list", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}}, "fip-1", regionName, nil, new("fip-*")), + Entry("return best matching fip", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}, {Name: "fip-1", Region: ®ionName}}, "fip-1", regionName, nil, new("fip-1")), + Entry("no fip as there no entry for the same region", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: new("somewhere-else")}}, "fip-1", regionName, nil, nil), + Entry("no fip as there is no entry with domain", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}}, "fip-1", regionName, new("net-1"), nil), + Entry("return fip even if there is a non-constraing fip with better score", []stackitv1alpha1.FloatingPool{{Name: "fip-*", Region: ®ionName}, {Name: "fip-1", Region: ®ionName, NonConstraining: new(true)}}, "fip-1", regionName, nil, new("fip-*")), + Entry("return non-constraing fip as there is no other matching fip", []stackitv1alpha1.FloatingPool{{Name: "nofip-1", Region: ®ionName}, {Name: "fip-1", Region: ®ionName, NonConstraining: new(true)}}, "fip-1", regionName, nil, new("fip-1")), ) }) diff --git a/pkg/apis/stackit/validation/cloudprofile_test.go b/pkg/apis/stackit/validation/cloudprofile_test.go index bd1633c6..be408e95 100644 --- a/pkg/apis/stackit/validation/cloudprofile_test.go +++ b/pkg/apis/stackit/validation/cloudprofile_test.go @@ -11,7 +11,6 @@ import ( . "github.com/onsi/gomega" . "github.com/onsi/gomega/gstruct" "k8s.io/apimachinery/pkg/util/validation/field" - "k8s.io/utils/ptr" stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" . "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/validation" @@ -51,7 +50,7 @@ var _ = Describe("CloudProfileConfig validation", func() { Regions: []stackitv1alpha1.RegionIDMapping{{ Name: "eu01", ID: "9afa968b-ed9e-4ba0-a394-f74cbb0313w2", - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), }}, }, }, @@ -78,8 +77,8 @@ var _ = Describe("CloudProfileConfig validation", func() { cloudProfileConfig.Constraints.FloatingPools = []stackitv1alpha1.FloatingPool{ { Name: "", - Region: ptr.To(""), - Domain: ptr.To(""), + Region: new(""), + Domain: new(""), }, } @@ -102,29 +101,29 @@ var _ = Describe("CloudProfileConfig validation", func() { cloudProfileConfig.Constraints.FloatingPools = []stackitv1alpha1.FloatingPool{ { Name: "foo", - Region: ptr.To("rfoo"), + Region: new("rfoo"), }, { Name: "foo", - Region: ptr.To("rfoo"), + Region: new("rfoo"), }, { Name: "foo", - Domain: ptr.To("dfoo"), + Domain: new("dfoo"), }, { Name: "foo", - Domain: ptr.To("dfoo"), + Domain: new("dfoo"), }, { Name: "foo", - Domain: ptr.To("dfoo"), - Region: ptr.To("rfoo"), + Domain: new("dfoo"), + Region: new("rfoo"), }, { Name: "foo", - Domain: ptr.To("dfoo"), - Region: ptr.To("rfoo"), + Domain: new("dfoo"), + Region: new("rfoo"), }, } @@ -192,7 +191,8 @@ var _ = Describe("CloudProfileConfig validation", func() { It("should forbid invalid keystone CA Certs", func() { //nolint:staticcheck // SA1019: needed for migration purposes - cloudProfileConfig.KeyStoneCACert = ptr.To("foo") + cloudProfileConfig.KeyStoneCACert = new("foo") + errorList := ValidateCloudProfileConfig(cloudProfileConfig, machineImages, fldPath) Expect(errorList).To(ConsistOf(PointTo(MatchFields(IgnoreExtras, Fields{ "Type": Equal(field.ErrorTypeInvalid), @@ -217,7 +217,8 @@ var _ = Describe("CloudProfileConfig validation", func() { Context("dhcp domain validation", func() { It("should forbid not specifying a value when the key is present", func() { //nolint:staticcheck // SA1019: needed for migration purposes - cloudProfileConfig.DHCPDomain = ptr.To("") + cloudProfileConfig.DHCPDomain = new("") + errorList := ValidateCloudProfileConfig(cloudProfileConfig, machineImages, fldPath) Expect(errorList).To(ConsistOf(PointTo(MatchFields(IgnoreExtras, Fields{ @@ -366,17 +367,17 @@ var _ = Describe("CloudProfileConfig validation", func() { { Name: "eu01", ID: "abc_foo_amd64", - Architecture: ptr.To("amd64"), + Architecture: new("amd64"), }, { Name: "eu01", ID: "abc_foo_arm64", - Architecture: ptr.To("arm64"), + Architecture: new("arm64"), }, { Name: "eu01", ID: "abc_foo_ppc64", - Architecture: ptr.To("ppc64"), + Architecture: new("ppc64"), }, }, }}, diff --git a/pkg/apis/stackit/validation/infrastructure_test.go b/pkg/apis/stackit/validation/infrastructure_test.go index 9e1cee27..7582ff3c 100644 --- a/pkg/apis/stackit/validation/infrastructure_test.go +++ b/pkg/apis/stackit/validation/infrastructure_test.go @@ -11,7 +11,6 @@ import ( . "github.com/onsi/gomega" . "github.com/onsi/gomega/gstruct" "k8s.io/apimachinery/pkg/util/validation/field" - "k8s.io/utils/ptr" stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" . "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/validation" @@ -66,7 +65,7 @@ var _ = Describe("InfrastructureConfig validation", func() { It("should forbid floating ip subnet when router is specified", func() { infrastructureConfig.Networks.Router = &stackitv1alpha1.Router{ID: "sample-router-id"} - infrastructureConfig.FloatingPoolSubnetName = ptr.To("sample-floating-pool-subnet-id") + infrastructureConfig.FloatingPoolSubnetName = new("sample-floating-pool-subnet-id") errorList := ValidateInfrastructureConfig(infrastructureConfig, &nodes, nilPath) @@ -77,7 +76,7 @@ var _ = Describe("InfrastructureConfig validation", func() { }) It("should forbid subnet id when network id is unspecified", func() { - infrastructureConfig.Networks.SubnetID = ptr.To(uuid.NewString()) + infrastructureConfig.Networks.SubnetID = new(uuid.NewString()) errorList := ValidateInfrastructureConfig(infrastructureConfig, &nodes, nilPath) @@ -89,8 +88,8 @@ var _ = Describe("InfrastructureConfig validation", func() { }) It("should forbid an invalid subnet id", func() { - infrastructureConfig.Networks.ID = ptr.To(uuid.NewString()) - infrastructureConfig.Networks.SubnetID = ptr.To("thisiswrong") + infrastructureConfig.Networks.ID = new(uuid.NewString()) + infrastructureConfig.Networks.SubnetID = new("thisiswrong") errorList := ValidateInfrastructureConfig(infrastructureConfig, &nodes, nilPath) @@ -102,8 +101,8 @@ var _ = Describe("InfrastructureConfig validation", func() { }) It("should allow an valid OpenStack UUID as subnet ID", func() { - infrastructureConfig.Networks.ID = ptr.To(uuid.NewString()) - infrastructureConfig.Networks.SubnetID = ptr.To(uuid.NewString()) + infrastructureConfig.Networks.ID = new(uuid.NewString()) + infrastructureConfig.Networks.SubnetID = new(uuid.NewString()) errorList := ValidateInfrastructureConfig(infrastructureConfig, &nodes, nilPath) @@ -178,7 +177,7 @@ var _ = Describe("InfrastructureConfig validation", func() { It("should allow an valid OpenStack UUID as network ID", func() { id, err := uuid.NewUUID() Expect(err).NotTo(HaveOccurred()) - infrastructureConfig.Networks.ID = ptr.To(id.String()) + infrastructureConfig.Networks.ID = new(id.String()) errorList := ValidateInfrastructureConfig(infrastructureConfig, &nodes, nilPath) @@ -217,7 +216,7 @@ var _ = Describe("InfrastructureConfig validation", func() { It("should forbid changing the floating pool subnet", func() { newInfrastructureConfig := infrastructureConfig.DeepCopy() - newInfrastructureConfig.FloatingPoolSubnetName = ptr.To("test") + newInfrastructureConfig.FloatingPoolSubnetName = new("test") errorList := ValidateInfrastructureConfigUpdate(infrastructureConfig, newInfrastructureConfig, nilPath) diff --git a/pkg/controller/bastion/options_test.go b/pkg/controller/bastion/options_test.go index 17bf6bd4..3c1adbb1 100644 --- a/pkg/controller/bastion/options_test.go +++ b/pkg/controller/bastion/options_test.go @@ -15,7 +15,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/runtime/serializer/json" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake" @@ -102,25 +101,25 @@ var _ = Describe("Options", func() { Name: "c1i.1", CPU: resource.MustParse("1"), Memory: resource.MustParse("2Gi"), - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), }, { Name: "c1i.2", CPU: resource.MustParse("2"), Memory: resource.MustParse("4Gi"), - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), }, { Name: "c1r.1", CPU: resource.MustParse("1"), Memory: resource.MustParse("2Gi"), - Architecture: ptr.To(v1beta1constants.ArchitectureARM64), + Architecture: new(v1beta1constants.ArchitectureARM64), }, { Name: "c1r.2", CPU: resource.MustParse("2"), Memory: resource.MustParse("4Gi"), - Architecture: ptr.To(v1beta1constants.ArchitectureARM64), + Architecture: new(v1beta1constants.ArchitectureARM64), }, }, MachineImages: []gardencorev1beta1.MachineImage{ @@ -130,21 +129,21 @@ var _ = Describe("Options", func() { { ExpirableVersion: gardencorev1beta1.ExpirableVersion{ Version: "1.0.0", - Classification: ptr.To(gardencorev1beta1.ClassificationDeprecated), + Classification: new(gardencorev1beta1.ClassificationDeprecated), }, Architectures: []string{v1beta1constants.ArchitectureAMD64, v1beta1constants.ArchitectureARM64}, }, { ExpirableVersion: gardencorev1beta1.ExpirableVersion{ Version: "1.1.0", - Classification: ptr.To(gardencorev1beta1.ClassificationSupported), + Classification: new(gardencorev1beta1.ClassificationSupported), }, Architectures: []string{v1beta1constants.ArchitectureAMD64, v1beta1constants.ArchitectureARM64}, }, { ExpirableVersion: gardencorev1beta1.ExpirableVersion{ Version: "2.0.0", - Classification: ptr.To(gardencorev1beta1.ClassificationPreview), + Classification: new(gardencorev1beta1.ClassificationPreview), }, Architectures: []string{v1beta1constants.ArchitectureAMD64, v1beta1constants.ArchitectureARM64}, }, @@ -165,12 +164,12 @@ var _ = Describe("Options", func() { { Name: "eu01", ID: "eu01-flatcar-1.1.0", - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), }, { Name: "RegionOne", ID: "eu01-flatcar-1.1.0", - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), }, }, }, diff --git a/pkg/controller/bastion/resources_public_ip.go b/pkg/controller/bastion/resources_public_ip.go index aa312f6c..10c52d99 100644 --- a/pkg/controller/bastion/resources_public_ip.go +++ b/pkg/controller/bastion/resources_public_ip.go @@ -15,7 +15,7 @@ func (r *Resources) reconcilePublicIP(ctx context.Context, log logr.Logger) erro if r.PublicIP == nil { var err error r.PublicIP, err = r.IaaS.CreatePublicIp(ctx, iaas.CreatePublicIPPayload{ - Labels: ptr.To(stackit.ToLabels(r.Labels)), + Labels: new(stackit.ToLabels(r.Labels)), }) if err != nil { return fmt.Errorf("error creating public IP: %w", err) diff --git a/pkg/controller/bastion/resources_security_group.go b/pkg/controller/bastion/resources_security_group.go index 9fe324b1..82650441 100644 --- a/pkg/controller/bastion/resources_security_group.go +++ b/pkg/controller/bastion/resources_security_group.go @@ -7,7 +7,6 @@ import ( "github.com/go-logr/logr" "github.com/stackitcloud/stackit-sdk-go/services/iaas" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit" stackitclient "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit/client" @@ -21,10 +20,10 @@ func (r *Resources) reconcileSecurityGroup(ctx context.Context, log logr.Logger) if r.SecurityGroup == nil { var err error r.SecurityGroup, err = r.IaaS.CreateSecurityGroup(ctx, iaas.CreateSecurityGroupPayload{ - Name: ptr.To(r.ResourceName), - Labels: ptr.To(stackit.ToLabels(r.Labels)), + Name: new(r.ResourceName), + Labels: new(stackit.ToLabels(r.Labels)), - Description: ptr.To("Security group for Bastion " + r.Bastion.Name), + Description: new("Security group for Bastion " + r.Bastion.Name), }) if err != nil { return fmt.Errorf("error creating security group: %w", err) @@ -60,48 +59,48 @@ func (o *Options) determineWantedSecurityGroupRules() ([]iaas.SecurityGroupRule, rules := []iaas.SecurityGroupRule{ { // DHCP tells us our IP and the route to the metadata server - Description: ptr.To("Allow DHCP requests"), + Description: new("Allow DHCP requests"), - Direction: ptr.To(stackit.DirectionEgress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolUDP), + Direction: new(stackit.DirectionEgress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolUDP), PortRange: iaas.NewPortRange(68, 67), - IpRange: ptr.To("255.255.255.255/32"), + IpRange: new("255.255.255.255/32"), }, { - Description: ptr.To("Allow egress to metadata server"), + Description: new("Allow egress to metadata server"), - Direction: ptr.To(stackit.DirectionEgress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionEgress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolTCP), PortRange: iaas.NewPortRange(80, 80), - IpRange: ptr.To("169.254.169.254/32"), + IpRange: new("169.254.169.254/32"), }, { - Description: ptr.To(fmt.Sprintf("Allow egress from Bastion %s to %s worker nodes", o.Bastion.Name, o.TechnicalID)), + Description: new(fmt.Sprintf("Allow egress from Bastion %s to %s worker nodes", o.Bastion.Name, o.TechnicalID)), - Direction: ptr.To(stackit.DirectionEgress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionEgress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolTCP), PortRange: portRangeSSH, - RemoteSecurityGroupId: ptr.To(o.WorkerSecurityGroupID), + RemoteSecurityGroupId: new(o.WorkerSecurityGroupID), }, } if len(o.Bastion.Spec.Ingress) == 0 { // If the Bastion doesn't specify ingress restrictions, we need to add a rule allowing all ingress rules = append(rules, iaas.SecurityGroupRule{ - Description: ptr.To(fmt.Sprintf("Allow ingress to Bastion %s from world", o.Bastion.Name)), + Description: new(fmt.Sprintf("Allow ingress to Bastion %s from world", o.Bastion.Name)), - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolTCP), PortRange: portRangeSSH, - IpRange: ptr.To("0.0.0.0/0"), + IpRange: new("0.0.0.0/0"), }) } @@ -119,14 +118,14 @@ func (o *Options) determineWantedSecurityGroupRules() ([]iaas.SecurityGroupRule, normalizedCIDR := prefix.Masked().String() rules = append(rules, iaas.SecurityGroupRule{ - Description: ptr.To(fmt.Sprintf("Allow ingress to Bastion %s from %s", o.Bastion.Name, normalizedCIDR)), + Description: new(fmt.Sprintf("Allow ingress to Bastion %s from %s", o.Bastion.Name, normalizedCIDR)), - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(etherType), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(etherType), + Protocol: new(stackit.ProtocolTCP), PortRange: portRangeSSH, - IpRange: ptr.To(normalizedCIDR), + IpRange: new(normalizedCIDR), }) } @@ -136,14 +135,14 @@ func (o *Options) determineWantedSecurityGroupRules() ([]iaas.SecurityGroupRule, func (r *Resources) reconcileWorkerSecurityGroupRule(ctx context.Context, log logr.Logger) error { // This rule is deleted automatically when the referenced Bastion security group (RemoteSecurityGroupId) is deleted. wantedRule := iaas.SecurityGroupRule{ - Description: ptr.To(fmt.Sprintf("Allow ingress to shoot worker nodes from Bastion %s", r.Bastion.Name)), + Description: new(fmt.Sprintf("Allow ingress to shoot worker nodes from Bastion %s", r.Bastion.Name)), - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolTCP), PortRange: portRangeSSH, - RemoteSecurityGroupId: ptr.To(r.SecurityGroup.GetId()), + RemoteSecurityGroupId: new(r.SecurityGroup.GetId()), } createdRule, err := r.IaaS.CreateSecurityGroupRule(ctx, r.WorkerSecurityGroupID, wantedRule) diff --git a/pkg/controller/bastion/resources_security_group_test.go b/pkg/controller/bastion/resources_security_group_test.go index 06976788..22920eb9 100644 --- a/pkg/controller/bastion/resources_security_group_test.go +++ b/pkg/controller/bastion/resources_security_group_test.go @@ -9,7 +9,6 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/iaas" networkingv1 "k8s.io/api/networking/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit" ) @@ -46,24 +45,24 @@ var _ = Describe("Security Group", func() { It("should return the security group rules for Bastion.spec.ingress", func() { Expect(o.determineWantedSecurityGroupRules()).To(ContainElements( iaas.SecurityGroupRule{ - Description: ptr.To(fmt.Sprintf("Allow ingress to Bastion %s from %s", o.Bastion.Name, "1.2.3.4/32")), + Description: new(fmt.Sprintf("Allow ingress to Bastion %s from %s", o.Bastion.Name, "1.2.3.4/32")), - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolTCP), PortRange: iaas.NewPortRange(22, 22), - IpRange: ptr.To("1.2.3.4/32"), + IpRange: new("1.2.3.4/32"), }, iaas.SecurityGroupRule{ - Description: ptr.To(fmt.Sprintf("Allow ingress to Bastion %s from %s", o.Bastion.Name, "2001:db8:1::/48")), + Description: new(fmt.Sprintf("Allow ingress to Bastion %s from %s", o.Bastion.Name, "2001:db8:1::/48")), - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv6), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv6), + Protocol: new(stackit.ProtocolTCP), PortRange: iaas.NewPortRange(22, 22), - IpRange: ptr.To("2001:db8:1::/48"), + IpRange: new("2001:db8:1::/48"), }, )) }) @@ -73,14 +72,14 @@ var _ = Describe("Security Group", func() { Expect(o.determineWantedSecurityGroupRules()).To(ContainElement( iaas.SecurityGroupRule{ - Description: ptr.To(fmt.Sprintf("Allow ingress to Bastion %s from world", o.Bastion.Name)), + Description: new(fmt.Sprintf("Allow ingress to Bastion %s from world", o.Bastion.Name)), - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolTCP), PortRange: iaas.NewPortRange(22, 22), - IpRange: ptr.To("0.0.0.0/0"), + IpRange: new("0.0.0.0/0"), }, )) }) diff --git a/pkg/controller/bastion/resources_server.go b/pkg/controller/bastion/resources_server.go index ece7ecd0..d35b723d 100644 --- a/pkg/controller/bastion/resources_server.go +++ b/pkg/controller/bastion/resources_server.go @@ -6,7 +6,6 @@ import ( "github.com/go-logr/logr" "github.com/stackitcloud/stackit-sdk-go/services/iaas" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit" ) @@ -19,24 +18,24 @@ func (r *Resources) reconcileServer(ctx context.Context, log logr.Logger) error var err error r.Server, err = r.IaaS.CreateServer(ctx, iaas.CreateServerPayload{ - Name: ptr.To(r.ResourceName), - Labels: ptr.To(stackit.ToLabels(r.Labels)), + Name: new(r.ResourceName), + Labels: new(stackit.ToLabels(r.Labels)), - AvailabilityZone: ptr.To(r.AvailabilityZone), - MachineType: ptr.To(r.MachineType), + AvailabilityZone: new(r.AvailabilityZone), + MachineType: new(r.MachineType), BootVolume: &iaas.ServerBootVolume{ - DeleteOnTermination: ptr.To(true), + DeleteOnTermination: new(true), Source: iaas.NewBootVolumeSource(r.ImageID, "image"), // TODO: make size and performance class configurable - Size: ptr.To[int64](10), + Size: new(int64(10)), }, - SecurityGroups: ptr.To([]string{r.SecurityGroup.GetId()}), - Networking: ptr.To(iaas.CreateServerNetworkingAsCreateServerPayloadAllOfNetworking(&iaas.CreateServerNetworking{ - NetworkId: ptr.To(r.NetworkID), + SecurityGroups: new([]string{r.SecurityGroup.GetId()}), + Networking: new(iaas.CreateServerNetworkingAsCreateServerPayloadAllOfNetworking(&iaas.CreateServerNetworking{ + NetworkId: new(r.NetworkID), })), - UserData: ptr.To(r.Bastion.Spec.UserData), + UserData: new(r.Bastion.Spec.UserData), }) if err != nil { return fmt.Errorf("error creating server: %w", err) diff --git a/pkg/controller/bastion/resources_test.go b/pkg/controller/bastion/resources_test.go index 5220f544..fccd590c 100644 --- a/pkg/controller/bastion/resources_test.go +++ b/pkg/controller/bastion/resources_test.go @@ -11,7 +11,6 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/iaas" "go.uber.org/mock/gomock" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit" stackitclient "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit/client" @@ -48,13 +47,13 @@ var _ = Describe("Bastion Resources", func() { resources.ResourceName = "test-resource" resources.Labels = map[string]string{"test-labels-key": "test-labels-value"} - expectedSecurityGroup := []iaas.SecurityGroup{{Name: ptr.To("test-security-group")}} + expectedSecurityGroup := []iaas.SecurityGroup{{Name: new("test-security-group")}} mockIaaS.EXPECT().GetSecurityGroupByName(ctx, resources.ResourceName).Return(expectedSecurityGroup, nil) - expectedServer := []iaas.Server{{Name: ptr.To("test-server")}} + expectedServer := []iaas.Server{{Name: new("test-server")}} mockIaaS.EXPECT().GetServerByName(ctx, resources.ResourceName).Return(expectedServer, nil) - expectedPublicIP := []iaas.PublicIp{{Id: ptr.To("test-ip")}} + expectedPublicIP := []iaas.PublicIp{{Id: new("test-ip")}} mockIaaS.EXPECT().GetPublicIpByLabels(ctx, resources.Labels).Return(expectedPublicIP, nil) err := resources.getExistingResources(ctx, logger) @@ -70,15 +69,15 @@ var _ = Describe("Bastion Resources", func() { resources.Labels = map[string]string{"test-labels-key": "test-labels-value"} mockIaaS.EXPECT().GetSecurityGroupByName(ctx, resources.ResourceName).Return( - []iaas.SecurityGroup{{Id: ptr.To("test-security-group")}}, + []iaas.SecurityGroup{{Id: new("test-security-group")}}, nil, ) mockIaaS.EXPECT().GetServerByName(ctx, resources.ResourceName).Return( - []iaas.Server{{Id: ptr.To("test-server")}}, + []iaas.Server{{Id: new("test-server")}}, nil, ) mockIaaS.EXPECT().GetPublicIpByLabels(ctx, resources.Labels).Return( - []iaas.PublicIp{{Id: ptr.To("test-ip")}}, + []iaas.PublicIp{{Id: new("test-ip")}}, nil, ) @@ -118,10 +117,10 @@ var _ = Describe("Bastion Resources", func() { resources.ResourceName = "test-resource" resources.Labels = map[string]string{"test-labels-key": "test-labels-value"} resources.Server = &iaas.Server{ - Id: ptr.To("test-server"), + Id: new("test-server"), } - expectedPublicIP := &iaas.PublicIp{Id: ptr.To("test-public-ip")} + expectedPublicIP := &iaas.PublicIp{Id: new("test-public-ip")} mockIaaS.EXPECT().CreatePublicIp(ctx, gomock.Any()).Return(expectedPublicIP, nil) mockIaaS.EXPECT().AddPublicIpToServer(ctx, "test-server", "test-public-ip") @@ -135,10 +134,10 @@ var _ = Describe("Bastion Resources", func() { resources.ResourceName = "test-resource" resources.Labels = map[string]string{"test-labels-key": "test-labels-value"} resources.Server = &iaas.Server{ - Id: ptr.To("test-server"), + Id: new("test-server"), } - expectedPublicIP := &iaas.PublicIp{Id: ptr.To("test-public-ip")} + expectedPublicIP := &iaas.PublicIp{Id: new("test-public-ip")} mockIaaS.EXPECT().CreatePublicIp(ctx, gomock.Any()).Return(expectedPublicIP, nil) mockIaaS.EXPECT().AddPublicIpToServer(ctx, "test-server", "test-public-ip") @@ -154,11 +153,11 @@ var _ = Describe("Bastion Resources", func() { resources.ResourceName = "test-resource" resources.Labels = map[string]string{"test-labels-key": "test-labels-value"} resources.Server = &iaas.Server{ - Id: ptr.To("test-server"), + Id: new("test-server"), } resources.PublicIP = &iaas.PublicIp{ - Id: ptr.To("test-public-ip"), - NetworkInterface: iaas.NewNullableString(ptr.To("test-interface")), + Id: new("test-public-ip"), + NetworkInterface: iaas.NewNullableString(new("test-interface")), } err := resources.reconcilePublicIP(ctx, logger) @@ -180,7 +179,7 @@ var _ = Describe("Bastion Resources", func() { It("deletes the public IP", func() { resources.ResourceName = "test-resource" resources.PublicIP = &iaas.PublicIp{ - Id: ptr.To("test-public-ip"), + Id: new("test-public-ip"), } mockIaaS.EXPECT().DeletePublicIp(ctx, "test-public-ip").Return(nil) @@ -195,7 +194,7 @@ var _ = Describe("Bastion Resources", func() { Context("reconcileServer", func() { It("bails out if the server already set", func() { resources.Server = &iaas.Server{ - Id: ptr.To("test-server"), + Id: new("test-server"), } err := resources.reconcileServer(ctx, logger) @@ -220,29 +219,29 @@ var _ = Describe("Bastion Resources", func() { }, }, } - resources.SecurityGroup = &iaas.SecurityGroup{Id: ptr.To("test-security-group")} + resources.SecurityGroup = &iaas.SecurityGroup{Id: new("test-security-group")} expectedPayload := iaas.CreateServerPayload{ - Name: ptr.To("test-resource"), - Labels: ptr.To(stackit.ToLabels(map[string]string{ + Name: new("test-resource"), + Labels: new(stackit.ToLabels(map[string]string{ "test-label-key": "test-label-value", })), - AvailabilityZone: ptr.To("test-az"), - MachineType: ptr.To("test-machine"), + AvailabilityZone: new("test-az"), + MachineType: new("test-machine"), BootVolume: &iaas.ServerBootVolume{ - DeleteOnTermination: ptr.To(true), + DeleteOnTermination: new(true), Source: iaas.NewBootVolumeSource("test-image", "image"), - Size: ptr.To[int64](10), + Size: new(int64(10)), }, - SecurityGroups: ptr.To([]string{"test-security-group"}), - Networking: ptr.To(iaas.CreateServerNetworkingAsCreateServerPayloadAllOfNetworking(&iaas.CreateServerNetworking{ - NetworkId: ptr.To("test-network"), + SecurityGroups: new([]string{"test-security-group"}), + Networking: new(iaas.CreateServerNetworkingAsCreateServerPayloadAllOfNetworking(&iaas.CreateServerNetworking{ + NetworkId: new("test-network"), })), - UserData: ptr.To([]byte{1, 2, 3, 4}), + UserData: new([]byte{1, 2, 3, 4}), } expectedServer := &iaas.Server{ - Id: ptr.To("test-server"), + Id: new("test-server"), } mockIaaS.EXPECT().CreateServer(ctx, expectedPayload).Return(expectedServer, nil) @@ -266,7 +265,7 @@ var _ = Describe("Bastion Resources", func() { It("deletes the server", func() { resources.ResourceName = "test-resource" resources.Server = &iaas.Server{ - Id: ptr.To("test-server"), + Id: new("test-server"), } mockIaaS.EXPECT().DeleteServer(ctx, "test-server") @@ -293,12 +292,12 @@ var _ = Describe("Bastion Resources", func() { } expectedPayload := iaas.CreateSecurityGroupPayload{ - Name: ptr.To("test-resource"), - Labels: ptr.To(stackit.ToLabels(map[string]string{"test-labels-key": "test-labels-value"})), - Description: ptr.To("Security group for Bastion test-bastion"), + Name: new("test-resource"), + Labels: new(stackit.ToLabels(map[string]string{"test-labels-key": "test-labels-value"})), + Description: new("Security group for Bastion test-bastion"), } expectedSecurityGroup := &iaas.SecurityGroup{ - Id: ptr.To("test-security-group"), + Id: new("test-security-group"), } expectedWantedRules, _ := resources.determineWantedSecurityGroupRules() @@ -326,7 +325,7 @@ var _ = Describe("Bastion Resources", func() { It("deletes the security group", func() { resources.ResourceName = "test-resource" resources.SecurityGroup = &iaas.SecurityGroup{ - Id: ptr.To("test-security-group"), + Id: new("test-security-group"), } mockIaaS.EXPECT().DeleteSecurityGroup(ctx, "test-security-group").Return(nil) @@ -342,7 +341,7 @@ var _ = Describe("Bastion Resources", func() { Context("reconcileWorkerSecurityGroupRule", func() { It("ignores conflicting security group rules", func() { resources.SecurityGroup = &iaas.SecurityGroup{ - Id: ptr.To("test-security-group"), + Id: new("test-security-group"), } resources.WorkerSecurityGroupID = "test-rule" resources.Bastion = &extensionsv1alpha1.Bastion{ @@ -364,7 +363,7 @@ var _ = Describe("Bastion Resources", func() { It("logs the created security group rule's ID", func() { resources.SecurityGroup = &iaas.SecurityGroup{ - Id: ptr.To("test-security-group"), + Id: new("test-security-group"), } resources.WorkerSecurityGroupID = "worker-security-group" resources.Bastion = &extensionsv1alpha1.Bastion{ @@ -374,8 +373,8 @@ var _ = Describe("Bastion Resources", func() { } expectedRule := &iaas.SecurityGroupRule{ - Id: ptr.To("expected-rule"), - Description: ptr.To("expected-rule-description"), + Id: new("expected-rule"), + Description: new("expected-rule-description"), } mockIaaS.EXPECT().CreateSecurityGroupRule(ctx, "worker-security-group", gomock.Any()).Return(expectedRule, nil) diff --git a/pkg/controller/controlplane/valuesprovider_test.go b/pkg/controller/controlplane/valuesprovider_test.go index 1fcfb79f..6b2c9c29 100644 --- a/pkg/controller/controlplane/valuesprovider_test.go +++ b/pkg/controller/controlplane/valuesprovider_test.go @@ -35,7 +35,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" vpaautoscalingv1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake" @@ -156,9 +155,9 @@ var _ = Describe("ValuesProvider", func() { cloudProfileConfig = &stackitv1alpha1.CloudProfileConfig{ KeyStoneURL: authURL, RequestTimeout: requestTimeout, - RescanBlockStorageOnResize: ptr.To(rescanBlockStorageOnResize), - IgnoreVolumeAZ: ptr.To(ignoreVolumeAZ), - NodeVolumeAttachLimit: ptr.To[int32](nodeVoluemAttachLimit), + RescanBlockStorageOnResize: new(rescanBlockStorageOnResize), + IgnoreVolumeAZ: new(ignoreVolumeAZ), + NodeVolumeAttachLimit: &nodeVoluemAttachLimit, } cloudProfileConfigJSON, _ = json.Marshal(cloudProfileConfig) @@ -229,7 +228,7 @@ var _ = Describe("ValuesProvider", func() { Shoot: &gardencorev1beta1.Shoot{ Spec: gardencorev1beta1.ShootSpec{ Networking: &gardencorev1beta1.Networking{ - Type: ptr.To("calico"), + Type: new("calico"), ProviderConfig: &runtime.RawExtension{ Raw: []byte(`{"overlay":{"enabled": false}}`), }, @@ -390,7 +389,7 @@ var _ = Describe("ValuesProvider", func() { It("should not configure cloud routes when not using overlay but using BGP as backend", func() { c.EXPECT().Get(ctx, cpSecretKey, &corev1.Secret{}).DoAndReturn(clientGet(cpSecret)) net := &gardencorev1beta1.Networking{ - Type: ptr.To("calico"), + Type: new("calico"), ProviderConfig: &runtime.RawExtension{ Raw: []byte(`{"backend":"bird","overlay":{"enabled": false}}`), }, @@ -694,7 +693,7 @@ var _ = Describe("ValuesProvider", func() { ), Entry("custom LoadBalancer endpoint", &stackitv1alpha1.APIEndpoints{ - LoadBalancer: ptr.To("https://custom-lb.stackit.cloud"), + LoadBalancer: new("https://custom-lb.stackit.cloud"), }, nil, map[string]any{ @@ -714,8 +713,8 @@ var _ = Describe("ValuesProvider", func() { ), Entry("custom LoadBalancer and Token endpoints", &stackitv1alpha1.APIEndpoints{ - LoadBalancer: ptr.To("https://custom-lb.stackit.cloud"), - TokenEndpoint: ptr.To("https://custom-auth.stackit.cloud/token"), + LoadBalancer: new("https://custom-lb.stackit.cloud"), + TokenEndpoint: new("https://custom-auth.stackit.cloud/token"), }, nil, map[string]any{ @@ -1015,11 +1014,11 @@ var _ = Describe("ValuesProvider", func() { } }, - Entry("missing url", nil, ptr.To("token"), fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPIURLKey)), - Entry("empty url", ptr.To(""), ptr.To("token"), fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPIURLKey)), - Entry("missing token", ptr.To("url"), nil, fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPITokenKey)), - Entry("empty token", ptr.To("url"), ptr.To(""), fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPITokenKey)), - Entry("valid secret", ptr.To("url"), ptr.To("token"), nil), + Entry("missing url", nil, new("token"), fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPIURLKey)), + Entry("empty url", new(""), new("token"), fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPIURLKey)), + Entry("missing token", new("url"), nil, fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPITokenKey)), + Entry("empty token", new("url"), new(""), fmt.Errorf("missing or empty secret key %s", LoadBalancerEmergencyAccessAPITokenKey)), + Entry("valid secret", new("url"), new("token"), nil), ) }) diff --git a/pkg/controller/dnsrecord/actuator.go b/pkg/controller/dnsrecord/actuator.go index fb29f768..1cd8ff9c 100644 --- a/pkg/controller/dnsrecord/actuator.go +++ b/pkg/controller/dnsrecord/actuator.go @@ -64,7 +64,7 @@ func (a *actuator) Reconcile(ctx context.Context, log logr.Logger, dns *extensio } patch := client.MergeFrom(dns.DeepCopy()) - dns.Status.Zone = ptr.To(zoneID) + dns.Status.Zone = new(zoneID) return a.client.Status().Patch(ctx, dns, patch) } diff --git a/pkg/controller/dnsrecord/actuator_test.go b/pkg/controller/dnsrecord/actuator_test.go index b8a3e9c3..a32dd776 100644 --- a/pkg/controller/dnsrecord/actuator_test.go +++ b/pkg/controller/dnsrecord/actuator_test.go @@ -17,7 +17,6 @@ import ( "go.uber.org/mock/gomock" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/log" @@ -112,7 +111,7 @@ var _ = Describe("Actuator", func() { }) It("should fail if creating the DNS record set failed", func() { - dns.Spec.Zone = ptr.To(zone) + dns.Spec.Zone = new(zone) dnsMock.EXPECT().CreateOrUpdateRecordSet(ctx, zone, domainName, string(extensionsv1alpha1.DNSRecordTypeA), []string{address}, int64(120)). Return(errors.New("test")) @@ -130,7 +129,7 @@ var _ = Describe("Actuator", func() { }) It("should fail with ERR_CONFIGURATION_PROBLEM if the hosted zone was deleted", func() { - dns.Spec.Zone = ptr.To(zone) + dns.Spec.Zone = new(zone) // This error is returned when the zone was deleted, but can still be re-activated dnsMock.EXPECT().CreateOrUpdateRecordSet(ctx, zone, domainName, string(extensionsv1alpha1.DNSRecordTypeA), []string{address}, int64(120)). Return(&stackitclient.Error{ @@ -148,7 +147,7 @@ var _ = Describe("Actuator", func() { Describe("#Delete", func() { It("should not fail when there is a not found error", func() { - dns.Spec.Zone = ptr.To(zone) + dns.Spec.Zone = new(zone) dnsMock.EXPECT().DeleteRecordSet(ctx, zone, domainName, string(extensionsv1alpha1.DNSRecordTypeA)). Return(stackitclient.NewNotFoundError("foo", "bar")) @@ -156,7 +155,7 @@ var _ = Describe("Actuator", func() { }) It("should delete the DNSRecord", func() { - dns.Status.Zone = ptr.To(zone) + dns.Status.Zone = new(zone) dnsMock.EXPECT().DeleteRecordSet(ctx, zone, domainName, string(extensionsv1alpha1.DNSRecordTypeA)). Return(nil) diff --git a/pkg/controller/healthcheck/add.go b/pkg/controller/healthcheck/add.go index c3f2ffc0..4ab43580 100644 --- a/pkg/controller/healthcheck/add.go +++ b/pkg/controller/healthcheck/add.go @@ -18,7 +18,6 @@ import ( extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -36,8 +35,8 @@ var ( HealthCheckConfig: healthcheckconfig.HealthCheckConfig{ SyncPeriod: metav1.Duration{Duration: defaultSyncPeriod}, ShootRESTOptions: &healthcheckconfig.RESTOptions{ - QPS: ptr.To[float32](100), - Burst: ptr.To(130), + QPS: new(float32(100)), + Burst: new(130), }, }, } diff --git a/pkg/controller/infrastructure/openstack/configvalidator_test.go b/pkg/controller/infrastructure/openstack/configvalidator_test.go index 1a2b61fe..e6e2a8df 100644 --- a/pkg/controller/infrastructure/openstack/configvalidator_test.go +++ b/pkg/controller/infrastructure/openstack/configvalidator_test.go @@ -27,7 +27,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/validation/field" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" @@ -188,7 +187,7 @@ var _ = Describe("ConfigValidator", func() { }) It("should fail with InternalError if getting network failed", func() { - config.Networks.ID = ptr.To(id) + config.Networks.ID = new(id) infra.Spec.ProviderConfig.Raw = encode(config) networkingClient.EXPECT().ListNetwork(ctx, gomock.Any()).Return(nil, errors.New("test")) @@ -201,7 +200,7 @@ var _ = Describe("ConfigValidator", func() { }) It("should fail with NotFound if no network found", func() { - config.Networks.ID = ptr.To("nonexisting") + config.Networks.ID = new("nonexisting") infra.Spec.ProviderConfig.Raw = encode(config) networkingClient.EXPECT().ListNetwork(ctx, gomock.Any()).Return([]networks.Network{}, nil) @@ -214,8 +213,8 @@ var _ = Describe("ConfigValidator", func() { }) It("should fail with InternalError if getting subnet failed", func() { - config.Networks.ID = ptr.To(id) - config.Networks.SubnetID = ptr.To(id) + config.Networks.ID = new(id) + config.Networks.SubnetID = new(id) infra.Spec.ProviderConfig.Raw = encode(config) networkingClient.EXPECT().ListNetwork(ctx, gomock.Any()).Return([]networks.Network{{ID: "id"}}, nil) @@ -229,8 +228,8 @@ var _ = Describe("ConfigValidator", func() { }) It("should fail with NotFound if no subnet found", func() { - config.Networks.ID = ptr.To(id) - config.Networks.SubnetID = ptr.To("nonexisting") + config.Networks.ID = new(id) + config.Networks.SubnetID = new("nonexisting") infra.Spec.ProviderConfig.Raw = encode(config) networkingClient.EXPECT().ListNetwork(ctx, gomock.Any()).Return([]networks.Network{{ID: "id"}}, nil) @@ -244,8 +243,8 @@ var _ = Describe("ConfigValidator", func() { }) It("should fail with Invalid if subnet isn't child of specified network", func() { - config.Networks.ID = ptr.To(id) - config.Networks.SubnetID = ptr.To("subnetID") + config.Networks.ID = new(id) + config.Networks.SubnetID = new("subnetID") infra.Spec.ProviderConfig.Raw = encode(config) networkingClient.EXPECT().ListNetwork(ctx, gomock.Any()).Return([]networks.Network{{ID: "id"}}, nil) diff --git a/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context.go b/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context.go index 01492797..eb61b566 100644 --- a/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context.go +++ b/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context.go @@ -12,7 +12,6 @@ import ( "github.com/gardener/gardener/pkg/utils/flow" "github.com/go-logr/logr" - "k8s.io/utils/ptr" logf "sigs.k8s.io/controller-runtime/pkg/log" ) @@ -55,7 +54,7 @@ func Timeout(timeout time.Duration) TaskOption { // DoIf creates a TaskOption for DoIf func DoIf(condition bool) TaskOption { - return TaskOption{DoIf: ptr.To(condition)} + return TaskOption{DoIf: new(condition)} } // BasicFlowContext provides logic for persisting the state and add tasks to the flow graph. @@ -123,7 +122,7 @@ func (c *BasicFlowContext) AddTask(g *flow.Graph, name string, fn flow.TaskFn, o condition = *allOptions.DoIf } condition = condition && *opt.DoIf - allOptions.DoIf = ptr.To(condition) + allOptions.DoIf = new(condition) } } diff --git a/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context_test.go b/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context_test.go index e0b59ffb..419a58f9 100644 --- a/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context_test.go +++ b/pkg/controller/infrastructure/openstack/infraflow/shared/basic_context_test.go @@ -8,12 +8,12 @@ import ( "bytes" "context" "fmt" + "maps" "github.com/gardener/gardener/pkg/utils/flow" "github.com/go-logr/logr" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/log/zap" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/controller/infrastructure/openstack/infraflow/shared" @@ -46,9 +46,7 @@ var _ = Describe("BasicFlowContext", func() { return fmt.Errorf("forced persistor error") } persistedData = shared.FlatMap{} - for k, v := range state.ExportAsFlatMap() { - persistedData[k] = v - } + maps.Copy(persistedData, state.ExportAsFlatMap()) persistCallCount++ return nil } @@ -92,9 +90,9 @@ var _ = Describe("BasicFlowContext", func() { Expect(c.state.Get("task1")).To(BeNil()) Expect(logBuffer.String()).To(ContainSubstring("task2:foo")) - Expect(c.state.Get("task2")).To(Equal(ptr.To("done"))) + Expect(c.state.Get("task2")).To(Equal(new("done"))) Expect(c.state.Get("afterTask2")).To(Equal(c.state.Get("task2"))) - Expect(c.state.Get("task3")).To(Equal(ptr.To("done"))) + Expect(c.state.Get("task3")).To(Equal(new("done"))) Expect(persistCallCount).To(Equal(2)) Expect(persistedData["task2"]).To(Equal("done")) diff --git a/pkg/controller/infrastructure/openstack/infraflow/shared/whiteboard_test.go b/pkg/controller/infrastructure/openstack/infraflow/shared/whiteboard_test.go index f2745b98..cf9cd611 100644 --- a/pkg/controller/infrastructure/openstack/infraflow/shared/whiteboard_test.go +++ b/pkg/controller/infrastructure/openstack/infraflow/shared/whiteboard_test.go @@ -7,7 +7,6 @@ package shared_test import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/controller/infrastructure/openstack/infraflow/shared" ) @@ -45,10 +44,10 @@ var _ = Describe("Whiteboard", func() { Expect(*w.Get("key2")).To(Equal("id2")) Expect(w.Get("child1")).To(BeNil()) Expect(w.GetChild("child1").IsEmpty()).To(BeFalse()) - Expect(w.GetChild("child1").GetChild("subchild1").Get("key1")).To(Equal(ptr.To("id111"))) - Expect(w.GetChild("child1").GetChild("subchild2").Get("key1")).To(Equal(ptr.To("id121"))) + Expect(w.GetChild("child1").GetChild("subchild1").Get("key1")).To(Equal(new("id111"))) + Expect(w.GetChild("child1").GetChild("subchild2").Get("key1")).To(Equal(new("id121"))) Expect(w.GetChild("child2").IsEmpty()).To(BeFalse()) - Expect(w.GetChild("child2").Get("key2")).To(Equal(ptr.To("id22"))) + Expect(w.GetChild("child2").Get("key2")).To(Equal(new("id22"))) Expect(w.GetChild("child3").IsEmpty()).To(BeTrue()) generation1 := w.CurrentGeneration() w.Set("key2", "id2") @@ -72,7 +71,7 @@ var _ = Describe("Whiteboard", func() { Expect(w.IsAlreadyDeleted("key1")).To(BeTrue()) Expect(w.Get("key3")).To(BeNil()) - w.SetPtr("key3", ptr.To("id3")) + w.SetPtr("key3", new("id3")) Expect(w.Get("key3")).NotTo(BeNil()) Expect(w.HasChild("child1")).To(BeTrue()) diff --git a/pkg/controller/infrastructure/stackit/infraflow/reconcile.go b/pkg/controller/infrastructure/stackit/infraflow/reconcile.go index 8c2e1439..a5cb1320 100644 --- a/pkg/controller/infrastructure/stackit/infraflow/reconcile.go +++ b/pkg/controller/infrastructure/stackit/infraflow/reconcile.go @@ -133,7 +133,7 @@ func (fctx *FlowContext) ensureConfiguredNetwork(ctx context.Context) error { // Populate dnsNameservers for InfrastructureStatus from provided network nameservers := networkIPv4Config.GetNameservers() - fctx.dnsNameservers = ptr.To(nameservers) + fctx.dnsNameservers = new(nameservers) fctx.state.Set(IdentifierNetwork, networkID) fctx.state.Set(NameNetwork, network.GetName()) @@ -245,8 +245,8 @@ func (fctx *FlowContext) ensureSecGroup(ctx context.Context) error { log := shared.LogFromContext(ctx) payload := iaas.CreateSecurityGroupPayload{ - Name: ptr.To(fctx.defaultSecurityGroupName()), - Description: ptr.To("Cluster Nodes"), + Name: new(fctx.defaultSecurityGroupName()), + Description: new("Cluster Nodes"), } current, err := findExisting(ctx, fctx.state.Get(IdentifierSecGroup), fctx.defaultSecurityGroupName(), fctx.iaasClient.GetSecurityGroupById, fctx.iaasClient.GetSecurityGroupByName) @@ -299,46 +299,46 @@ func (fctx *FlowContext) ensureSecGroupRules(ctx context.Context) error { desiredRules := []iaas.SecurityGroupRule{ { - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - RemoteSecurityGroupId: ptr.To(group.GetId()), - Description: ptr.To("IPv4: allow all incoming traffic within the same security group"), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + RemoteSecurityGroupId: new(group.GetId()), + Description: new("IPv4: allow all incoming traffic within the same security group"), }, { - Direction: ptr.To(stackit.DirectionEgress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Description: ptr.To("IPv4: allow all outgoing traffic"), + Direction: new(stackit.DirectionEgress), + Ethertype: new(stackit.EtherTypeIPv4), + Description: new("IPv4: allow all outgoing traffic"), }, { - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolTCP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolTCP), PortRange: &iaas.PortRange{ - Max: ptr.To[int64](32767), - Min: ptr.To[int64](30000), + Max: new(int64(32767)), + Min: new(int64(30000)), }, - IpRange: ptr.To(nodesCIDR), - Description: ptr.To("IPv4: allow all incoming tcp traffic with port range 30000-32767"), + IpRange: new(nodesCIDR), + Description: new("IPv4: allow all incoming tcp traffic with port range 30000-32767"), }, { - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - Protocol: ptr.To(stackit.ProtocolUDP), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + Protocol: new(stackit.ProtocolUDP), PortRange: &iaas.PortRange{ - Max: ptr.To[int64](32767), - Min: ptr.To[int64](30000), + Max: new(int64(32767)), + Min: new(int64(30000)), }, - IpRange: ptr.To(nodesCIDR), - Description: ptr.To("IPv4: allow all incoming udp traffic with port range 30000-32767"), + IpRange: new(nodesCIDR), + Description: new("IPv4: allow all incoming udp traffic with port range 30000-32767"), }, } if fctx.cluster.Shoot.Spec.Networking != nil && fctx.cluster.Shoot.Spec.Networking.Pods != nil { podCIDRRule := iaas.SecurityGroupRule{ - Direction: ptr.To(stackit.DirectionIngress), - Ethertype: ptr.To(stackit.EtherTypeIPv4), - IpRange: ptr.To(*fctx.cluster.Shoot.Spec.Networking.Pods), - Description: ptr.To("IPv4: allow all incoming traffic from cluster pod CIDR"), + Direction: new(stackit.DirectionIngress), + Ethertype: new(stackit.EtherTypeIPv4), + IpRange: new(*fctx.cluster.Shoot.Spec.Networking.Pods), + Description: new("IPv4: allow all incoming traffic from cluster pod CIDR"), } desiredRules = append(desiredRules, podCIDRRule) } @@ -377,15 +377,15 @@ func (fctx *FlowContext) ensureIsolatedNetwork(ctx context.Context) error { network := iaas.CreateNetworkIPv4{ CreateNetworkIPv4WithPrefix: &iaas.CreateNetworkIPv4WithPrefix{ - Nameservers: ptr.To(dnsServers), - Prefix: ptr.To(fctx.workerCIDR()), + Nameservers: new(dnsServers), + Prefix: new(fctx.workerCIDR()), }, } desired := iaas.CreateIsolatedNetworkPayload{ - Dhcp: ptr.To(true), - Ipv4: ptr.To(network), - Name: ptr.To(fctx.technicalID), + Dhcp: new(true), + Ipv4: new(network), + Name: new(fctx.technicalID), } current, err := findExisting(ctx, fctx.state.Get(IdentifierNetwork), fctx.defaultNetworkName(), fctx.iaasClient.GetNetworkById, fctx.iaasClient.GetNetworkByName) if err != nil { @@ -398,7 +398,7 @@ func (fctx *FlowContext) ensureIsolatedNetwork(ctx context.Context) error { return err } // Update dnsNameservers when update was successful - fctx.dnsNameservers = ptr.To(desired.Ipv4.CreateNetworkIPv4WithPrefix.GetNameservers()) + fctx.dnsNameservers = new(desired.Ipv4.CreateNetworkIPv4WithPrefix.GetNameservers()) } else { log.Info("creating...", "network", fctx.defaultNetworkName()) created, err := fctx.iaasClient.CreateIsolatedNetwork(ctx, desired) @@ -407,7 +407,7 @@ func (fctx *FlowContext) ensureIsolatedNetwork(ctx context.Context) error { } fctx.state.Set(IdentifierNetwork, created.GetId()) fctx.state.Set(NameNetwork, created.GetName()) - fctx.dnsNameservers = ptr.To(created.Ipv4.GetNameservers()) + fctx.dnsNameservers = new(created.Ipv4.GetNameservers()) } return nil } diff --git a/pkg/controller/worker/machines.go b/pkg/controller/worker/machines.go index 190758b1..e3b7ddd3 100644 --- a/pkg/controller/worker/machines.go +++ b/pkg/controller/worker/machines.go @@ -207,7 +207,7 @@ func (w *workerDelegate) generateMachineConfig(ctx context.Context) error { InstanceType: pool.MachineType, Region: region, Zone: zone, - Architecture: ptr.To(architecture), + Architecture: new(architecture), } } else if pool.NodeTemplate != nil { machineClassSpec["nodeTemplate"] = machinev1alpha1.NodeTemplate{ @@ -215,7 +215,7 @@ func (w *workerDelegate) generateMachineConfig(ctx context.Context) error { InstanceType: pool.MachineType, Region: region, Zone: zone, - Architecture: ptr.To(architecture), + Architecture: new(architecture), } } @@ -225,8 +225,8 @@ func (w *workerDelegate) generateMachineConfig(ctx context.Context) error { ) updateConfiguration := machinev1alpha1.UpdateConfiguration{ - MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(zoneIdx, pool.MaxUnavailable, zoneLen, pool.Minimum)), - MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(zoneIdx, pool.MaxSurge, zoneLen, pool.Maximum)), + MaxUnavailable: new(worker.DistributePositiveIntOrPercent(zoneIdx, pool.MaxUnavailable, zoneLen, pool.Minimum)), + MaxSurge: new(worker.DistributePositiveIntOrPercent(zoneIdx, pool.MaxSurge, zoneLen, pool.Maximum)), } machineDeploymentStrategy := machinev1alpha1.MachineDeploymentStrategy{ diff --git a/pkg/controller/worker/machines_test.go b/pkg/controller/worker/machines_test.go index a61ad1af..9cab0ebf 100644 --- a/pkg/controller/worker/machines_test.go +++ b/pkg/controller/worker/machines_test.go @@ -8,6 +8,7 @@ import ( "context" "encoding/json" "fmt" + "maps" "path/filepath" "strings" "time" @@ -32,7 +33,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/intstr" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/charts" @@ -194,7 +194,7 @@ var _ = Describe("Machines", func() { namePool2 = "pool-2" minPool2 = 30 maxPool2 = 45 - priorityPool2 = ptr.To[int32](100) + priorityPool2 = new(int32(100)) maxSurgePool2 = intstr.FromInt32(10) maxUnavailablePool2 = intstr.FromInt32(15) @@ -376,8 +376,8 @@ var _ = Describe("Machines", func() { zone1, zone2, }, - UpdateStrategy: ptr.To(gardencorev1beta1.AutoInPlaceUpdate), - KubernetesVersion: ptr.To(shootVersion), + UpdateStrategy: new(gardencorev1beta1.AutoInPlaceUpdate), + KubernetesVersion: new(shootVersion), }, { Name: namePool3, @@ -403,8 +403,8 @@ var _ = Describe("Machines", func() { zone1, zone2, }, - UpdateStrategy: ptr.To(gardencorev1beta1.ManualInPlaceUpdate), - KubernetesVersion: ptr.To(shootVersion), + UpdateStrategy: new(gardencorev1beta1.ManualInPlaceUpdate), + KubernetesVersion: new(shootVersion), }, }, }, @@ -593,8 +593,8 @@ var _ = Describe("Machines", func() { Type: machinev1alpha1.RollingUpdateMachineDeploymentStrategyType, RollingUpdate: &machinev1alpha1.RollingUpdateMachineDeployment{ UpdateConfiguration: machinev1alpha1.UpdateConfiguration{ - MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(0, maxUnavailablePool1, 2, minPool1)), - MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(0, maxSurgePool1, 2, maxPool1)), + MaxUnavailable: new(worker.DistributePositiveIntOrPercent(0, maxUnavailablePool1, 2, minPool1)), + MaxSurge: new(worker.DistributePositiveIntOrPercent(0, maxSurgePool1, 2, maxPool1)), }, }, }, @@ -613,8 +613,8 @@ var _ = Describe("Machines", func() { Type: machinev1alpha1.RollingUpdateMachineDeploymentStrategyType, RollingUpdate: &machinev1alpha1.RollingUpdateMachineDeployment{ UpdateConfiguration: machinev1alpha1.UpdateConfiguration{ - MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(1, maxUnavailablePool1, 2, minPool1)), - MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(1, maxSurgePool1, 2, maxPool1)), + MaxUnavailable: new(worker.DistributePositiveIntOrPercent(1, maxUnavailablePool1, 2, minPool1)), + MaxSurge: new(worker.DistributePositiveIntOrPercent(1, maxSurgePool1, 2, maxPool1)), }, }, }, @@ -635,8 +635,8 @@ var _ = Describe("Machines", func() { InPlaceUpdate: &machinev1alpha1.InPlaceUpdateMachineDeployment{ OrchestrationType: machinev1alpha1.OrchestrationTypeAuto, UpdateConfiguration: machinev1alpha1.UpdateConfiguration{ - MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(0, maxUnavailablePool2, 2, minPool2)), - MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(0, maxSurgePool2, 2, maxPool2)), + MaxUnavailable: new(worker.DistributePositiveIntOrPercent(0, maxUnavailablePool2, 2, minPool2)), + MaxSurge: new(worker.DistributePositiveIntOrPercent(0, maxSurgePool2, 2, maxPool2)), }, }, }, @@ -657,8 +657,8 @@ var _ = Describe("Machines", func() { InPlaceUpdate: &machinev1alpha1.InPlaceUpdateMachineDeployment{ OrchestrationType: machinev1alpha1.OrchestrationTypeAuto, UpdateConfiguration: machinev1alpha1.UpdateConfiguration{ - MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(1, maxUnavailablePool2, 2, minPool2)), - MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(1, maxSurgePool2, 2, maxPool2)), + MaxUnavailable: new(worker.DistributePositiveIntOrPercent(1, maxUnavailablePool2, 2, minPool2)), + MaxSurge: new(worker.DistributePositiveIntOrPercent(1, maxSurgePool2, 2, maxPool2)), }, }, }, @@ -679,8 +679,8 @@ var _ = Describe("Machines", func() { InPlaceUpdate: &machinev1alpha1.InPlaceUpdateMachineDeployment{ OrchestrationType: machinev1alpha1.OrchestrationTypeManual, UpdateConfiguration: machinev1alpha1.UpdateConfiguration{ - MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(0, maxUnavailablePool2, 2, minPool2)), - MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(0, maxSurgePool2, 2, maxPool2)), + MaxUnavailable: new(worker.DistributePositiveIntOrPercent(0, maxUnavailablePool2, 2, minPool2)), + MaxSurge: new(worker.DistributePositiveIntOrPercent(0, maxSurgePool2, 2, maxPool2)), }, }, }, @@ -701,8 +701,8 @@ var _ = Describe("Machines", func() { InPlaceUpdate: &machinev1alpha1.InPlaceUpdateMachineDeployment{ OrchestrationType: machinev1alpha1.OrchestrationTypeManual, UpdateConfiguration: machinev1alpha1.UpdateConfiguration{ - MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(1, maxUnavailablePool2, 2, minPool2)), - MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(1, maxSurgePool2, 2, maxPool2)), + MaxUnavailable: new(worker.DistributePositiveIntOrPercent(1, maxUnavailablePool2, 2, minPool2)), + MaxSurge: new(worker.DistributePositiveIntOrPercent(1, maxSurgePool2, 2, maxPool2)), }, }, }, @@ -765,7 +765,7 @@ var _ = Describe("Machines", func() { Name: machineImageName, Version: machineImageVersion, Image: machineImage, - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), }, }, } @@ -791,7 +791,7 @@ var _ = Describe("Machines", func() { It("should return the expected machine deployments for profile image types with id", func() { setup(regionWithImages, "", machineImageID, archARM) workerDelegate, _ := NewWorkerDelegate(c, scheme, chartApplier, "", workerWithRegion, clusterWithRegion, "") - clusterWithRegion.Shoot.Spec.Hibernation = &gardencorev1beta1.Hibernation{Enabled: ptr.To(true)} + clusterWithRegion.Shoot.Spec.Hibernation = &gardencorev1beta1.Hibernation{Enabled: new(true)} // Test workerDelegate.DeployMachineClasses() expectedUserDataSecretRefRead() @@ -822,7 +822,7 @@ var _ = Describe("Machines", func() { Name: machineImageName, Version: machineImageVersion, ID: machineImageID, - Architecture: ptr.To(v1beta1constants.ArchitectureARM64), + Architecture: new(v1beta1constants.ArchitectureARM64), }, }, } @@ -958,7 +958,7 @@ var _ = Describe("Machines", func() { Name: machineImageName, Version: machineImageVersion, Image: machineImage, - Architecture: ptr.To(v1beta1constants.ArchitectureAMD64), + Architecture: new(v1beta1constants.ArchitectureAMD64), }, }, } @@ -983,7 +983,7 @@ var _ = Describe("Machines", func() { It("should return the expected machine deployments for STACKIT with profile image types with id", func() { setup(regionWithImages, "", machineImageID, archARM) workerDelegate, _ := NewWorkerDelegate(c, scheme, chartApplier, "", workerWithRegion, clusterWithRegion, "kubernetes.io") - clusterWithRegion.Shoot.Spec.Hibernation = &gardencorev1beta1.Hibernation{Enabled: ptr.To(true)} + clusterWithRegion.Shoot.Spec.Hibernation = &gardencorev1beta1.Hibernation{Enabled: new(true)} // Test workerDelegate.DeployMachineClasses() expectedUserDataSecretRefRead() @@ -1014,7 +1014,7 @@ var _ = Describe("Machines", func() { Name: machineImageName, Version: machineImageVersion, ID: machineImageID, - Architecture: ptr.To(v1beta1constants.ArchitectureARM64), + Architecture: new(v1beta1constants.ArchitectureARM64), }, }, } @@ -1110,11 +1110,11 @@ var _ = Describe("Machines", func() { It("should set expected cluster-autoscaler annotations on the machine deployment", func() { w.Spec.Pools[0].ClusterAutoscaler = &extensionsv1alpha1.ClusterAutoscalerOptions{ - MaxNodeProvisionTime: ptr.To(metav1.Duration{Duration: time.Minute}), - ScaleDownGpuUtilizationThreshold: ptr.To("0.4"), - ScaleDownUnneededTime: ptr.To(metav1.Duration{Duration: 2 * time.Minute}), - ScaleDownUnreadyTime: ptr.To(metav1.Duration{Duration: 3 * time.Minute}), - ScaleDownUtilizationThreshold: ptr.To("0.5"), + MaxNodeProvisionTime: new(metav1.Duration{Duration: time.Minute}), + ScaleDownGpuUtilizationThreshold: new("0.4"), + ScaleDownUnneededTime: new(metav1.Duration{Duration: 2 * time.Minute}), + ScaleDownUnreadyTime: new(metav1.Duration{Duration: 3 * time.Minute}), + ScaleDownUtilizationThreshold: new("0.5"), } w.Spec.Pools[1].ClusterAutoscaler = nil workerDelegate, _ = NewWorkerDelegate(c, scheme, chartApplier, "", w, cluster, "") @@ -1193,9 +1193,7 @@ func encode(obj runtime.Object) []byte { func useDefaultMachineClass(def map[string]any, value any) map[string]any { out := make(map[string]any, len(def)+1) - for k, v := range def { - out[k] = v - } + maps.Copy(out, def) out["availabilityZone"] = value return out @@ -1204,13 +1202,8 @@ func useDefaultMachineClass(def map[string]any, value any) map[string]any { func useDefaultMachineClassWith(def map[string]any, add map[string]any) map[string]any { out := make(map[string]any, len(add)) - for k, v := range def { - out[k] = v - } - - for k, v := range add { - out[k] = v - } + maps.Copy(out, def) + maps.Copy(out, add) return out } diff --git a/pkg/internal/infrastructure/infrastucture.go b/pkg/internal/infrastructure/infrastucture.go index 7a72d43e..d2e79047 100644 --- a/pkg/internal/infrastructure/infrastucture.go +++ b/pkg/internal/infrastructure/infrastucture.go @@ -45,6 +45,9 @@ func CleanupKubernetesLoadbalancers(ctx context.Context, log logr.Logger, client lbList, err := client.ListLoadbalancers(ctx, loadbalancers.ListOpts{ VipSubnetID: subnetID, }) + if err != nil { + return fmt.Errorf("error listing load balancers: %w", err) + } // do we need that if we anyway want to delete the gardener managed subnet ? k8sSvcPrefix := servicePrefix + clusterName @@ -69,9 +72,7 @@ func CleanupKubernetesLoadbalancers(ctx context.Context, log logr.Logger, client } log.Info("deleting orphan loadbalancer", "ID", lb.ID, "name", lb.Name) - w.Add(1) - go func() { - defer w.Done() + w.Go(func() { if err := client.DeleteLoadbalancer(ctx, lb.ID, loadbalancers.DeleteOpts{Cascade: true}); err != nil { res <- err return @@ -90,7 +91,7 @@ func CleanupKubernetesLoadbalancers(ctx context.Context, log logr.Logger, client if err != nil { res <- fmt.Errorf("failed to ensure loadbalancers are deleted: %v", err) } - }() + }) } w.Wait() close(res) diff --git a/pkg/openstack/client/networking.go b/pkg/openstack/client/networking.go index 93c102d2..56272a60 100644 --- a/pkg/openstack/client/networking.go +++ b/pkg/openstack/client/networking.go @@ -18,7 +18,6 @@ import ( "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/networks" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/ports" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/subnets" - "k8s.io/utils/ptr" ) type networkWithExternalExt struct { @@ -43,7 +42,7 @@ func (c *NetworkingClient) GetExternalNetworkNames(ctx context.Context) ([]strin func (c *NetworkingClient) listExternalNetworks(ctx context.Context, listOpts networks.ListOptsBuilder) ([]networkWithExternalExt, error) { allPages, err := networks.List(c.client, external.ListOptsExt{ ListOptsBuilder: listOpts, - External: ptr.To(true), + External: new(true), }).AllPages(ctx) if err != nil { return nil, err diff --git a/pkg/openstack/credentials.go b/pkg/openstack/credentials.go index 0a6da326..726e5ab9 100644 --- a/pkg/openstack/credentials.go +++ b/pkg/openstack/credentials.go @@ -11,7 +11,6 @@ import ( extensionscontroller "github.com/gardener/gardener/extensions/pkg/controller" corev1 "k8s.io/api/core/v1" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -49,15 +48,15 @@ func ExtractCredentials(secret *corev1.Secret, allowDNSKeys bool) (*Credentials, var altDomainNameKey, altTenantNameKey, altUserNameKey, altPasswordKey, altAuthURLKey, altCABundleKey *string var altApplicationCredentialID, altApplicationCredentialName, altApplicationCredentialSecret *string if allowDNSKeys { - altDomainNameKey = ptr.To(DNSDomainName) - altTenantNameKey = ptr.To(DNSTenantName) - altUserNameKey = ptr.To(DNSUserName) - altPasswordKey = ptr.To(DNSPassword) - altApplicationCredentialID = ptr.To(DNSApplicationCredentialID) - altApplicationCredentialName = ptr.To(DNSApplicationCredentialName) - altApplicationCredentialSecret = ptr.To(DNSApplicationCredentialSecret) - altAuthURLKey = ptr.To(DNSAuthURL) - altCABundleKey = ptr.To(DNSCABundle) + altDomainNameKey = new(DNSDomainName) + altTenantNameKey = new(DNSTenantName) + altUserNameKey = new(DNSUserName) + altPasswordKey = new(DNSPassword) + altApplicationCredentialID = new(DNSApplicationCredentialID) + altApplicationCredentialName = new(DNSApplicationCredentialName) + altApplicationCredentialSecret = new(DNSApplicationCredentialSecret) + altAuthURLKey = new(DNSAuthURL) + altCABundleKey = new(DNSCABundle) } if secret.Data == nil { diff --git a/pkg/stackit/client/dns.go b/pkg/stackit/client/dns.go index e04c7555..fc4fb8c5 100644 --- a/pkg/stackit/client/dns.go +++ b/pkg/stackit/client/dns.go @@ -7,7 +7,6 @@ import ( sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" "github.com/stackitcloud/stackit-sdk-go/services/dns" - "k8s.io/utils/ptr" "k8s.io/utils/set" stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" @@ -80,7 +79,7 @@ func (c *dnsClient) CreateOrUpdateRecordSet(ctx context.Context, wantedRecordsPayload := []dns.RecordPayload{} for _, record := range wantedRecords { wantedRecordsPayload = append(wantedRecordsPayload, dns.RecordPayload{ - Content: ptr.To(record), + Content: new(record), }) } @@ -88,8 +87,8 @@ func (c *dnsClient) CreateOrUpdateRecordSet(ctx context.Context, _, err := c.api.CreateRecordSet(ctx, c.projectID, zoneID).CreateRecordSetPayload(dns.CreateRecordSetPayload{ Name: &name, Records: &wantedRecordsPayload, - Type: ptr.To(dns.CreateRecordSetPayloadTypes(recordType)), - Ttl: ptr.To(ttl), + Type: new(dns.CreateRecordSetPayloadTypes(recordType)), + Ttl: new(ttl), }).Execute() if err != nil { return fmt.Errorf("failed to create record set: %w", err) @@ -105,7 +104,7 @@ func (c *dnsClient) CreateOrUpdateRecordSet(ctx context.Context, _, err = c.api.PartialUpdateRecordSet(ctx, c.projectID, zoneID, recordSet.GetId()).PartialUpdateRecordSetPayload(dns.PartialUpdateRecordSetPayload{ Name: &name, Records: &wantedRecordsPayload, - Ttl: ptr.To(ttl), + Ttl: new(ttl), }).Execute() if err != nil { return fmt.Errorf("failed to update record set: %w", err) diff --git a/pkg/stackit/client/dns_test.go b/pkg/stackit/client/dns_test.go index 23cd9242..62a11739 100644 --- a/pkg/stackit/client/dns_test.go +++ b/pkg/stackit/client/dns_test.go @@ -8,7 +8,6 @@ import ( . "github.com/onsi/gomega" "github.com/stackitcloud/stackit-sdk-go/services/dns" "go.uber.org/mock/gomock" - "k8s.io/utils/ptr" mock "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit/client/mock/dns" ) @@ -40,8 +39,8 @@ var _ = Describe("DNSClient", func() { } response := dns.ListZonesResponse{ Zones: &[]dns.Zone{ - {Id: ptr.To("zone1"), DnsName: ptr.To("example.com.")}, - {Id: ptr.To("zone2"), DnsName: ptr.To("example.org.")}, + {Id: new("zone1"), DnsName: new("example.com.")}, + {Id: new("zone2"), DnsName: new("example.org.")}, }, } mockAPI.EXPECT().ListZonesExecute(ctx, client.projectID).Return(&response, nil) @@ -60,20 +59,20 @@ var _ = Describe("DNSClient", func() { mockAPI.EXPECT().ListRecordSetsExecute(ctx, client.projectID, "zone1").Return(&dns.ListRecordSetsResponse{ RrSets: &[]dns.RecordSet{ { - Name: ptr.To("test.example.com."), - Active: ptr.To(true), - Type: dns.RecordSetGetTypeAttributeType(ptr.To("A")), - Records: &[]dns.Record{{Content: ptr.To("1.1.1.1")}}, - Id: ptr.To("some-uuid"), - Ttl: ptr.To[int64](300), + Name: new("test.example.com."), + Active: new(true), + Type: dns.RecordSetGetTypeAttributeType(new("A")), + Records: &[]dns.Record{{Content: new("1.1.1.1")}}, + Id: new("some-uuid"), + Ttl: new(int64(300)), }, { - Name: ptr.To("test.example.com."), - Active: ptr.To(false), - Type: dns.RecordSetGetTypeAttributeType(ptr.To("A")), - Records: &[]dns.Record{{Content: ptr.To("4.4.4.4")}}, - Id: ptr.To("some-uuid2"), - Ttl: ptr.To[int64](300), + Name: new("test.example.com."), + Active: new(false), + Type: dns.RecordSetGetTypeAttributeType(new("A")), + Records: &[]dns.Record{{Content: new("4.4.4.4")}}, + Id: new("some-uuid2"), + Ttl: new(int64(300)), }, }, }, nil) @@ -84,10 +83,10 @@ var _ = Describe("DNSClient", func() { It("should create a new record set if it does not exist", func() { mockAPI.EXPECT().CreateRecordSet(ctx, client.projectID, "zone1").Return(mockCreateRequest) mockCreateRequest.EXPECT().CreateRecordSetPayload(dns.CreateRecordSetPayload{ - Name: ptr.To("new.example.com."), - Records: &[]dns.RecordPayload{{Content: ptr.To("1.1.1.1")}}, - Type: ptr.To(dns.CreateRecordSetPayloadTypes("A")), - Ttl: ptr.To(int64(300)), + Name: new("new.example.com."), + Records: &[]dns.RecordPayload{{Content: new("1.1.1.1")}}, + Type: new(dns.CreateRecordSetPayloadTypes("A")), + Ttl: new(int64(300)), }).Return(mockCreateRequest) mockCreateRequest.EXPECT().Execute().Return(nil, nil) @@ -97,9 +96,9 @@ var _ = Describe("DNSClient", func() { It("should update the existing record set if it exists and records are different", func() { mockAPI.EXPECT().PartialUpdateRecordSet(ctx, client.projectID, "zone1", "some-uuid").Return(mockUpdateRequest) mockUpdateRequest.EXPECT().PartialUpdateRecordSetPayload(dns.PartialUpdateRecordSetPayload{ - Name: ptr.To("test.example.com."), - Records: &[]dns.RecordPayload{{Content: ptr.To("4.4.4.4")}}, - Ttl: ptr.To(int64(300)), + Name: new("test.example.com."), + Records: &[]dns.RecordPayload{{Content: new("4.4.4.4")}}, + Ttl: new(int64(300)), }).Return(mockUpdateRequest) mockUpdateRequest.EXPECT().Execute().Return(nil, nil) @@ -115,10 +114,10 @@ var _ = Describe("DNSClient", func() { BeforeEach(func() { mockAPI.EXPECT().ListRecordSetsExecute(ctx, client.projectID, "zone1").Return(&dns.ListRecordSetsResponse{ RrSets: &[]dns.RecordSet{{ - Name: ptr.To("test.example.com."), - Active: ptr.To(true), - Type: dns.RecordSetGetTypeAttributeType(ptr.To("A")), - Id: ptr.To("some-uuid"), + Name: new("test.example.com."), + Active: new(true), + Type: dns.RecordSetGetTypeAttributeType(new("A")), + Id: new("some-uuid"), }}, }, nil) }) @@ -144,32 +143,32 @@ var _ = Describe("DNSClient", func() { BeforeEach(func() { rrSets := []dns.RecordSet{ { - Name: ptr.To("active.example.com."), - Active: ptr.To(true), - Type: dns.RecordSetGetTypeAttributeType(ptr.To("A")), - Records: &[]dns.Record{{Content: ptr.To("1.1.1.1")}}, - Id: ptr.To("active-a-uuid"), + Name: new("active.example.com."), + Active: new(true), + Type: dns.RecordSetGetTypeAttributeType(new("A")), + Records: &[]dns.Record{{Content: new("1.1.1.1")}}, + Id: new("active-a-uuid"), }, { - Name: ptr.To("active2.example.com."), - Active: ptr.To(true), - Type: dns.RecordSetGetTypeAttributeType(ptr.To("A")), - Records: &[]dns.Record{{Content: ptr.To("1.1.1.1")}}, - Id: ptr.To("active2-a-uuid"), + Name: new("active2.example.com."), + Active: new(true), + Type: dns.RecordSetGetTypeAttributeType(new("A")), + Records: &[]dns.Record{{Content: new("1.1.1.1")}}, + Id: new("active2-a-uuid"), }, { - Name: ptr.To("active.example.com."), - Active: ptr.To(true), - Type: dns.RecordSetGetTypeAttributeType(ptr.To("TXT")), - Records: &[]dns.Record{{Content: ptr.To("hello-world")}}, - Id: ptr.To("active-txt-uuid"), + Name: new("active.example.com."), + Active: new(true), + Type: dns.RecordSetGetTypeAttributeType(new("TXT")), + Records: &[]dns.Record{{Content: new("hello-world")}}, + Id: new("active-txt-uuid"), }, { - Name: ptr.To("inactive.example.com."), - Active: ptr.To(false), - Type: dns.RecordSetGetTypeAttributeType(ptr.To("A")), - Records: &[]dns.Record{{Content: ptr.To("2.2.2.2")}}, - Id: ptr.To("inactive-a-uuid"), + Name: new("inactive.example.com."), + Active: new(false), + Type: dns.RecordSetGetTypeAttributeType(new("A")), + Records: &[]dns.Record{{Content: new("2.2.2.2")}}, + Id: new("inactive-a-uuid"), }, } rand.Shuffle(len(rrSets), func(i, j int) { @@ -207,22 +206,22 @@ var _ = DescribeTable("areRecordsEqual", Expect(areRecordsEqual(existingRecords, newRecords)).To(Equal(expected)) }, Entry("equal records", - []dns.Record{{Content: ptr.To("1.2.3.4")}}, + []dns.Record{{Content: new("1.2.3.4")}}, []string{"1.2.3.4"}, true, ), Entry("equal records, different order", - []dns.Record{{Content: ptr.To("1.2.3.4")}, {Content: ptr.To("5.6.7.8")}}, + []dns.Record{{Content: new("1.2.3.4")}, {Content: new("5.6.7.8")}}, []string{"5.6.7.8", "1.2.3.4"}, true, ), Entry("different records", - []dns.Record{{Content: ptr.To("1.2.3.4")}}, + []dns.Record{{Content: new("1.2.3.4")}}, []string{"5.6.7.8"}, false, ), Entry("subset records", - []dns.Record{{Content: ptr.To("1.2.3.4")}}, + []dns.Record{{Content: new("1.2.3.4")}}, []string{"1.2.3.4", "5.6.7.8"}, false, ), diff --git a/pkg/stackit/client/iaas.go b/pkg/stackit/client/iaas.go index eff9d3ac..fc617842 100644 --- a/pkg/stackit/client/iaas.go +++ b/pkg/stackit/client/iaas.go @@ -10,7 +10,6 @@ import ( "github.com/google/go-cmp/cmp/cmpopts" sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" "github.com/stackitcloud/stackit-sdk-go/services/iaas" - "k8s.io/utils/ptr" stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit" @@ -86,7 +85,7 @@ func (c iaasClient) UpdateSecurityGroupRules(ctx context.Context, group *iaas.Se IpRange: rule.IpRange, } if rule.HasProtocol() { - createOpts.Protocol = ptr.To(iaas.StringAsCreateProtocol(rule.Protocol.Name)) + createOpts.Protocol = new(iaas.StringAsCreateProtocol(rule.Protocol.Name)) } // TODO: Ports are only supported for DCCP, SCTP, TCP, UDP and UDPLITE if portRange, ok := rule.GetPortRangeOk(); ok { @@ -204,7 +203,7 @@ func (c iaasClient) ReconcileSecurityGroupRules(ctx context.Context, log logr.Lo if wantedRule := findMatchingRule(existingRule, wantedRules); wantedRule != nil { // wanted rule found in the existing rules, mark the wanted rule as found by storing the ID - wantedRule.Id = ptr.To(existingRule.GetId()) + wantedRule.Id = new(existingRule.GetId()) ruleLog.V(1).Info("Found existing security group rule") } else { @@ -272,7 +271,7 @@ func securityGroupRuleToCreatePayload(rule iaas.SecurityGroupRule) iaas.CreateSe } if rule.HasProtocol() { - payload.Protocol = ptr.To(iaas.StringAsCreateProtocol(rule.Protocol.Name)) + payload.Protocol = new(iaas.StringAsCreateProtocol(rule.Protocol.Name)) } return payload diff --git a/pkg/stackit/client/loadbalancing_test.go b/pkg/stackit/client/loadbalancing_test.go index 75c469a7..dea330ac 100644 --- a/pkg/stackit/client/loadbalancing_test.go +++ b/pkg/stackit/client/loadbalancing_test.go @@ -7,7 +7,6 @@ import ( . "github.com/onsi/gomega" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" "go.uber.org/mock/gomock" - "k8s.io/utils/ptr" mock "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit/client/mock/loadbalancer" ) @@ -33,8 +32,8 @@ var _ = Describe("LoadBalancingClient", func() { It("gets a list of loadbalancers", func() { expectedLoadBalancers := []loadbalancer.LoadBalancer{ - {Name: ptr.To("testLB1")}, - {Name: ptr.To("testLB2")}, + {Name: new("testLB1")}, + {Name: new("testLB2")}, } response := loadbalancer.ListLoadBalancersResponse{ LoadBalancers: &expectedLoadBalancers, @@ -54,7 +53,7 @@ var _ = Describe("LoadBalancingClient", func() { It("gets a certain loadbalancer", func() { name := "testLB" expectedLoadBalancer := &loadbalancer.LoadBalancer{ - Name: ptr.To(name), + Name: new(name), } request := mock.NewMockApiGetLoadBalancerRequest(mockCtrl) request.EXPECT().Execute().Return(expectedLoadBalancer, nil) diff --git a/pkg/stackit/equality_test.go b/pkg/stackit/equality_test.go index 1f4fd4f9..98c229b6 100644 --- a/pkg/stackit/equality_test.go +++ b/pkg/stackit/equality_test.go @@ -4,7 +4,6 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/stackitcloud/stackit-sdk-go/services/iaas" - "k8s.io/utils/ptr" . "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/stackit" ) @@ -12,62 +11,62 @@ import ( var _ = Describe("Equality", func() { Context("iaas.Protocol", func() { It("should match values by name", func() { - Expect(Equality.DeepEqual(iaas.Protocol{Name: ptr.To("tcp")}, iaas.Protocol{Name: ptr.To("tcp")})).To(BeTrue()) - Expect(Equality.DeepEqual(iaas.Protocol{Name: ptr.To("tcp")}, iaas.Protocol{Name: ptr.To("udp")})).To(BeFalse()) + Expect(Equality.DeepEqual(iaas.Protocol{Name: new("tcp")}, iaas.Protocol{Name: new("tcp")})).To(BeTrue()) + Expect(Equality.DeepEqual(iaas.Protocol{Name: new("tcp")}, iaas.Protocol{Name: new("udp")})).To(BeFalse()) }) It("should ignore other fields", func() { Expect(Equality.DeepEqual(iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](1), + Name: new("tcp"), + Number: new(int64(1)), }, iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](1), + Name: new("tcp"), + Number: new(int64(1)), })).To(BeTrue()) Expect(Equality.DeepEqual(iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](1), + Name: new("tcp"), + Number: new(int64(1)), }, iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](2), + Name: new("tcp"), + Number: new(int64(2)), })).To(BeTrue()) Expect(Equality.DeepEqual(iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](1), + Name: new("tcp"), + Number: new(int64(1)), }, iaas.Protocol{ - Name: ptr.To("tcp"), + Name: new("tcp"), })).To(BeTrue()) Expect(Equality.DeepEqual(iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](1), + Name: new("tcp"), + Number: new(int64(1)), }, iaas.Protocol{ - Name: ptr.To("udp"), - Number: ptr.To[int64](1), + Name: new("udp"), + Number: new(int64(1)), })).To(BeFalse()) Expect(Equality.DeepEqual(iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](1), + Name: new("tcp"), + Number: new(int64(1)), }, iaas.Protocol{ - Name: ptr.To("udp"), - Number: ptr.To[int64](2), + Name: new("udp"), + Number: new(int64(2)), })).To(BeFalse()) Expect(Equality.DeepEqual(iaas.Protocol{ - Name: ptr.To("tcp"), - Number: ptr.To[int64](1), + Name: new("tcp"), + Number: new(int64(1)), }, iaas.Protocol{ - Name: ptr.To("udp"), + Name: new("udp"), })).To(BeFalse()) }) It("should work in SecurityGroupRule", func() { a := iaas.SecurityGroupRule{ - Direction: ptr.To(DirectionEgress), - Protocol: &iaas.Protocol{Name: ptr.To("tcp")}, + Direction: new(DirectionEgress), + Protocol: &iaas.Protocol{Name: new("tcp")}, } b := iaas.SecurityGroupRule{ - Direction: ptr.To(DirectionEgress), - Protocol: &iaas.Protocol{Name: ptr.To("tcp")}, + Direction: new(DirectionEgress), + Protocol: &iaas.Protocol{Name: new("tcp")}, } Expect(Equality.DeepEqual(a, b)).To(BeTrue()) diff --git a/pkg/stackit/types.go b/pkg/stackit/types.go index ca29343f..a8e8f540 100644 --- a/pkg/stackit/types.go +++ b/pkg/stackit/types.go @@ -2,7 +2,6 @@ package stackit import ( "github.com/stackitcloud/stackit-sdk-go/services/iaas" - "k8s.io/utils/ptr" ) // The SDK is lacking constants for well-known values of the security group rule fields. @@ -21,7 +20,7 @@ const ( var ( // ProtocolTCP is a shortcut for specifying a security group rule's protocol. - ProtocolTCP = iaas.Protocol{Name: ptr.To("tcp")} + ProtocolTCP = iaas.Protocol{Name: new("tcp")} // ProtocolUDP is a shortcut for specifying a security group rule's protocol. - ProtocolUDP = iaas.Protocol{Name: ptr.To("udp")} + ProtocolUDP = iaas.Protocol{Name: new("udp")} ) diff --git a/pkg/utils/utils_test.go b/pkg/utils/utils_test.go index 1642a989..0e283c8d 100644 --- a/pkg/utils/utils_test.go +++ b/pkg/utils/utils_test.go @@ -7,7 +7,6 @@ package utils_test import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/utils" ) @@ -41,7 +40,7 @@ var _ = Describe("Utils", func() { Expect(utils.IsStringPtrValueEqual(a, b)).To(Equal(expected)) }, Entry("should be false as pointer points to nil", nil, "test", false), - Entry("should be false as pointer value is different", ptr.To("different"), "test", false), - Entry("should be true as pointer value is equal", ptr.To("test"), "test", true), + Entry("should be false as pointer value is different", new("different"), "test", false), + Entry("should be true as pointer value is equal", new("test"), "test", true), ) }) diff --git a/pkg/webhook/cloudprovider/ensurer_test.go b/pkg/webhook/cloudprovider/ensurer_test.go index 7abe1ac3..d4911767 100644 --- a/pkg/webhook/cloudprovider/ensurer_test.go +++ b/pkg/webhook/cloudprovider/ensurer_test.go @@ -20,7 +20,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/utils/ptr" stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" types "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/openstack" @@ -145,7 +144,7 @@ var _ = Describe("Ensurer", func() { }, } cluster.CloudProfile.Spec.ProviderConfig = encodeCloudProfileConfig(&stackitv1alpha1.CloudProfileConfig{ - KeyStoneCACert: ptr.To("cert"), + KeyStoneCACert: new("cert"), KeyStoneURL: "url", }) diff --git a/pkg/webhook/controlplane/ensurer.go b/pkg/webhook/controlplane/ensurer.go index 527a0eb1..dd4cc294 100644 --- a/pkg/webhook/controlplane/ensurer.go +++ b/pkg/webhook/controlplane/ensurer.go @@ -244,10 +244,10 @@ func ensureKubeletCommandLineArgs(command []string) []string { // EnsureKubeletConfiguration ensures that the kubelet configuration conforms to the provider requirements. func (e *ensurer) EnsureKubeletConfiguration(_ context.Context, _ gcontext.GardenContext, _ *semver.Version, newObj, _ *kubeletconfigv1beta1.KubeletConfiguration) error { - newObj.EnableControllerAttachDetach = ptr.To(true) + newObj.EnableControllerAttachDetach = new(true) // resolv-for-kubelet.conf is created by update-resolv-conf.service - newObj.ResolverConfig = ptr.To("/etc/resolv-for-kubelet.conf") + newObj.ResolverConfig = new("/etc/resolv-for-kubelet.conf") return nil } diff --git a/pkg/webhook/controlplane/ensurer_test.go b/pkg/webhook/controlplane/ensurer_test.go index e978f16c..ad01aa19 100644 --- a/pkg/webhook/controlplane/ensurer_test.go +++ b/pkg/webhook/controlplane/ensurer_test.go @@ -33,7 +33,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" vpaautoscalingv1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1" - "k8s.io/utils/ptr" stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/feature" @@ -124,8 +123,8 @@ var _ = Describe("Ensurer", func() { ProviderConfig: &runtime.RawExtension{ Raw: encode(&stackitv1alpha1.CloudProfileConfig{ APIEndpoints: &stackitv1alpha1.APIEndpoints{ - IaaS: ptr.To("iaas.qa"), - TokenEndpoint: ptr.To("token.qa"), + IaaS: new("iaas.qa"), + TokenEndpoint: new("token.qa"), }, }), }, @@ -378,8 +377,8 @@ var _ = Describe("Ensurer", func() { FeatureGates: map[string]bool{ "Foo": true, }, - ResolverConfig: ptr.To("/etc/resolv-for-kubelet.conf"), - EnableControllerAttachDetach: ptr.To(true), + ResolverConfig: new("/etc/resolv-for-kubelet.conf"), + EnableControllerAttachDetach: new(true), } kubeletConfig := *oldKubeletConfig @@ -526,8 +525,8 @@ WantedBy=multi-user.target ensurer = NewEnsurer(nil, logger) DeferCleanup(testutils.WithVar(&ImageVector, imagevector.ImageVector{{ Name: "machine-controller-manager-provider-openstack", - Repository: ptr.To("foo"), - Tag: ptr.To("bar"), + Repository: new("foo"), + Tag: new("bar"), }})) }) @@ -567,8 +566,8 @@ WantedBy=multi-user.target ensurer = NewEnsurer(nil, logger) DeferCleanup(testutils.WithVar(&ImageVector, imagevector.ImageVector{{ Name: "machine-controller-manager-provider-stackit", - Repository: ptr.To("foo"), - Tag: ptr.To("bar"), + Repository: new("foo"), + Tag: new("bar"), }})) }) @@ -609,8 +608,8 @@ WantedBy=multi-user.target ensurer = NewEnsurer(nil, logger) DeferCleanup(testutils.WithVar(&ImageVector, imagevector.ImageVector{{ Name: "machine-controller-manager-provider-stackit", - Repository: ptr.To("foo"), - Tag: ptr.To("bar"), + Repository: new("foo"), + Tag: new("bar"), }})) }) diff --git a/pkg/webhook/controlplane/registry_cache.go b/pkg/webhook/controlplane/registry_cache.go index 65b9cd19..d35a112b 100644 --- a/pkg/webhook/controlplane/registry_cache.go +++ b/pkg/webhook/controlplane/registry_cache.go @@ -9,7 +9,6 @@ import ( extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "github.com/gardener/gardener/pkg/utils" "github.com/pelletier/go-toml/v2" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/config" ) @@ -36,7 +35,7 @@ func ensureHostsConfig(reg config.RegistryCacheConfiguration, files *[]extension } hostsFile := extensionsv1alpha1.File{ Path: path.Join(configBaseDir(reg.Server), "hosts.toml"), - Permissions: ptr.To[uint32](0o644), + Permissions: new(uint32(0o644)), Content: extensionsv1alpha1.FileContent{ Inline: &extensionsv1alpha1.FileContentInline{ Encoding: "", @@ -51,7 +50,7 @@ func ensureHostsConfig(reg config.RegistryCacheConfiguration, files *[]extension func ensureCAFile(reg config.RegistryCacheConfiguration, files *[]extensionsv1alpha1.File) { caFile := extensionsv1alpha1.File{ Path: caPath(reg), - Permissions: ptr.To[uint32](0o644), + Permissions: new(uint32(0o644)), Content: extensionsv1alpha1.FileContent{ Inline: &extensionsv1alpha1.FileContentInline{ Encoding: "b64", diff --git a/pkg/webhook/seedprovider/ensurer_test.go b/pkg/webhook/seedprovider/ensurer_test.go index a8ea7fb9..549c741d 100644 --- a/pkg/webhook/seedprovider/ensurer_test.go +++ b/pkg/webhook/seedprovider/ensurer_test.go @@ -16,7 +16,6 @@ import ( "go.uber.org/mock/gomock" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/ptr" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/config" ) @@ -29,8 +28,8 @@ func TestController(t *testing.T) { var _ = Describe("Ensurer", func() { var ( etcdStorage = &config.ETCDStorage{ - ClassName: ptr.To("gardener.cloud-fast"), - Capacity: ptr.To(resource.MustParse("25Gi")), + ClassName: new("gardener.cloud-fast"), + Capacity: new(resource.MustParse("25Gi")), } ctrl *gomock.Controller diff --git a/test/integration/infrastructure/stackit/infrastructure_test.go b/test/integration/infrastructure/stackit/infrastructure_test.go index 93a3ed82..4211c076 100644 --- a/test/integration/infrastructure/stackit/infrastructure_test.go +++ b/test/integration/infrastructure/stackit/infrastructure_test.go @@ -121,7 +121,7 @@ var _ = BeforeSuite(func() { SaKeyJSON: stackitServiceAccount, } endpoints = stackitv1alpha1.APIEndpoints{ - IaaS: ptr.To("https://iaas.api.stackit.cloud"), + IaaS: new("https://iaas.api.stackit.cloud"), } validateFlags() @@ -233,11 +233,11 @@ var _ = BeforeSuite(func() { }) var _ = Describe("Infrastructure tests flow", func() { - testInfrastructure(ptr.To(reconcilerUseFlow)) + testInfrastructure(new(reconcilerUseFlow)) }) var _ = Describe("Infrastructure tests recover", func() { - testInfrastructure(ptr.To(reconcilerRecoverState)) + testInfrastructure(new(reconcilerRecoverState)) }) func testInfrastructure(reconciler *string) { @@ -393,7 +393,7 @@ func runTest( Spec: gardenerv1beta1.ShootSpec{ Region: *region, Networking: &gardenerv1beta1.Networking{ - Pods: ptr.To("10.123.0.0/24"), + Pods: new("10.123.0.0/24"), }, }, Status: gardenerv1beta1.ShootStatus{ @@ -593,11 +593,11 @@ func prepareIsolatedNetwork(log logr.Logger, networkName string) (*string, error log.Info("Waiting until network is created", "networkName", networkName) createOpts := iaas.CreateIsolatedNetworkPayload{ - Name: ptr.To(networkName), + Name: new(networkName), Ipv4: &iaas.CreateNetworkIPv4{ CreateNetworkIPv4WithPrefix: &iaas.CreateNetworkIPv4WithPrefix{ - Nameservers: ptr.To([]string{dnsServer}), - Prefix: ptr.To(workerCIDR), + Nameservers: new([]string{dnsServer}), + Prefix: new(workerCIDR), }, }, } @@ -652,18 +652,18 @@ func verifyCreation(infraStatus extensionsv1alpha1.InfrastructureStatus, provide if providerConfig.Networks.ID != nil { Expect(net.GetId()).To(Equal(*providerConfig.Networks.ID)) } - infrastructureIdentifier.networkID = ptr.To(net.GetId()) + infrastructureIdentifier.networkID = new(net.GetId()) // security group is created secGroup, err := iaasClient.GetSecurityGroupById(ctx, providerStatus.SecurityGroups[0].ID) Expect(err).NotTo(HaveOccurred()) Expect(secGroup.GetName()).To(Equal(providerStatus.SecurityGroups[0].Name)) - infrastructureIdentifier.secGroupID = ptr.To(secGroup.GetId()) + infrastructureIdentifier.secGroupID = new(secGroup.GetId()) // keypair is created keyPair, err := iaasClient.GetKeypair(ctx, providerStatus.Node.KeyName) Expect(err).NotTo(HaveOccurred()) - infrastructureIdentifier.keyPair = ptr.To(keyPair.GetName()) + infrastructureIdentifier.keyPair = new(keyPair.GetName()) // verify egressCIDRs Expect(infraStatus.EgressCIDRs).To(ContainElements(utils.ComputeEgressCIDRs(providerStatus.Networks.Router.ExternalFixedIPs))) diff --git a/test/project-wrapper/main.go b/test/project-wrapper/main.go index 01066982..a14bf117 100644 --- a/test/project-wrapper/main.go +++ b/test/project-wrapper/main.go @@ -14,12 +14,10 @@ import ( "syscall" "time" - "github.com/stackitcloud/stackit-sdk-go/core/utils" "github.com/stackitcloud/stackit-sdk-go/services/authorization" resourcemanager "github.com/stackitcloud/stackit-sdk-go/services/resourcemanager/v0api" "github.com/stackitcloud/stackit-sdk-go/services/serviceaccount" "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/utils/ptr" "k8s.io/utils/set" "github.com/stackitcloud/gardener-extension-provider-stackit/v2/test/project-wrapper/sdk" @@ -171,7 +169,7 @@ func assignRoleToServiceAccount(ctx context.Context, projectID string, email str return err } - _, err = client.AddMembers(ctx, projectID).AddMembersPayload(authorization.AddMembersPayload{Members: sdk.GetMembersForRoles(email, roles), ResourceType: ptr.To("project")}).Execute() + _, err = client.AddMembers(ctx, projectID).AddMembersPayload(authorization.AddMembersPayload{Members: sdk.GetMembersForRoles(email, roles), ResourceType: new("project")}).Execute() if err != nil { return err } @@ -207,7 +205,7 @@ func createServiceAccountAndKey(ctx context.Context, projectID string) (string, } createAccountPayload := serviceaccount.CreateServiceAccountPayload{ - Name: utils.Ptr("ske-intgrtn-tst"), + Name: new("ske-intgrtn-tst"), } resp, err := saClient.CreateServiceAccount(ctx, projectID).CreateServiceAccountPayload(createAccountPayload).Execute() if err != nil { @@ -257,7 +255,7 @@ func generateRandomSuffix(length int) string { // If the project becomes active within 30 retries, the function returns nil. // If the project does not become active within 30 seconds, the function returns an error indicating a timeout. func waitForProjectReadiness(ctx context.Context, client *sdk.Client, stackitProjectID string) error { - for i := 0; i < 30; i++ { + for range 30 { project, err := client.GetProject(ctx, stackitProjectID) if err != nil { log.Printf("Error getting project: %v", err) diff --git a/test/project-wrapper/sdk/client.go b/test/project-wrapper/sdk/client.go index 05d2c49e..4fdc7090 100644 --- a/test/project-wrapper/sdk/client.go +++ b/test/project-wrapper/sdk/client.go @@ -4,7 +4,6 @@ import ( "context" resourcemanager "github.com/stackitcloud/stackit-sdk-go/services/resourcemanager/v0api" - "k8s.io/utils/ptr" ) type Client struct { @@ -30,7 +29,7 @@ func (c *Client) CreateProject( subject string, ) (*resourcemanager.Project, error) { payload := resourcemanager.CreateProjectPayload{ - Labels: ptr.To(labels), + Labels: new(labels), Members: []resourcemanager.Member{ { Role: "owner",