Skip to content

Commit 0b1570f

Browse files
author
jmccormick2001
committed
fix scaledown --delete-data to remove the replica pvc with rmdata job
1 parent 8509141 commit 0b1570f

File tree

3 files changed

+51
-22
lines changed

3 files changed

+51
-22
lines changed

apiserver/clusterservice/clusterimpl.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -886,6 +886,7 @@ func createDeleteDataTasks(clusterName string, storageSpec crv1.PgStorageSpec, d
886886
log.Info("inside createDeleteDataTasks")
887887

888888
//get the pods for this cluster
889+
/**
889890
spec := crv1.PgclusterSpec{}
890891
cluster := &crv1.Pgcluster{
891892
ObjectMeta: meta_v1.ObjectMeta{
@@ -894,6 +895,7 @@ func createDeleteDataTasks(clusterName string, storageSpec crv1.PgStorageSpec, d
894895
Spec: spec,
895896
}
896897
cluster.Spec.Name = clusterName
898+
*/
897899

898900
selector := util.LABEL_PG_CLUSTER + "=" + clusterName + "," + util.LABEL_PGBACKUP + "!=true"
899901
log.Debugf("selector for delete is %s", selector)

apiserver/clusterservice/scaleimpl.go

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/crunchydata/postgres-operator/kubeapi"
2626
clusteroperator "github.com/crunchydata/postgres-operator/operator/cluster"
2727
"github.com/crunchydata/postgres-operator/util"
28-
"k8s.io/api/core/v1"
2928
"k8s.io/api/extensions/v1beta1"
3029
kerrors "k8s.io/apimachinery/pkg/api/errors"
3130
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -346,36 +345,60 @@ func ScaleDown(deleteData bool, clusterName, replicaName string) msgs.ScaleDownR
346345
response.Status.Msg = "pod not found for scale down replica and delete-data"
347346
return response
348347
}
349-
createDeleteTask(&pods.Items[0], replicaName, replica.Spec.ReplicaStorage)
348+
349+
err = createDeleteDataTasksForReplica(replicaName, replica.Spec.ReplicaStorage)
350+
if err != nil {
351+
response.Status.Code = msgs.Error
352+
response.Status.Msg = err.Error()
353+
return response
354+
}
355+
350356
}
351357
}
352358
response.Results = append(response.Results, "deleted Pgreplica "+replicaName)
353359
return response
354360
}
355361

356-
func createDeleteTask(pod *v1.Pod, replicaName string, storageSpec crv1.PgStorageSpec) {
357-
//create pgtask CRD
358-
spec := crv1.PgtaskSpec{}
359-
spec.Name = replicaName
360-
spec.TaskType = crv1.PgtaskDeleteData
361-
spec.StorageSpec = storageSpec
362-
spec.Parameters = apiserver.GetPVCName(pod)
363-
364-
newInstance := &crv1.Pgtask{
365-
ObjectMeta: meta_v1.ObjectMeta{
366-
Name: replicaName,
367-
},
368-
Spec: spec,
369-
}
362+
// removes data and or backup volumes for all pods in a cluster replica
363+
func createDeleteDataTasksForReplica(replicaName string, storageSpec crv1.PgStorageSpec) error {
364+
365+
var err error
370366

371-
newInstance.ObjectMeta.Labels = make(map[string]string)
372-
newInstance.ObjectMeta.Labels[util.LABEL_PG_CLUSTER] = replicaName
373-
newInstance.ObjectMeta.Labels[util.LABEL_RMDATA] = "true"
367+
log.Info("inside createDeleteDataTasksForReplica")
374368

375-
err := kubeapi.Createpgtask(apiserver.RESTClient,
376-
newInstance, apiserver.Namespace)
369+
selector := util.LABEL_REPLICA_NAME + "=" + replicaName
370+
log.Debugf("selector for delete is %s", selector)
371+
pods, err := kubeapi.GetPods(apiserver.Clientset, selector, apiserver.Namespace)
377372
if err != nil {
378-
return
373+
log.Error(err)
374+
return err
375+
}
376+
log.Debugf("got %d cluster pods for %s\n", len(pods.Items), replicaName)
377+
378+
for _, pod := range pods.Items {
379+
deploymentName := pod.ObjectMeta.Labels[util.LABEL_REPLICA_NAME]
380+
381+
//get the volumes for this pod
382+
for _, v := range pod.Spec.Volumes {
383+
384+
log.Debugf("volume name in delete logic is %s", v.Name)
385+
dataRoots := make([]string, 0)
386+
if v.Name == "pgdata" {
387+
dataRoots = append(dataRoots, deploymentName)
388+
} else if v.Name == "backrestrepo-volume" {
389+
dataRoots = append(dataRoots, deploymentName+"{-backups,-spool}")
390+
} else if v.Name == "backup" {
391+
dataRoots = append(dataRoots, deploymentName+"-backups")
392+
} else if v.Name == "pgwal-volume" {
393+
dataRoots = append(dataRoots, deploymentName+"-wal")
394+
}
395+
396+
if v.VolumeSource.PersistentVolumeClaim != nil {
397+
log.Debugf("volume [%s] pvc [%s] dataroots [%v]\n", v.Name, v.VolumeSource.PersistentVolumeClaim.ClaimName, dataRoots)
398+
createTask(storageSpec, replicaName, v.VolumeSource.PersistentVolumeClaim.ClaimName, dataRoots)
399+
}
400+
}
379401
}
380402

403+
return err
381404
}

apiserver/userservice/userservice.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ func ShowUserHandler(w http.ResponseWriter, r *http.Request) {
135135
if selector != "" {
136136
log.Debug("selector param was [" + selector + "]")
137137
}
138+
expired := r.URL.Query().Get("expired")
139+
if expired != "" {
140+
log.Debug("expired param was [" + expired + "]")
141+
}
138142
clientVersion := r.URL.Query().Get("version")
139143
if clientVersion != "" {
140144
log.Debug("version param was [" + clientVersion + "]")

0 commit comments

Comments
 (0)