Skip to content

Commit f91c799

Browse files
author
jmccormick2001
committed
cleanup and fix rmdata logic and errors from delete-data logic, also fix pgo-backrest error handling to fix error reporting to the job
1 parent 52a9dbb commit f91c799

File tree

11 files changed

+56
-29
lines changed

11 files changed

+56
-29
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ lsimage:
110110
loadimage:
111111
docker build -t pgo-load -f $(CO_BASEOS)/Dockerfile.pgo-load.$(CO_BASEOS) .
112112
docker tag pgo-load $(CO_IMAGE_PREFIX)/pgo-load:$(CO_IMAGE_TAG)
113-
rmdataimage:
113+
pgo-rmdata-image:
114114
docker build -t pgo-rmdata -f $(CO_BASEOS)/Dockerfile.pgo-rmdata.$(CO_BASEOS) .
115115
docker tag pgo-rmdata $(CO_IMAGE_PREFIX)/pgo-rmdata:$(CO_IMAGE_TAG)
116116
sqlrunnerimage:

apiserver/clusterservice/clusterimpl.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1001,7 +1001,7 @@ func createDeleteDataTasks(clusterName string, storageSpec crv1.PgStorageSpec, d
10011001
} else if v.Name == "pgwal-volume" {
10021002
dataRoots = append(dataRoots, deploymentName+"-wal")
10031003
} else if v.Name == "backrestrepo" {
1004-
dataRoots = append(dataRoots, "{archive,backup}")
1004+
dataRoots = append(dataRoots, deploymentName+"-backrest-shared-repo")
10051005
}
10061006

