@@ -86,6 +86,18 @@ func cleanupVMClusters(ctx context.Context, k8sClient client.Client, vmclusters
8686 }
8787}
8888
89+ func verifyOwnerReferences (ctx context.Context , cr * vmv1alpha1.VMDistributedCluster , vmclusters []vmv1beta1.VMCluster , namespace string ) {
90+ var fetchedVMCluster vmv1beta1.VMCluster
91+ for _ , vmcluster := range vmclusters {
92+ Expect (k8sClient .Get (ctx , types.NamespacedName {Name : vmcluster .Name , Namespace : namespace }, & fetchedVMCluster )).To (Succeed ())
93+ Expect (fetchedVMCluster .GetOwnerReferences ()).To (HaveLen (1 ))
94+ ownerRef := fetchedVMCluster .GetOwnerReferences ()[0 ]
95+ Expect (ownerRef .Kind ).To (Equal ("VMDistributedCluster" ))
96+ Expect (ownerRef .APIVersion ).To (Equal ("operator.victoriametrics.com/v1alpha1" ))
97+ Expect (ownerRef .Name ).To (Equal (cr .Name ))
98+ }
99+ }
100+
89101var _ = Describe ("e2e vmdistributedcluster" , Label ("vm" , "vmdistributedcluster" ), func () {
90102 var ctx context.Context
91103
@@ -210,7 +222,7 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
210222 }
211223
212224 Context ("create" , func () {
213- DescribeTable ("should create vmdistributedcluster with VMAgent" , func (cr * vmv1alpha1.VMDistributedCluster , vmclusters []vmv1beta1.VMCluster , vmagents map [string ]* vmv1beta1.VMAgent , verify func (cr * vmv1alpha1.VMDistributedCluster )) {
225+ DescribeTable ("should create vmdistributedcluster with VMAgent" , func (cr * vmv1alpha1.VMDistributedCluster , vmclusters []vmv1beta1.VMCluster , vmagents map [string ]* vmv1beta1.VMAgent , verify func (cr * vmv1alpha1.VMDistributedCluster , createdVMClusters []vmv1beta1. VMCluster )) {
214226 beforeEach ()
215227 DeferCleanup (func () {
216228 cleanupVMClusters (ctx , k8sClient , vmclusters , namespacedName )
@@ -241,7 +253,7 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
241253 if verify != nil {
242254 var createdCluster vmv1alpha1.VMDistributedCluster
243255 Expect (k8sClient .Get (ctx , namespacedName , & createdCluster )).To (Succeed ())
244- verify (& createdCluster )
256+ verify (& createdCluster , vmclusters )
245257 }
246258 },
247259 Entry ("with single VMCluster" , & vmv1alpha1.VMDistributedCluster {
@@ -291,12 +303,13 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
291303 {URL : "http://localhost:8428/api/v1/write" },
292304 },
293305 },
294- }}, func (cr * vmv1alpha1.VMDistributedCluster ) {
306+ }}, func (cr * vmv1alpha1.VMDistributedCluster , createdVMClusters []vmv1beta1. VMCluster ) {
295307 Expect (cr .Status .VMClusterInfo ).To (HaveLen (1 ))
296308 names := []string {
297309 cr .Status .VMClusterInfo [0 ].VMClusterName ,
298310 }
299311 Expect (names ).To (ContainElements ("vmcluster-1" ))
312+ verifyOwnerReferences (ctx , cr , createdVMClusters , namespace )
300313 }),
301314 Entry ("with multiple VMClusters and VMAgent pairs" , & vmv1alpha1.VMDistributedCluster {
302315 ObjectMeta : metav1.ObjectMeta {
@@ -379,13 +392,14 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
379392 {URL : "http://localhost:8428/api/v1/write" },
380393 },
381394 },
382- }}, func (cr * vmv1alpha1.VMDistributedCluster ) {
395+ }}, func (cr * vmv1alpha1.VMDistributedCluster , createdVMClusters []vmv1beta1. VMCluster ) {
383396 Expect (cr .Status .VMClusterInfo ).To (HaveLen (2 ))
384397 names := []string {
385398 cr .Status .VMClusterInfo [0 ].VMClusterName ,
386399 cr .Status .VMClusterInfo [1 ].VMClusterName ,
387400 }
388401 Expect (names ).To (ContainElements ("vmcluster-1" , "vmcluster-2" ))
402+ verifyOwnerReferences (ctx , cr , createdVMClusters , namespace )
389403 }),
390404 Entry ("with mixed VMClusters (some with VMAgent, some without)" , & vmv1alpha1.VMDistributedCluster {
391405 ObjectMeta : metav1.ObjectMeta {
@@ -458,13 +472,14 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
458472 {URL : "http://localhost:8428/api/v1/write" },
459473 },
460474 },
461- }}, func (cr * vmv1alpha1.VMDistributedCluster ) {
475+ }}, func (cr * vmv1alpha1.VMDistributedCluster , createdVMClusters []vmv1beta1. VMCluster ) {
462476 Expect (cr .Status .VMClusterInfo ).To (HaveLen (2 ))
463477 names := []string {
464478 cr .Status .VMClusterInfo [0 ].VMClusterName ,
465479 cr .Status .VMClusterInfo [1 ].VMClusterName ,
466480 }
467481 Expect (names ).To (ContainElements ("vmcluster-1" , "vmcluster-2" ))
482+ verifyOwnerReferences (ctx , cr , createdVMClusters , namespace )
468483 }),
469484 )
470485
@@ -540,6 +555,7 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
540555 Eventually (func () error {
541556 return expectObjectStatusOperational (ctx , k8sClient , & vmv1alpha1.VMDistributedCluster {}, namespacedName )
542557 }, eventualStatefulsetAppReadyTimeout ).WithContext (ctx ).Should (Succeed ())
558+ verifyOwnerReferences (ctx , cr , vmclusters , namespace )
543559
544560 // Apply spec update
545561 Expect (k8sClient .Get (ctx , namespacedName , cr )).To (Succeed ())
@@ -630,6 +646,7 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
630646 Eventually (func () error {
631647 return expectObjectStatusOperational (ctx , k8sClient , & vmv1alpha1.VMDistributedCluster {}, namespacedName )
632648 }, eventualStatefulsetAppReadyTimeout ).Should (Succeed ())
649+ verifyOwnerReferences (ctx , cr , vmclusters , namespace )
633650
634651 By ("pausing the VMDistributedCluster" )
635652 // Re-fetch the latest VMDistributedCluster object to avoid conflict errors
@@ -783,6 +800,7 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
783800 Eventually (func () error {
784801 return expectObjectStatusOperational (ctx , k8sClient , & vmv1alpha1.VMDistributedCluster {}, namespacedName )
785802 }, eventualStatefulsetAppReadyTimeout ).WithContext (ctx ).Should (Succeed ())
803+ verifyOwnerReferences (ctx , cr , vmclusters , namespace )
786804
787805 // Update to update VMAgent
788806 Eventually (func () error {
@@ -843,6 +861,16 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
843861 },
844862 }
845863 Expect (k8sClient .Create (ctx , cr )).To (Succeed ())
864+ var inlineVMClusters []vmv1beta1.VMCluster
865+ for _ , zone := range cr .Spec .Zones {
866+ inlineVMClusters = append (inlineVMClusters , vmv1beta1.VMCluster {
867+ ObjectMeta : metav1.ObjectMeta {
868+ Name : zone .Name ,
869+ Namespace : namespace ,
870+ },
871+ })
872+ }
873+ verifyOwnerReferences (ctx , cr , inlineVMClusters , namespace )
846874 DeferCleanup (func () {
847875 Expect (finalize .SafeDeleteWithFinalizer (ctx , k8sClient , cr )).To (Succeed ())
848876 })
@@ -978,6 +1006,7 @@ var _ = Describe("e2e vmdistributedcluster", Label("vm", "vmdistributedcluster")
9781006 Eventually (func () error {
9791007 return expectObjectStatusOperational (ctx , k8sClient , & vmv1alpha1.VMDistributedCluster {}, namespacedName )
9801008 }, eventualStatefulsetAppReadyTimeout ).WithContext (ctx ).Should (Succeed ())
1009+ verifyOwnerReferences (ctx , cr , []vmv1beta1.VMCluster {* initialCluster }, namespace )
9811010
9821011 By ("verifying that the referenced VMCluster has the override applied" )
9831012 var updatedCluster vmv1beta1.VMCluster
0 commit comments