diff --git a/Makefile b/Makefile index f70af840..bead566f 100644 --- a/Makefile +++ b/Makefile @@ -121,7 +121,7 @@ docs: gen-crd-api-reference-docs ## Run go generate to generate API reference do .PHONY: build-ironcore-net build-ironcore-net: generate fmt addlicense lint ## Build ironcore-net binary. - go build -o bin/manager ./cmd/controller-manger/main.go + go build -o bin/manager ./cmd/controller-manager/main.go go build -o bin/apiserver ./cmd/apiserver/main.go .PHONY: build-apinetlet diff --git a/internal/controllers/controllers_suite_test.go b/internal/controllers/controllers_suite_test.go index 80b775e4..6e976e66 100644 --- a/internal/controllers/controllers_suite_test.go +++ b/internal/controllers/controllers_suite_test.go @@ -20,8 +20,7 @@ import ( "github.com/ironcore-dev/ironcore-net/utils/expectations" utilsenvtest "github.com/ironcore-dev/ironcore/utils/envtest" "github.com/ironcore-dev/ironcore/utils/envtest/apiserver" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" + "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" "k8s.io/client-go/tools/record" @@ -29,10 +28,12 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/envtest" - . "sigs.k8s.io/controller-runtime/pkg/envtest/komega" logf "sigs.k8s.io/controller-runtime/pkg/log" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" - //+kubebuilder:scaffold:imports + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + . "sigs.k8s.io/controller-runtime/pkg/envtest/komega" ) // These tests use Ginkgo (BDD-style Go testing framework). Refer to diff --git a/internal/controllers/loadbalancer_controller_test.go b/internal/controllers/loadbalancer_controller_test.go index de9c7a46..080cf69a 100644 --- a/internal/controllers/loadbalancer_controller_test.go +++ b/internal/controllers/loadbalancer_controller_test.go @@ -5,11 +5,14 @@ package controllers import ( "github.com/ironcore-dev/ironcore-net/api/core/v1alpha1" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + . "github.com/ironcore-dev/ironcore/utils/testing" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" . "sigs.k8s.io/controller-runtime/pkg/envtest/komega" ) @@ -46,6 +49,18 @@ var _ = Describe("LoadBalancerController", func() { Expect(k8sClient.Create(ctx, loadBalancer)).To(Succeed()) ips := v1alpha1.GetLoadBalancerIPs(loadBalancer) + for i := range ips { + ipaddressForLB := &v1alpha1.IPAddress{} + err := k8sClient.Get(ctx, types.NamespacedName{Name: ips[i].String()}, ipaddressForLB) + Expect(err).NotTo(HaveOccurred()) + Expect(ipaddressForLB.Spec.ClaimRef.Name).ToNot(BeEmpty()) + + ipForLB := &v1alpha1.IP{} + err = k8sClient.Get(ctx, types.NamespacedName{Name: ipaddressForLB.Spec.ClaimRef.Name, Namespace: ipaddressForLB.Spec.ClaimRef.Namespace}, ipForLB) + Expect(err).NotTo(HaveOccurred()) + Expect(ipForLB.Spec.ClaimRef).ToNot(BeNil()) + } + By("waiting for the load balancer to create a daemon set") daemonSet := &v1alpha1.DaemonSet{ ObjectMeta: metav1.ObjectMeta{ diff --git a/internal/controllers/natgateway_controller_test.go b/internal/controllers/natgateway_controller_test.go index 4bd78a46..52a6e959 100644 --- a/internal/controllers/natgateway_controller_test.go +++ b/internal/controllers/natgateway_controller_test.go @@ -6,11 +6,14 @@ package controllers import ( "github.com/ironcore-dev/ironcore-net/api/core/v1alpha1" "github.com/ironcore-dev/ironcore-net/apimachinery/api/net" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + . "github.com/ironcore-dev/ironcore/utils/testing" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" . "sigs.k8s.io/controller-runtime/pkg/envtest/komega" ) @@ -38,6 +41,16 @@ var _ = Describe("NATGatewayController", func() { Expect(k8sClient.Create(ctx, natGateway)).To(Succeed()) natGatewayIP := natGateway.Spec.IPs[0].IP + ipaddressForNGW := &v1alpha1.IPAddress{} + err := k8sClient.Get(ctx, types.NamespacedName{Name: natGatewayIP.String()}, ipaddressForNGW) + Expect(err).NotTo(HaveOccurred()) + Expect(ipaddressForNGW.Spec.ClaimRef.Name).ToNot(BeEmpty()) + + ipForNGW := &v1alpha1.IP{} + err = k8sClient.Get(ctx, types.NamespacedName{Name: ipaddressForNGW.Spec.ClaimRef.Name, Namespace: ipaddressForNGW.Spec.ClaimRef.Namespace}, ipForNGW) + Expect(err).NotTo(HaveOccurred()) + Expect(ipForNGW.Spec.ClaimRef).ToNot(BeNil()) + By("creating a network interface as potential target") nic := &v1alpha1.NetworkInterface{ ObjectMeta: metav1.ObjectMeta{ diff --git a/internal/registry/ipallocator/ipallocator.go b/internal/registry/ipallocator/ipallocator.go index c23caab1..7847c19a 100644 --- a/internal/registry/ipallocator/ipallocator.go +++ b/internal/registry/ipallocator/ipallocator.go @@ -16,6 +16,7 @@ import ( v1alpha1client "github.com/ironcore-dev/ironcore-net/client-go/ironcorenet/versioned/typed/core/v1alpha1" v1alpha1listers "github.com/ironcore-dev/ironcore-net/client-go/listers/core/v1alpha1" "github.com/ironcore-dev/ironcore/utils/generic" + corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -198,6 +199,7 @@ func (a *Allocator) createEphemeralIP( Spec: v1alpha1.IPSpec{ Type: v1alpha1.IPTypePublic, IPFamily: a.ipFamily, + ClaimRef: &claimRef, }, }, metav1.CreateOptions{}) if err != nil {