mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-21 11:54:14 +02:00
Merge pull request #291 from zalando-incubator/deepcopy_spec
Use deepcopy to propagate the spec to clusters.
This commit is contained in:
Generated
+9
-5
@@ -1,8 +1,8 @@
|
|||||||
hash: aa008e00a8cf34fa59a081dd67644319f9d5d077bf4de81aa4a25a2d5b8781a1
|
hash: 688e15147f1217da635b83ee33f20a3741a400a493787d79992d1650f6e4c514
|
||||||
updated: 2018-01-15T15:00:53.231516+01:00
|
updated: 2018-05-17T10:46:49.090929+02:00
|
||||||
imports:
|
imports:
|
||||||
- name: github.com/aws/aws-sdk-go
|
- name: github.com/aws/aws-sdk-go
|
||||||
version: 0cebc639926eb91b0192dae4b28bc808417e764c
|
version: ee7b4b1162937cba700de23bd90acb742982e626
|
||||||
subpackages:
|
subpackages:
|
||||||
- aws
|
- aws
|
||||||
- aws/awserr
|
- aws/awserr
|
||||||
@@ -20,6 +20,8 @@ imports:
|
|||||||
- aws/request
|
- aws/request
|
||||||
- aws/session
|
- aws/session
|
||||||
- aws/signer/v4
|
- aws/signer/v4
|
||||||
|
- internal/sdkio
|
||||||
|
- internal/sdkrand
|
||||||
- internal/shareddefaults
|
- internal/shareddefaults
|
||||||
- private/protocol
|
- private/protocol
|
||||||
- private/protocol/ec2query
|
- private/protocol/ec2query
|
||||||
@@ -97,6 +99,8 @@ imports:
|
|||||||
- buffer
|
- buffer
|
||||||
- jlexer
|
- jlexer
|
||||||
- jwriter
|
- jwriter
|
||||||
|
- name: github.com/mohae/deepcopy
|
||||||
|
version: c48cc78d482608239f6c4c92a4abd87eb8761c90
|
||||||
- name: github.com/motomux/pretty
|
- name: github.com/motomux/pretty
|
||||||
version: b2aad2c9a95d14eb978f29baa6e3a5c3c20eef30
|
version: b2aad2c9a95d14eb978f29baa6e3a5c3c20eef30
|
||||||
- name: github.com/PuerkitoBio/purell
|
- name: github.com/PuerkitoBio/purell
|
||||||
@@ -104,7 +108,7 @@ imports:
|
|||||||
- name: github.com/PuerkitoBio/urlesc
|
- name: github.com/PuerkitoBio/urlesc
|
||||||
version: 5bd2802263f21d8788851d5305584c82a5c75d7e
|
version: 5bd2802263f21d8788851d5305584c82a5c75d7e
|
||||||
- name: github.com/Sirupsen/logrus
|
- name: github.com/Sirupsen/logrus
|
||||||
version: d682213848ed68c0a260ca37d6dd5ace8423f5ba
|
version: c155da19408a8799da419ed3eeb0cb5db0ad5dbc
|
||||||
- name: github.com/spf13/pflag
|
- name: github.com/spf13/pflag
|
||||||
version: 9ff6c6923cfffbcd502984b8e0c80539a94968b7
|
version: 9ff6c6923cfffbcd502984b8e0c80539a94968b7
|
||||||
- name: github.com/ugorji/go
|
- name: github.com/ugorji/go
|
||||||
@@ -153,7 +157,7 @@ imports:
|
|||||||
- pkg/client/clientset/clientset/scheme
|
- pkg/client/clientset/clientset/scheme
|
||||||
- pkg/client/clientset/clientset/typed/apiextensions/v1beta1
|
- pkg/client/clientset/clientset/typed/apiextensions/v1beta1
|
||||||
- name: k8s.io/apimachinery
|
- name: k8s.io/apimachinery
|
||||||
version: 8ab5f3d8a330c2e9baaf84e39042db8d49034ae2
|
version: 1cb2cdd78d38df243e686d1b572b76e190469842
|
||||||
subpackages:
|
subpackages:
|
||||||
- pkg/api/equality
|
- pkg/api/equality
|
||||||
- pkg/api/errors
|
- pkg/api/errors
|
||||||
|
|||||||
@@ -44,3 +44,4 @@ import:
|
|||||||
- tools/clientcmd
|
- tools/clientcmd
|
||||||
- tools/remotecommand
|
- tools/remotecommand
|
||||||
- package: gopkg.in/yaml.v2
|
- package: gopkg.in/yaml.v2
|
||||||
|
- package: github.com/mohae/deepcopy
|
||||||
|
|||||||
@@ -348,10 +348,9 @@ func (c *Controller) mergeDeprecatedPostgreSQLSpecParameters(spec *spec.Postgres
|
|||||||
|
|
||||||
func (c *Controller) queueClusterEvent(informerOldSpec, informerNewSpec *spec.Postgresql, eventType spec.EventType) {
|
func (c *Controller) queueClusterEvent(informerOldSpec, informerNewSpec *spec.Postgresql, eventType spec.EventType) {
|
||||||
var (
|
var (
|
||||||
uid types.UID
|
uid types.UID
|
||||||
clusterName spec.NamespacedName
|
clusterName spec.NamespacedName
|
||||||
clusterError error
|
clusterError error
|
||||||
oldSpec, newSpec *spec.Postgresql
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if informerOldSpec != nil { //update, delete
|
if informerOldSpec != nil { //update, delete
|
||||||
@@ -380,22 +379,13 @@ func (c *Controller) queueClusterEvent(informerOldSpec, informerNewSpec *spec.Po
|
|||||||
// in the informer internal state, making it incohherent with the actual Kubernetes object (and, as a side
|
// in the informer internal state, making it incohherent with the actual Kubernetes object (and, as a side
|
||||||
// effect, the modified state will be returned together with subsequent events).
|
// effect, the modified state will be returned together with subsequent events).
|
||||||
|
|
||||||
if informerOldSpec != nil {
|
|
||||||
t := *informerOldSpec
|
|
||||||
oldSpec = &t
|
|
||||||
}
|
|
||||||
if informerNewSpec != nil {
|
|
||||||
t := *informerNewSpec
|
|
||||||
newSpec = &t
|
|
||||||
}
|
|
||||||
|
|
||||||
workerID := c.clusterWorkerID(clusterName)
|
workerID := c.clusterWorkerID(clusterName)
|
||||||
clusterEvent := spec.ClusterEvent{
|
clusterEvent := spec.ClusterEvent{
|
||||||
EventTime: time.Now(),
|
EventTime: time.Now(),
|
||||||
EventType: eventType,
|
EventType: eventType,
|
||||||
UID: uid,
|
UID: uid,
|
||||||
OldSpec: oldSpec,
|
OldSpec: informerOldSpec.Clone(),
|
||||||
NewSpec: newSpec,
|
NewSpec: informerNewSpec.Clone(),
|
||||||
WorkerID: workerID,
|
WorkerID: workerID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package spec
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/mohae/deepcopy"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -138,6 +139,19 @@ var (
|
|||||||
serviceNameRegex = regexp.MustCompile(serviceNameRegexString)
|
serviceNameRegex = regexp.MustCompile(serviceNameRegexString)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Clone makes a deepcopy of the Postgresql structure. The Error field is nulled-out,
|
||||||
|
// as there is no guaratee that the actual implementation of the error interface
|
||||||
|
// will not contain any private fields not-reachable to deepcopy. This should be ok,
|
||||||
|
// since Error is never read from a Kubernetes object.
|
||||||
|
func (p *Postgresql) Clone() *Postgresql {
|
||||||
|
if p == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
c := deepcopy.Copy(p).(*Postgresql)
|
||||||
|
c.Error = nil
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
func parseTime(s string) (time.Time, error) {
|
func parseTime(s string) (time.Time, error) {
|
||||||
parts := strings.Split(s, ":")
|
parts := strings.Split(s, ":")
|
||||||
if len(parts) != 2 {
|
if len(parts) != 2 {
|
||||||
|
|||||||
@@ -4,11 +4,10 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var parseTimeTests = []struct {
|
var parseTimeTests = []struct {
|
||||||
@@ -546,3 +545,15 @@ func TestPostgresListMeta(t *testing.T) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPostgresqlClone(t *testing.T) {
|
||||||
|
for _, tt := range unmarshalCluster {
|
||||||
|
cp := &tt.out
|
||||||
|
cp.Error = nil
|
||||||
|
clone := cp.Clone()
|
||||||
|
if !reflect.DeepEqual(clone, cp) {
|
||||||
|
t.Errorf("TestPostgresqlClone expected: \n%#v\n, got \n%#v", cp, clone)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user