diff --git a/pkg/ovndbcluster/statefulset.go b/pkg/ovndbcluster/statefulset.go index 98b79d26..42967ffd 100644 --- a/pkg/ovndbcluster/statefulset.go +++ b/pkg/ovndbcluster/statefulset.go @@ -18,6 +18,7 @@ import ( "github.com/openstack-k8s-operators/lib-common/modules/common/affinity" "github.com/openstack-k8s-operators/lib-common/modules/common/env" "github.com/openstack-k8s-operators/lib-common/modules/common/tls" + "github.com/openstack-k8s-operators/lib-common/modules/common/util" ovnv1 "github.com/openstack-k8s-operators/ovn-operator/api/v1beta1" ovn_common "github.com/openstack-k8s-operators/ovn-operator/pkg/common" @@ -245,21 +246,18 @@ func StatefulSet( // https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention statefulset.Spec.PersistentVolumeClaimRetentionPolicy = &appsv1.StatefulSetPersistentVolumeClaimRetentionPolicy{ - WhenDeleted: appsv1.DeletePersistentVolumeClaimRetentionPolicyType, + WhenDeleted: appsv1.RetainPersistentVolumeClaimRetentionPolicyType, WhenScaled: appsv1.RetainPersistentVolumeClaimRetentionPolicyType, } - blockOwnerDeletion := false - ownerRef := metav1.NewControllerRef(instance, instance.GroupVersionKind()) - ownerRef.BlockOwnerDeletion = &blockOwnerDeletion + volumeClaimLabels := util.MergeMaps(labels, map[string]string{"owner": instance.Name}) statefulset.Spec.VolumeClaimTemplates = []corev1.PersistentVolumeClaim{ { ObjectMeta: metav1.ObjectMeta{ - Name: instance.Name + PVCSuffixEtcOVN, - Namespace: instance.Namespace, - Labels: labels, - OwnerReferences: []metav1.OwnerReference{*ownerRef}, + Name: instance.Name + PVCSuffixEtcOVN, + Namespace: instance.Namespace, + Labels: volumeClaimLabels, }, Spec: corev1.PersistentVolumeClaimSpec{ AccessModes: []corev1.PersistentVolumeAccessMode{ diff --git a/tests/kuttl/common/assert_sample_deployment.yaml b/tests/kuttl/common/assert_sample_deployment.yaml index abe932e2..51893baa 100644 --- a/tests/kuttl/common/assert_sample_deployment.yaml +++ b/tests/kuttl/common/assert_sample_deployment.yaml @@ -17,6 +17,8 @@ # - ovsdbserver-sb-0 Service # - OVNController Daemonset created as many pods as nodes*2 # - OVNControllerOVS Daemonset created as many pods as nodes*2 +# - 1 PVC for OVNDBCluster NB +# - 1 PVC for OVNDBCluster SB apiVersion: ovn.openstack.org/v1beta1 kind: OVNNorthd @@ -388,3 +390,23 @@ commands: sb_pod=$(oc get pod -n $NAMESPACE -l service=ovsdbserver-sb -o name|head -1) oc rsh -n $NAMESPACE ${sb_pod} ovn-sbctl list chassis | grep -q ${host} || exit 1 exit 0 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-0 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-0 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound diff --git a/tests/kuttl/tests/ovn_db_delete/02-assert.yaml b/tests/kuttl/tests/ovn_db_delete/02-assert.yaml index 0dd7be77..e37f68e2 100644 --- a/tests/kuttl/tests/ovn_db_delete/02-assert.yaml +++ b/tests/kuttl/tests/ovn_db_delete/02-assert.yaml @@ -3,6 +3,7 @@ # # - 1 OVNDBCluster CR # - 3 Pods for OVNDBCluster nb CR +# - 3 PVCs for OVNDBCluster nb CR # apiVersion: ovn.openstack.org/v1beta1 @@ -45,3 +46,62 @@ spec: status: availableReplicas: 3 --- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-0 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-1 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-2 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-0 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-1 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-2 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound diff --git a/tests/kuttl/tests/ovn_db_delete/08-assert.yaml b/tests/kuttl/tests/ovn_db_delete/08-assert.yaml index 7506efde..8633fdf1 100644 --- a/tests/kuttl/tests/ovn_db_delete/08-assert.yaml +++ b/tests/kuttl/tests/ovn_db_delete/08-assert.yaml @@ -4,6 +4,8 @@ # - 1 OVNDBCluster CR # - 1 Pod for OVNDBCluster nb CR # - 1 Pod for OVNDBCluster sb CR +# - 3 PVCs for OVNDBCluster nb CR +# - 3 PVCs for OVNDBCluster sb CR # apiVersion: ovn.openstack.org/v1beta1 @@ -46,3 +48,62 @@ spec: status: availableReplicas: 1 --- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-0 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-1 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-2 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-0 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-1 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-2 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound diff --git a/tests/kuttl/tests/ovn_db_delete/10-assert.yaml b/tests/kuttl/tests/ovn_db_delete/10-assert.yaml new file mode 100644 index 00000000..a82d74d2 --- /dev/null +++ b/tests/kuttl/tests/ovn_db_delete/10-assert.yaml @@ -0,0 +1,65 @@ +# +# Check for: +# +# PVCs for OVNDBCluster nb CR is not deleted +# PVCs for OVNDBCluster sb CR is not deleted +# +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-0 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-1 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-nb-sample-etc-ovn-ovsdbserver-nb-2 + labels: + owner: ovndbcluster-nb-sample + service: ovsdbserver-nb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-0 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-1 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ovndbcluster-sb-sample-etc-ovn-ovsdbserver-sb-2 + labels: + owner: ovndbcluster-sb-sample + service: ovsdbserver-sb +status: + phase: Bound