Minor code changes

This commit is contained in:
Sergey Dudoladov 2019-04-16 18:03:33 +02:00
parent eb82078f99
commit a73b986b45
2 changed files with 12 additions and 8 deletions

View File

@ -490,7 +490,8 @@ func compareResoucesAssumeFirstNotNil(a *v1.ResourceRequirements, b *v1.Resource
} }
// Update changes Kubernetes objects according to the new specification. Unlike the sync case, the missing object. // Update changes Kubernetes objects according to the new specification. Unlike the sync case, the missing object.
// (i.e. service) is treated as an error. // (i.e. service) is treated as an error
// logical backup cron jobs are an exception: they can be freely created/deleted by users
func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error { func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
updateFailed := false updateFailed := false
@ -580,8 +581,7 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
// logical backup job // logical backup job
func() { func() {
// special case: create if not existed before // create if it did not exist
// with all other k8s entities a missing object causes an error during update
if newSpec.Spec.EnableLogicalBackup && !oldSpec.Spec.EnableLogicalBackup { if newSpec.Spec.EnableLogicalBackup && !oldSpec.Spec.EnableLogicalBackup {
c.logger.Debugf("creating backup cron job") c.logger.Debugf("creating backup cron job")
if err := c.createLogicalBackupJob(); err != nil { if err := c.createLogicalBackupJob(); err != nil {

View File

@ -8,7 +8,7 @@ import (
clientbatchv1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1" clientbatchv1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1"
"github.com/zalando/postgres-operator/pkg/util/constants" "github.com/zalando/postgres-operator/pkg/util/constants"
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
policybeta1 "k8s.io/api/policy/v1beta1" policybeta1 "k8s.io/api/policy/v1beta1"
apiextclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" apiextclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apiextbeta1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1" apiextbeta1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1"
@ -147,6 +147,10 @@ func SamePDB(cur, new *policybeta1.PodDisruptionBudget) (match bool, reason stri
return return
} }
func getJobImage(cronJob *batchv1beta1.CronJob) string {
return cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Image
}
// SameCronJob compares Specs of logical backup cron jobs // SameCronJob compares Specs of logical backup cron jobs
func SameCronJob(cur, new *batchv1beta1.CronJob) (match bool, reason string) { func SameCronJob(cur, new *batchv1beta1.CronJob) (match bool, reason string) {
@ -155,11 +159,11 @@ func SameCronJob(cur, new *batchv1beta1.CronJob) (match bool, reason string) {
new.Spec.Schedule, cur.Spec.Schedule) new.Spec.Schedule, cur.Spec.Schedule)
} }
newImage := new.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Image newImage := getJobImage(new)
oldImage := cur.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Image curImage := getJobImage(cur)
if newImage != oldImage { if newImage != curImage {
return false, fmt.Sprintf("new job's image %q doesn't match the current one %q", return false, fmt.Sprintf("new job's image %q doesn't match the current one %q",
newImage, oldImage) newImage, curImage)
} }
return true, "" return true, ""