Skip to content

Commit 66f2cda

Browse files
authored
Move operator to go 1.14 (zalando#882)
* update go modules march 2020 * update to GO 1.14 * reflect k8s client API changes
1 parent ba9cf68 commit 66f2cda

File tree

26 files changed

+319
-273
lines changed

26 files changed

+319
-273
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ branches:
88
language: go
99

1010
go:
11-
- "1.12.x"
11+
- "1.14.x"
1212

1313
before_install:
1414
- go get github.com/mattn/goveralls

delivery.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pipeline:
1212
- desc: 'Install go'
1313
cmd: |
1414
cd /tmp
15-
wget -q https://storage.googleapis.com/golang/go1.12.linux-amd64.tar.gz -O go.tar.gz
15+
wget -q https://storage.googleapis.com/golang/go1.14.linux-amd64.tar.gz -O go.tar.gz
1616
tar -xf go.tar.gz
1717
mv go /usr/local
1818
ln -s /usr/local/go/bin/go /usr/bin/go

go.mod

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,19 @@
11
module github.com/zalando/postgres-operator
22

3-
go 1.12
3+
go 1.14
44

55
require (
6-
github.com/aws/aws-sdk-go v1.25.44
7-
github.com/emicklei/go-restful v2.9.6+incompatible // indirect
8-
github.com/evanphx/json-patch v4.5.0+incompatible // indirect
9-
github.com/googleapis/gnostic v0.3.0 // indirect
10-
github.com/imdario/mergo v0.3.8 // indirect
11-
github.com/lib/pq v1.2.0
6+
github.com/aws/aws-sdk-go v1.29.33
7+
github.com/lib/pq v1.3.0
128
github.com/motomux/pretty v0.0.0-20161209205251-b2aad2c9a95d
13-
github.com/sirupsen/logrus v1.4.2
9+
github.com/r3labs/diff v0.0.0-20191120142937-b4ed99a31f5a
10+
github.com/sirupsen/logrus v1.5.0
1411
github.com/stretchr/testify v1.4.0
15-
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 // indirect
16-
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect
17-
golang.org/x/sys v0.0.0-20191210023423-ac6580df4449 // indirect
18-
golang.org/x/tools v0.0.0-20191209225234-22774f7dae43 // indirect
19-
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
20-
gopkg.in/yaml.v2 v2.2.4
21-
k8s.io/api v0.0.0-20191121015604-11707872ac1c
22-
k8s.io/apiextensions-apiserver v0.0.0-20191204090421-cd61debedab5
23-
k8s.io/apimachinery v0.0.0-20191203211716-adc6f4cd9e7d
24-
k8s.io/client-go v0.0.0-20191204082520-bc9b51d240b2
25-
k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e
12+
golang.org/x/tools v0.0.0-20200326210457-5d86d385bf88 // indirect
13+
gopkg.in/yaml.v2 v2.2.8
14+
k8s.io/api v0.18.0
15+
k8s.io/apiextensions-apiserver v0.18.0
16+
k8s.io/apimachinery v0.18.0
17+
k8s.io/client-go v0.18.0
18+
k8s.io/code-generator v0.18.0
2619
)

go.sum

Lines changed: 83 additions & 85 deletions
Large diffs are not rendered by default.

pkg/cluster/cluster.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cluster
33
// Postgres CustomResourceDefinition object i.e. Spilo
44

55
import (
6+
"context"
67
"database/sql"
78
"encoding/json"
89
"fmt"
@@ -88,7 +89,7 @@ type Cluster struct {
8889
pgDb *sql.DB
8990
mu sync.Mutex
9091
userSyncStrategy spec.UserSyncer
91-
deleteOptions *metav1.DeleteOptions
92+
deleteOptions metav1.DeleteOptions
9293
podEventsQueue *cache.FIFO
9394

9495
teamsAPIClient teams.Interface
@@ -131,7 +132,7 @@ func New(cfg Config, kubeClient k8sutil.KubernetesClient, pgSpec acidv1.Postgres
131132
Services: make(map[PostgresRole]*v1.Service),
132133
Endpoints: make(map[PostgresRole]*v1.Endpoints)},
133134
userSyncStrategy: users.DefaultUserSyncStrategy{},
134-
deleteOptions: &metav1.DeleteOptions{PropagationPolicy: &deletePropagationPolicy},
135+
deleteOptions: metav1.DeleteOptions{PropagationPolicy: &deletePropagationPolicy},
135136
podEventsQueue: podEventsQueue,
136137
KubeClient: kubeClient,
137138
}
@@ -182,7 +183,8 @@ func (c *Cluster) setStatus(status string) {
182183
// we cannot do a full scale update here without fetching the previous manifest (as the resourceVersion may differ),
183184
// however, we could do patch without it. In the future, once /status subresource is there (starting Kubernetes 1.11)
184185
// we should take advantage of it.
185-
newspec, err := c.KubeClient.AcidV1ClientSet.AcidV1().Postgresqls(c.clusterNamespace()).Patch(c.Name, types.MergePatchType, patch, "status")
186+
newspec, err := c.KubeClient.AcidV1ClientSet.AcidV1().Postgresqls(c.clusterNamespace()).Patch(
187+
context.TODO(), c.Name, types.MergePatchType, patch, metav1.PatchOptions{}, "status")
186188
if err != nil {
187189
c.logger.Errorf("could not update status: %v", err)
188190
// return as newspec is empty, see PR654
@@ -1185,38 +1187,38 @@ func (c *Cluster) deleteClusterObject(
11851187

11861188
func (c *Cluster) deletePatroniClusterServices() error {
11871189
get := func(name string) (spec.NamespacedName, error) {
1188-
svc, err := c.KubeClient.Services(c.Namespace).Get(name, metav1.GetOptions{})
1190+
svc, err := c.KubeClient.Services(c.Namespace).Get(context.TODO(), name, metav1.GetOptions{})
11891191
return util.NameFromMeta(svc.ObjectMeta), err
11901192
}
11911193

11921194
deleteServiceFn := func(name string) error {
1193-
return c.KubeClient.Services(c.Namespace).Delete(name, c.deleteOptions)
1195+
return c.KubeClient.Services(c.Namespace).Delete(context.TODO(), name, c.deleteOptions)
11941196
}
11951197

11961198
return c.deleteClusterObject(get, deleteServiceFn, "service")
11971199
}
11981200

11991201
func (c *Cluster) deletePatroniClusterEndpoints() error {
12001202
get := func(name string) (spec.NamespacedName, error) {
1201-
ep, err := c.KubeClient.Endpoints(c.Namespace).Get(name, metav1.GetOptions{})
1203+
ep, err := c.KubeClient.Endpoints(c.Namespace).Get(context.TODO(), name, metav1.GetOptions{})
12021204
return util.NameFromMeta(ep.ObjectMeta), err
12031205
}
12041206

12051207
deleteEndpointFn := func(name string) error {
1206-
return c.KubeClient.Endpoints(c.Namespace).Delete(name, c.deleteOptions)
1208+
return c.KubeClient.Endpoints(c.Namespace).Delete(context.TODO(), name, c.deleteOptions)
12071209
}
12081210

12091211
return c.deleteClusterObject(get, deleteEndpointFn, "endpoint")
12101212
}
12111213

12121214
func (c *Cluster) deletePatroniClusterConfigMaps() error {
12131215
get := func(name string) (spec.NamespacedName, error) {
1214-
cm, err := c.KubeClient.ConfigMaps(c.Namespace).Get(name, metav1.GetOptions{})
1216+
cm, err := c.KubeClient.ConfigMaps(c.Namespace).Get(context.TODO(), name, metav1.GetOptions{})
12151217
return util.NameFromMeta(cm.ObjectMeta), err
12161218
}
12171219

12181220
deleteConfigMapFn := func(name string) error {
1219-
return c.KubeClient.ConfigMaps(c.Namespace).Delete(name, c.deleteOptions)
1221+
return c.KubeClient.ConfigMaps(c.Namespace).Delete(context.TODO(), name, c.deleteOptions)
12201222
}
12211223

12221224
return c.deleteClusterObject(get, deleteConfigMapFn, "configmap")

pkg/cluster/exec.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package cluster
22

33
import (
44
"bytes"
5+
"context"
56
"fmt"
67
"strings"
78

8-
"k8s.io/api/core/v1"
9+
v1 "k8s.io/api/core/v1"
910
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1011
"k8s.io/client-go/kubernetes/scheme"
1112
"k8s.io/client-go/tools/remotecommand"
@@ -23,7 +24,7 @@ func (c *Cluster) ExecCommand(podName *spec.NamespacedName, command ...string) (
2324
execErr bytes.Buffer
2425
)
2526

26-
pod, err := c.KubeClient.Pods(podName.Namespace).Get(podName.Name, metav1.GetOptions{})
27+
pod, err := c.KubeClient.Pods(podName.Namespace).Get(context.TODO(), podName.Name, metav1.GetOptions{})
2728
if err != nil {
2829
return "", fmt.Errorf("could not get pod info: %v", err)
2930
}

pkg/cluster/k8sres.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cluster
22

33
import (
4+
"context"
45
"encoding/json"
56
"fmt"
67
"path"
@@ -914,11 +915,17 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef
914915

915916
if c.OpConfig.PodEnvironmentConfigMap != (pkgspec.NamespacedName{}) {
916917
var cm *v1.ConfigMap
917-
cm, err = c.KubeClient.ConfigMaps(c.OpConfig.PodEnvironmentConfigMap.Namespace).Get(c.OpConfig.PodEnvironmentConfigMap.Name, metav1.GetOptions{})
918+
cm, err = c.KubeClient.ConfigMaps(c.OpConfig.PodEnvironmentConfigMap.Namespace).Get(
919+
context.TODO(),
920+
c.OpConfig.PodEnvironmentConfigMap.Name,
921+
metav1.GetOptions{})
918922
if err != nil {
919923
// if not found, try again using the cluster's namespace if it's different (old behavior)
920924
if k8sutil.ResourceNotFound(err) && c.Namespace != c.OpConfig.PodEnvironmentConfigMap.Namespace {
921-
cm, err = c.KubeClient.ConfigMaps(c.Namespace).Get(c.OpConfig.PodEnvironmentConfigMap.Name, metav1.GetOptions{})
925+
cm, err = c.KubeClient.ConfigMaps(c.Namespace).Get(
926+
context.TODO(),
927+
c.OpConfig.PodEnvironmentConfigMap.Name,
928+
metav1.GetOptions{})
922929
}
923930
if err != nil {
924931
return nil, fmt.Errorf("could not read PodEnvironmentConfigMap: %v", err)

pkg/cluster/pod.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cluster
22

33
import (
4+
"context"
45
"fmt"
56
"math/rand"
67

@@ -17,7 +18,7 @@ func (c *Cluster) listPods() ([]v1.Pod, error) {
1718
LabelSelector: c.labelsSet(false).String(),
1819
}
1920

20-
pods, err := c.KubeClient.Pods(c.Namespace).List(listOptions)
21+
pods, err := c.KubeClient.Pods(c.Namespace).List(context.TODO(), listOptions)
2122
if err != nil {
2223
return nil, fmt.Errorf("could not get list of pods: %v", err)
2324
}
@@ -30,7 +31,7 @@ func (c *Cluster) getRolePods(role PostgresRole) ([]v1.Pod, error) {
3031
LabelSelector: c.roleLabelsSet(false, role).String(),
3132
}
3233

33-
pods, err := c.KubeClient.Pods(c.Namespace).List(listOptions)
34+
pods, err := c.KubeClient.Pods(c.Namespace).List(context.TODO(), listOptions)
3435
if err != nil {
3536
return nil, fmt.Errorf("could not get list of pods: %v", err)
3637
}
@@ -73,7 +74,7 @@ func (c *Cluster) deletePod(podName spec.NamespacedName) error {
7374
ch := c.registerPodSubscriber(podName)
7475
defer c.unregisterPodSubscriber(podName)
7576

76-
if err := c.KubeClient.Pods(podName.Namespace).Delete(podName.Name, c.deleteOptions); err != nil {
77+
if err := c.KubeClient.Pods(podName.Namespace).Delete(context.TODO(), podName.Name, c.deleteOptions); err != nil {
7778
return err
7879
}
7980

@@ -183,7 +184,7 @@ func (c *Cluster) MigrateMasterPod(podName spec.NamespacedName) error {
183184
eol bool
184185
)
185186

186-
oldMaster, err := c.KubeClient.Pods(podName.Namespace).Get(podName.Name, metav1.GetOptions{})
187+
oldMaster, err := c.KubeClient.Pods(podName.Namespace).Get(context.TODO(), podName.Name, metav1.GetOptions{})
187188

188189
if err != nil {
189190
return fmt.Errorf("could not get pod: %v", err)
@@ -206,7 +207,9 @@ func (c *Cluster) MigrateMasterPod(podName spec.NamespacedName) error {
206207
// we must have a statefulset in the cluster for the migration to work
207208
if c.Statefulset == nil {
208209
var sset *appsv1.StatefulSet
209-
if sset, err = c.KubeClient.StatefulSets(c.Namespace).Get(c.statefulSetName(),
210+
if sset, err = c.KubeClient.StatefulSets(c.Namespace).Get(
211+
context.TODO(),
212+
c.statefulSetName(),
210213
metav1.GetOptions{}); err != nil {
211214
return fmt.Errorf("could not retrieve cluster statefulset: %v", err)
212215
}
@@ -247,7 +250,7 @@ func (c *Cluster) MigrateMasterPod(podName spec.NamespacedName) error {
247250

248251
// MigrateReplicaPod recreates pod on a new node
249252
func (c *Cluster) MigrateReplicaPod(podName spec.NamespacedName, fromNodeName string) error {
250-
replicaPod, err := c.KubeClient.Pods(podName.Namespace).Get(podName.Name, metav1.GetOptions{})
253+
replicaPod, err := c.KubeClient.Pods(podName.Namespace).Get(context.TODO(), podName.Name, metav1.GetOptions{})
251254
if err != nil {
252255
return fmt.Errorf("could not get pod: %v", err)
253256
}
@@ -276,7 +279,7 @@ func (c *Cluster) recreatePod(podName spec.NamespacedName) (*v1.Pod, error) {
276279
defer c.unregisterPodSubscriber(podName)
277280
stopChan := make(chan struct{})
278281

279-
if err := c.KubeClient.Pods(podName.Namespace).Delete(podName.Name, c.deleteOptions); err != nil {
282+
if err := c.KubeClient.Pods(podName.Namespace).Delete(context.TODO(), podName.Name, c.deleteOptions); err != nil {
280283
return nil, fmt.Errorf("could not delete pod: %v", err)
281284
}
282285

@@ -300,7 +303,7 @@ func (c *Cluster) recreatePods() error {
300303
LabelSelector: ls.String(),
301304
}
302305

303-
pods, err := c.KubeClient.Pods(namespace).List(listOptions)
306+
pods, err := c.KubeClient.Pods(namespace).List(context.TODO(), listOptions)
304307
if err != nil {
305308
return fmt.Errorf("could not get the list of pods: %v", err)
306309
}
@@ -349,7 +352,7 @@ func (c *Cluster) recreatePods() error {
349352
}
350353

351354
func (c *Cluster) podIsEndOfLife(pod *v1.Pod) (bool, error) {
352-
node, err := c.KubeClient.Nodes().Get(pod.Spec.NodeName, metav1.GetOptions{})
355+
node, err := c.KubeClient.Nodes().Get(context.TODO(), pod.Spec.NodeName, metav1.GetOptions{})
353356
if err != nil {
354357
return false, err
355358
}

0 commit comments

Comments
 (0)