Skip to content

Commit

Permalink
delete pvc
Browse files Browse the repository at this point in the history
Signed-off-by: drivebyer <[email protected]>
  • Loading branch information
drivebyer committed Jan 9, 2024
1 parent 3723614 commit b0fa1cf
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 24 deletions.
10 changes: 7 additions & 3 deletions k8sutils/finalizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package k8sutils
import (
"context"
"fmt"
"k8s.io/utils/env"

redisv1beta2 "github.com/OT-CONTAINER-KIT/redis-operator/api/v1beta2"
"github.com/go-logr/logr"
Expand Down Expand Up @@ -133,7 +134,8 @@ func AddRedisSentinelFinalizer(cr *redisv1beta2.RedisSentinel, cl client.Client)

// finalizeRedisPVC delete PVC
func finalizeRedisPVC(client kubernetes.Interface, logger logr.Logger, cr *redisv1beta2.Redis) error {
PVCName := fmt.Sprintf("%s-%s-0", cr.Name, cr.Name)
pvcTemplateName := env.GetString(EnvOperatorSTSPVCTemplateName, cr.Name)
PVCName := fmt.Sprintf("%s-%s-0", pvcTemplateName, cr.Name)
err := client.CoreV1().PersistentVolumeClaims(cr.Namespace).Delete(context.TODO(), PVCName, metav1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) {
logger.Error(err, "Could not delete Persistent Volume Claim", "PVCName", PVCName)
Expand All @@ -146,7 +148,8 @@ func finalizeRedisPVC(client kubernetes.Interface, logger logr.Logger, cr *redis
func finalizeRedisClusterPVC(client kubernetes.Interface, logger logr.Logger, cr *redisv1beta2.RedisCluster) error {
for _, role := range []string{"leader", "follower"} {
for i := 0; i < int(cr.Spec.GetReplicaCounts(role)); i++ {
PVCName := fmt.Sprintf("%s-%s-%s-%s-%d", cr.Name, role, cr.Name, role, i)
pvcTemplateName := env.GetString(EnvOperatorSTSPVCTemplateName, cr.Name+"-"+role)
PVCName := fmt.Sprintf("%s-%s-%s-%d", pvcTemplateName, cr.Name, role, i)
err := client.CoreV1().PersistentVolumeClaims(cr.Namespace).Delete(context.TODO(), PVCName, metav1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) {
logger.Error(err, "Could not delete Persistent Volume Claim "+PVCName)
Expand All @@ -171,7 +174,8 @@ func finalizeRedisClusterPVC(client kubernetes.Interface, logger logr.Logger, cr
// finalizeRedisReplicationPVC delete PVCs
func finalizeRedisReplicationPVC(client kubernetes.Interface, logger logr.Logger, cr *redisv1beta2.RedisReplication) error {
for i := 0; i < int(cr.Spec.GetReplicationCounts("replication")); i++ {
PVCName := fmt.Sprintf("%s-%s-%d", cr.Name, cr.Name, i)
pvcTemplateName := env.GetString(EnvOperatorSTSPVCTemplateName, cr.Name)
PVCName := fmt.Sprintf("%s-%s-%d", pvcTemplateName, cr.Name, i)
err := client.CoreV1().PersistentVolumeClaims(cr.Namespace).Delete(context.TODO(), PVCName, metav1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) {
logger.Error(err, "Could not delete Persistent Volume Claim "+PVCName)
Expand Down
2 changes: 1 addition & 1 deletion k8sutils/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ func getVolumeMount(name string, persistenceEnabled *bool, clusterMode bool, nod

if persistenceEnabled != nil && *persistenceEnabled {
VolumeMounts = append(VolumeMounts, corev1.VolumeMount{
Name: name,
Name: env.GetString(EnvOperatorSTSPVCTemplateName, name),
MountPath: "/data",
})
}
Expand Down
4 changes: 2 additions & 2 deletions tests/_config/chainsaw-configuration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ spec:
timeouts:
apply: 5m
delete: 5m
assert: 15m
error: 15m
assert: 10m
error: 10m
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@
apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
name: redis-cluster-teardown
name: pvc-name
spec:
steps:
- name: Add PVC name environment
try:
- script:
content: |
kubectl patch deployment redis-operator --namespace redis-operator-system --type json -p='[{"op": "add", "path": "/spec/template/spec/containers/0/env/-", "value": {"name": "OPERATOR_STS_PVC_NAME", "value": "data"}}]'
kubectl patch deployment redis-operator-redis-operator --namespace redis-operator-system --type json -p='[{"op": "add", "path": "/spec/template/spec/containers/0/env/-", "value": {"name": "OPERATOR_STS_PVC_TEMPLATE_NAME", "value": "data"}}]'
# show the deployment
kubectl get deployment redis-operator-redis-operator -n redis-operator-system -o yaml
# show the operator logs
kubectl logs -l control-plane=redis-operator -n redis-operator-system
kubectl wait --for=condition=available --timeout=300s deployment/redis-operator-redis-operator -n redis-operator-system
- name: redis-cluster-install
try:
- apply:
Expand All @@ -22,25 +28,37 @@ spec:
file: ready-svc.yaml
- assert:
file: ready-pvc.yaml
catch:
- script:
content: |
# show the deployment
kubectl get deployment redis-operator-redis-operator -n redis-operator-system -o yaml
# show the operator logs
kubectl logs -l control-plane=redis-operator -n redis-operator-system
# describe the redis pods, which namespace like chainsaw-<random-string>, use grep to get the namespace
kubectl describe pod -l redis_setup_type=cluster -n $(kubectl get ns | grep chainsaw | awk '{print $1}' | head -n 1)
# show redis log
kubectl logs -l redis_setup_type=cluster -n $(kubectl get ns | grep chainsaw | awk '{print $1}' | head -n 1)
# - name: redis-cluster-uninstall
# try:
# - delete:
# ref:
# name: redis-cluster-v1beta2
# kind: RedisCluster
# apiVersion: redis.redis.opstreelabs.in/v1beta2
# - error:
# file: ready-cluster.yaml
# - error:
# file: ready-sts.yaml
# - error:
# file: ready-svc.yaml
# - error:
# file: ready-pvc.yaml
- name: redis-cluster-uninstall
try:
- delete:
ref:
name: redis-cluster-v1beta2
kind: RedisCluster
apiVersion: redis.redis.opstreelabs.in/v1beta2
- error:
file: ready-cluster.yaml
- error:
file: ready-sts.yaml
- error:
file: ready-svc.yaml
- error:
file: ready-pvc.yaml

- name: Remove PVC name environment
try:
- script:
content: |
kubectl patch deployment redis-operator --namespace redis-operator-system --type json -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/env/1"}]'
kubectl patch deployment redis-operator-redis-operator --namespace redis-operator-system --type json -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/env/1"}]'
kubectl wait --for=condition=available --timeout=300s deployment/redis-operator-redis-operator -n redis-operator-system

0 comments on commit b0fa1cf

Please sign in to comment.