Skip to content

Commit a354a67

Browse files
author
jmccormick2001
committed
fixed bug in pgpool create logic to handle a previous cluster run that had pgpool attached
1 parent 163855f commit a354a67

File tree

3 files changed

+38
-15
lines changed

3 files changed

+38
-15
lines changed

conf/postgres-operator/pgo.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ Cluster:
2121
AutofailReplaceReplica: false
2222
LogStatement: none
2323
LogMinDurationStatement: 60000
24-
PrimaryStorage: rook
25-
XlogStorage: rook
26-
BackupStorage: rook
27-
ReplicaStorage: rook
28-
BackrestStorage: rook
24+
PrimaryStorage: hostpathstorage
25+
XlogStorage: hostpathstorage
26+
BackupStorage: hostpathstorage
27+
ReplicaStorage: hostpathstorage
28+
BackrestStorage: hostpathstorage
2929
Storage:
3030
hostpathstorage:
3131
AccessMode: ReadWriteMany

controller/podcontroller.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,5 +254,13 @@ func isPostgresPod(newpod *apiv1.Pod) bool {
254254
log.Debugf("pgo-backrest-repo pod added [%s]", newpod.Name)
255255
return false
256256
}
257+
if newpod.ObjectMeta.Labels[util.LABEL_PGPOOL] == "true" {
258+
log.Debugf("pgpool pod added [%s]", newpod.Name)
259+
return false
260+
}
261+
if newpod.ObjectMeta.Labels[util.LABEL_PGBOUNCER] == "true" {
262+
log.Debugf("pgbouncer pod added [%s]", newpod.Name)
263+
return false
264+
}
257265
return true
258266
}

operator/cluster/pgpool.go

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,11 @@ func ReconfigurePgpoolFromTask(clientset *kubernetes.Clientset, restclient *rest
101101
}
102102

103103
//create the pgpool but leave the existing service in place
104-
AddPgpool(clientset, &pgcluster, namespace, false)
104+
err = AddPgpool(clientset, &pgcluster, namespace, false)
105+
if err != nil {
106+
log.Error(err)
107+
return
108+
}
105109

106110
//remove task to cleanup
107111
err = kubeapi.Deletepgtask(restclient, task.Spec.Name, namespace)
@@ -131,7 +135,11 @@ func AddPgpoolFromTask(clientset *kubernetes.Clientset, restclient *rest.RESTCli
131135
pgcluster.Spec.UserLabels[util.LABEL_PGPOOL_SECRET] = userSpecifiedSecret
132136
log.Debugf("user specified pgpool-secret %s is being used for this pgpool", userSpecifiedSecret)
133137
}
134-
AddPgpool(clientset, &pgcluster, namespace, true)
138+
err = AddPgpool(clientset, &pgcluster, namespace, true)
139+
if err != nil {
140+
log.Error(err)
141+
return
142+
}
135143

136144
//remove task
137145
err = kubeapi.Deletepgtask(restclient, task.Spec.Name, namespace)
@@ -199,7 +207,7 @@ func DeletePgpoolFromTask(clientset *kubernetes.Clientset, restclient *rest.REST
199207
}
200208

201209
// ProcessPgpool ...
202-
func AddPgpool(clientset *kubernetes.Clientset, cl *crv1.Pgcluster, namespace string, createService bool) {
210+
func AddPgpool(clientset *kubernetes.Clientset, cl *crv1.Pgcluster, namespace string, createService bool) error {
203211
var doc bytes.Buffer
204212
var err error
205213

@@ -213,10 +221,11 @@ func AddPgpool(clientset *kubernetes.Clientset, cl *crv1.Pgcluster, namespace st
213221
} else {
214222
//generate a secret for pgpool using the testuser credential
215223
secretName = cl.Spec.Name + "-" + util.LABEL_PGPOOL_SECRET
224+
216225
err = CreatePgpoolSecret(clientset, primaryName, replicaName, primaryName, secretName, namespace)
217226
if err != nil {
218227
log.Error(err)
219-
return
228+
return err
220229
}
221230
log.Debug("pgpool secret created")
222231
}
@@ -241,7 +250,7 @@ func AddPgpool(clientset *kubernetes.Clientset, cl *crv1.Pgcluster, namespace st
241250
tmp, err := operator.Pgo.GetContainerResource(operator.Pgo.DefaultPgpoolResources)
242251
if err != nil {
243252
log.Error(err)
244-
return
253+
return err
245254
}
246255
fields.ContainerResources = operator.GetContainerResourcesJSON(&tmp)
247256

@@ -250,7 +259,7 @@ func AddPgpool(clientset *kubernetes.Clientset, cl *crv1.Pgcluster, namespace st
250259
err = operator.PgpoolTemplate.Execute(&doc, fields)
251260
if err != nil {
252261
log.Error(err)
253-
return
262+
return err
254263
}
255264

256265
if operator.CRUNCHY_DEBUG {
@@ -261,13 +270,13 @@ func AddPgpool(clientset *kubernetes.Clientset, cl *crv1.Pgcluster, namespace st
261270
err = json.Unmarshal(doc.Bytes(), &deployment)
262271
if err != nil {
263272
log.Error("error unmarshalling pgpool json into Deployment " + err.Error())
264-
return
273+
return err
265274
}
266275

267276
err = kubeapi.CreateDeployment(clientset, &deployment, namespace)
268277
if err != nil {
269278
log.Error("error creating pgpool Deployment " + err.Error())
270-
return
279+
return err
271280
}
272281

273282
if createService {
@@ -281,9 +290,10 @@ func AddPgpool(clientset *kubernetes.Clientset, cl *crv1.Pgcluster, namespace st
281290
err = CreateService(clientset, &svcFields, namespace)
282291
if err != nil {
283292
log.Error(err)
284-
return
293+
return err
285294
}
286295
}
296+
return err
287297
}
288298

289299
// DeletePgpool
@@ -302,10 +312,15 @@ func DeletePgpool(clientset *kubernetes.Clientset, clusterName, namespace string
302312
// CreatePgpoolSecret create a secret used by pgpool
303313
func CreatePgpoolSecret(clientset *kubernetes.Clientset, primary, replica, db, secretName, namespace string) error {
304314

305-
var err error
306315
var username, password string
307316
var pgpoolHBABytes, pgpoolConfBytes, pgpoolPasswdBytes []byte
308317

318+
_, found, err := kubeapi.GetSecret(clientset, secretName, namespace)
319+
if found {
320+
log.Debugf("pgpool secret %s already present, will reuse", secretName)
321+
return err
322+
}
323+
309324
pgpoolHBABytes, err = getPgpoolHBA()
310325
if err != nil {
311326
log.Error(err)

0 commit comments

Comments
 (0)