10071007
if v.VolumeSource.PersistentVolumeClaim != nil {

bin/remove-images.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
for CNAME in pgo-sqlrunner pgo-backrest-restore pgo-backrest-repo pgo-lspvc postgres-operator pgo-load pgo-apiserver pgo-rmdata pgo-backrest
16+
for CNAME in pgo-scheduler pgo-sqlrunner pgo-backrest-restore pgo-backrest-repo pgo-lspvc postgres-operator pgo-load pgo-apiserver pgo-rmdata pgo-backrest
1717
do
1818
docker rmi -f $CNAME $CO_IMAGE_PREFIX/$CNAME:$CO_IMAGE_TAG
1919
done

centos7/Dockerfile.pgo-rmdata.centos7

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ RUN mkdir -p /opt/cpm/bin
1212
ADD bin/pgo-rmdata/ /opt/cpm/bin
1313
ADD bin/uid_postgres.sh /opt/cpm/bin
1414

15-
RUN chown -R 26:26 /opt/cpm
15+
RUN chown -R 0:0 /opt/cpm
1616

1717
RUN chmod g=u /etc/passwd && \
1818
chmod g=u /etc/group
1919

20-
USER 26
20+
USER 0
2121

2222
ENTRYPOINT ["/opt/cpm/bin/uid_postgres.sh"]
2323

controller/podcontroller.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ func (c *PodController) checkReadyStatus(oldpod, newpod *apiv1.Pod) {
150150
log.Debugf("%s went to Ready from Not Ready, apply policies...", clusterName)
151151
taskoperator.ApplyPolicies(clusterName, c.PodClientset, c.PodClient)
152152
taskoperator.CompleteCreateClusterWorkflow(clusterName, c.PodClientset, c.PodClient)
153-
backrestoperator.StanzaCreate(c.Namespace, clusterName, c.PodClientset, c.PodClient)
153+
if newpod.ObjectMeta.Labels[util.LABEL_BACKREST] == "true" {
154+
backrestoperator.StanzaCreate(c.Namespace, clusterName, c.PodClientset, c.PodClient)
155+
}
154156
}
155157
}
156158
}
@@ -215,7 +217,9 @@ func (c *PodController) checkAutofailLabel(newpod *apiv1.Pod) bool {
215217

216218
pgcluster := crv1.Pgcluster{}
217219
found, err := kubeapi.Getpgcluster(c.PodClient, &pgcluster, clusterName, c.Namespace)
218-
if !found || err != nil {
220+
if !found {
221+
return false
222+
} else if err != nil {
219223
log.Error(err)
220224
return false
221225
}

kubeapi/pvc.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func GetPVC(clientset *kubernetes.Clientset, name, namespace string) (*v1.Persis
5959
options := meta_v1.GetOptions{}
6060
pvc, err := clientset.CoreV1().PersistentVolumeClaims(namespace).Get(name, options)
6161
if kerrors.IsNotFound(err) {
62-
log.Error("PVC " + name + " is not found")
62+
log.Debugf("PVC %s is not found", name)
6363
return pvc, false, err
6464
}
6565

@@ -79,7 +79,7 @@ func DeletePVC(clientset *kubernetes.Clientset, name, namespace string) error {
7979
delProp = meta_v1.DeletePropagationForeground
8080
delOptions.PropagationPolicy = &delProp
8181

82-
//err := clientset.CoreV1().PersistentVolumeClaims(namespace).Delete(name, &meta_v1.DeleteOptions{})
82+
//err := clientset.CoreV1().PersistentVolumelaims(namespace).Delete(name, &meta_v1.DeleteOptions{})
8383
err := clientset.CoreV1().PersistentVolumeClaims(namespace).Delete(name, &delOptions)
8484
if err != nil {
8585
log.Error("error deleting pvc " + err.Error())

operator/cluster/cluster.go

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -254,30 +254,36 @@ func DeleteClusterBase(clientset *kubernetes.Clientset, client *rest.RESTClient,
254254

255255
log.Debugf("deleteCluster called with strategy %s", cl.Spec.Strategy)
256256

257-
aftask := AutoFailoverTask{}
258-
aftask.Clear(client, cl.Spec.Name, namespace)
257+
pgtask := crv1.Pgtask{}
258+
found, _ := kubeapi.Getpgtask(client, &pgtask, cl.Spec.Name+"-"+util.LABEL_AUTOFAIL, namespace)
259+
if found {
260+
aftask := AutoFailoverTask{}
261+
aftask.Clear(client, cl.Spec.Name, namespace)
262+
}
259263

260264
if cl.Spec.Strategy == "" {
261265
cl.Spec.Strategy = "1"
262266
}
263267

264268
strategy, ok := strategyMap[cl.Spec.Strategy]
265-
if ok {
266-
log.Info("strategy found")
267-
} else {
269+
if ok == false {
268270
log.Error("invalid Strategy requested for cluster creation" + cl.Spec.Strategy)
269271
return
270272
}
271273

272274
strategy.DeleteCluster(clientset, client, cl, namespace)
273275

274-
err := kubeapi.Deletepgupgrade(client, cl.Spec.Name, namespace)
275-
if err == nil {
276-
log.Info("deleted pgupgrade " + cl.Spec.Name)
277-
} else if kerrors.IsNotFound(err) {
278-
log.Info("will not delete pgupgrade, not found for " + cl.Spec.Name)
279-
} else {
280-
log.Error("error deleting pgupgrade " + cl.Spec.Name + err.Error())
276+
upgrade := crv1.Pgupgrade{}
277+
found, _ = kubeapi.Getpgupgrade(client, &upgrade, cl.Spec.Name, namespace)
278+
if found {
279+
err := kubeapi.Deletepgupgrade(client, cl.Spec.Name, namespace)
280+
if err == nil {
281+
log.Debug("deleted pgupgrade " + cl.Spec.Name)
282+
} else if kerrors.IsNotFound(err) {
283+
log.Debug("will not delete pgupgrade, not found for " + cl.Spec.Name)
284+
} else {
285+
log.Error("error deleting pgupgrade " + cl.Spec.Name + err.Error())
286+
}
281287
}
282288

283289
}
@@ -294,7 +300,7 @@ func AddUpgradeBase(clientset *kubernetes.Clientset, client *rest.RESTClient, up
294300

295301
strategy, ok := strategyMap[cl.Spec.Strategy]
296302
if ok {
297-
log.Info("strategy found")
303+
log.Debug("strategy found")
298304
} else {
299305
log.Error("invalid Strategy requested for cluster upgrade" + cl.Spec.Strategy)
300306
return err

operator/cluster/cluster_strategy_1.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,11 @@ func (r Strategy1) DeleteCluster(clientset *kubernetes.Clientset, restclient *re
192192
kubeapi.DeleteService(clientset, cl.Spec.Name, namespace)
193193

194194
//delete the replica service
195-
kubeapi.DeleteService(clientset, cl.Spec.Name+ReplicaSuffix, namespace)
195+
var found bool
196+
_, found, err = kubeapi.GetService(clientset, cl.Spec.Name+ReplicaSuffix, namespace)
197+
if found {
198+
kubeapi.DeleteService(clientset, cl.Spec.Name+ReplicaSuffix, namespace)
199+
}
196200

197201
//delete the pgpool deployment if necessary
198202
if cl.Spec.UserLabels[util.LABEL_PGPOOL] == "true" {
@@ -208,7 +212,11 @@ func (r Strategy1) DeleteCluster(clientset *kubernetes.Clientset, restclient *re
208212
DeletePgreplicas(restclient, cl.Spec.Name, namespace)
209213

210214
//delete the pgbackups if necessary
211-
kubeapi.Deletepgbackup(restclient, cl.Spec.Name, namespace)
215+
pgback := crv1.Pgbackup{}
216+
found, err = kubeapi.Getpgbackup(restclient, &pgback, cl.Spec.Name, namespace)
217+
if found {
218+
kubeapi.Deletepgbackup(restclient, cl.Spec.Name, namespace)
219+
}
212220

213221
return err
214222

operator/task/rmdata.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func RemoveData(namespace string, clientset *kubernetes.Clientset, task *crv1.Pg
6060
}
6161

6262
jobFields := rmdatajobTemplateFields{
63-
JobName: "rmdata-" + util.RandStringBytesRmndr(8),
63+
JobName: task.Spec.Name + "-rmdata-" + util.RandStringBytesRmndr(4),
6464
Name: task.Spec.Name + "-" + pvcName,
6565
ClusterName: task.Spec.Name,
6666
PvcName: pvcName,
@@ -70,7 +70,7 @@ func RemoveData(namespace string, clientset *kubernetes.Clientset, task *crv1.Pg
7070
DataRoot: task.Spec.Parameters[util.LABEL_DATA_ROOT],
7171
ContainerResources: cr,
7272
}
73-
log.Debugf("creating rmdata job for pvc [%s]", pvcName)
73+
log.Debugf("creating rmdata job for cluster %s pvc %s", task.Spec.Name, pvcName)
7474

7575
var doc2 bytes.Buffer
7676
err := operator.RmdatajobTemplate.Execute(&doc2, jobFields)
@@ -90,6 +90,12 @@ func RemoveData(namespace string, clientset *kubernetes.Clientset, task *crv1.Pg
9090
return
9191
}
9292

93-
kubeapi.CreateJob(clientset, &newjob, namespace)
93+
var jobname string
94+
jobname, err = kubeapi.CreateJob(clientset, &newjob, namespace)
95+
if err != nil {
96+
log.Errorf("got error when creating rmdata job %s", jobname)
97+
return
98+
}
99+
log.Debugf("successfully created rmdata job %s", jobname)
94100

95101
}

pgo-backrest/pgo-backrest.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ func main() {
118118
reader := strings.NewReader(strings.Join(cmdStrs, " "))
119119
output, stderr, err := kubeapi.ExecToPodThroughAPI(config, Clientset, bashcmd, containername, PODNAME, Namespace, reader)
120120
if err != nil {
121+
log.Info("output=[" + output + "]")
122+
log.Info("stderr=[" + stderr + "]")
121123
log.Error(err)
124+
os.Exit(2)
122125
}
123126
log.Info("output=[" + output + "]")
124127
log.Info("stderr=[" + stderr + "]")

0 commit comments

Comments
 (0)