@@ -80,21 +80,6 @@ func (builder *StatefulSetBuilder) Build() (client.Object, error) {
8080 if overrideSts .Spec .ServiceName != "" {
8181 sts .Spec .ServiceName = overrideSts .Spec .ServiceName
8282 }
83-
84- if len (overrideSts .Spec .VolumeClaimTemplates ) != 0 {
85- override := overrideSts .Spec .VolumeClaimTemplates
86- pvcList := make ([]corev1.PersistentVolumeClaim , len (override ))
87- for i := range override {
88- copyObjectMeta (& pvcList [i ].ObjectMeta , override [i ].EmbeddedObjectMeta )
89- pvcList [i ].Namespace = sts .Namespace // PVC should always be in the same namespace as the Stateful Set
90- pvcList [i ].Spec = override [i ].Spec
91- if err := controllerutil .SetControllerReference (builder .Instance , & pvcList [i ], builder .Scheme ); err != nil {
92- return nil , fmt .Errorf ("failed setting controller reference: %v" , err )
93- }
94- disableBlockOwnerDeletion (pvcList [i ])
95- }
96- sts .Spec .VolumeClaimTemplates = pvcList
97- }
9883 }
9984
10085 return sts , nil
@@ -137,7 +122,7 @@ func (builder *StatefulSetBuilder) Update(object client.Object) error {
137122 }
138123
139124 if builder .Instance .Spec .Override .StatefulSet != nil {
140- if err := applyStsOverride (sts , builder .Instance .Spec .Override .StatefulSet ); err != nil {
125+ if err := applyStsOverride (builder . Instance , builder . Scheme , sts , builder .Instance .Spec .Override .StatefulSet ); err != nil {
141126 return fmt .Errorf ("failed applying StatefulSet override: %v" , err )
142127 }
143128 }
@@ -156,7 +141,7 @@ func updatePersistenceStorageCapacity(templates *[]corev1.PersistentVolumeClaim,
156141 }
157142}
158143
159- func applyStsOverride (sts * appsv1.StatefulSet , stsOverride * rabbitmqv1beta1.StatefulSet ) error {
144+ func applyStsOverride (instance * rabbitmqv1beta1. RabbitmqCluster , scheme * runtime. Scheme , sts * appsv1.StatefulSet , stsOverride * rabbitmqv1beta1.StatefulSet ) error {
160145 if stsOverride .EmbeddedLabelsAnnotations != nil {
161146 copyLabelsAnnotations (& sts .ObjectMeta , * stsOverride .EmbeddedLabelsAnnotations )
162147 }
@@ -174,6 +159,21 @@ func applyStsOverride(sts *appsv1.StatefulSet, stsOverride *rabbitmqv1beta1.Stat
174159 sts .Spec .PodManagementPolicy = stsOverride .Spec .PodManagementPolicy
175160 }
176161
162+ if len (stsOverride .Spec .VolumeClaimTemplates ) != 0 {
163+ volumeClaimTemplatesOverride := stsOverride .Spec .VolumeClaimTemplates
164+ pvcOverride := make ([]corev1.PersistentVolumeClaim , len (volumeClaimTemplatesOverride ))
165+ for i := range volumeClaimTemplatesOverride {
166+ copyObjectMeta (& pvcOverride [i ].ObjectMeta , volumeClaimTemplatesOverride [i ].EmbeddedObjectMeta )
167+ pvcOverride [i ].Namespace = sts .Namespace // PVC should always be in the same namespace as the Stateful Set
168+ pvcOverride [i ].Spec = volumeClaimTemplatesOverride [i ].Spec
169+ if err := controllerutil .SetControllerReference (instance , & pvcOverride [i ], scheme ); err != nil {
170+ return fmt .Errorf ("failed setting controller reference: %v" , err )
171+ }
172+ disableBlockOwnerDeletion (pvcOverride [i ])
173+ }
174+ sts .Spec .VolumeClaimTemplates = pvcOverride
175+ }
176+
177177 if stsOverride .Spec .Template == nil {
178178 return nil
179179 }
@@ -187,6 +187,7 @@ func applyStsOverride(sts *appsv1.StatefulSet, stsOverride *rabbitmqv1beta1.Stat
187187 }
188188 sts .Spec .Template .Spec = patchedPodSpec
189189 }
190+
190191 return nil
191192}
192193
0 commit comments