Fix an issue when not assigning the merge result.

Add some tests.
This commit is contained in:
Oleksii Kliukin 2017-11-30 18:59:50 +01:00
parent 831ebb1f32
commit 611cfe96d6
4 changed files with 8 additions and 6 deletions

View File

@ -610,12 +610,12 @@ func (c *Cluster) initSystemUsers() {
func (c *Cluster) initRobotUsers() error {
for username, userFlags := range c.Spec.Users {
if !isValidUsername(username) {
return fmt.Errorf("invalid username: '%v'", username)
return fmt.Errorf("invalid username: %q", username)
}
flags, err := normalizeUserFlags(userFlags)
if err != nil {
return fmt.Errorf("invalid flags for user '%v': %v", username, err)
return fmt.Errorf("invalid flags for user %q: %v", username, err)
}
if _, present := c.pgUsers[username]; !present {
c.pgUsers[username] = spec.PgUser{
@ -630,6 +630,7 @@ func (c *Cluster) initRobotUsers() error {
c.logger.Debugf("merging user %q data", username)
user := c.pgUsers[username]
user.Flags = flags
c.pgUsers[username] = user
}
}

View File

@ -17,6 +17,7 @@ import (
"github.com/zalando-incubator/postgres-operator/pkg/util"
"github.com/zalando-incubator/postgres-operator/pkg/util/constants"
"github.com/zalando-incubator/postgres-operator/pkg/util/retryutil"
"sort"
)
func isValidUsername(username string) bool {
@ -77,7 +78,7 @@ func normalizeUserFlags(userFlags []string) ([]string, error) {
if addLogin {
flags = append(flags, constants.RoleFlagLogin)
}
sort.Strings(flags)
return flags, nil
}

View File

@ -58,7 +58,7 @@ type CloneDescription struct {
EndTimestamp string `json:"timestamp,omitempty"`
}
type userFlags []string
type UserFlags []string
// PostgresStatus contains status of the PostgreSQL cluster (running, creation failed etc.)
type PostgresStatus string
@ -99,7 +99,7 @@ type PostgresSpec struct {
UseLoadBalancer *bool `json:"useLoadBalancer,omitempty"`
ReplicaLoadBalancer bool `json:"replicaLoadBalancer,omitempty"`
NumberOfInstances int32 `json:"numberOfInstances"`
Users map[string]userFlags `json:"users"`
Users map[string]UserFlags `json:"users"`
MaintenanceWindows []MaintenanceWindow `json:"maintenanceWindows,omitempty"`
Clone CloneDescription `json:"clone"`
ClusterName string `json:"-"`

View File

@ -226,7 +226,7 @@ var unmarshalCluster = []struct {
TeamID: "ACID",
AllowedSourceRanges: []string{"127.0.0.1/32"},
NumberOfInstances: 2,
Users: map[string]userFlags{"zalando": {"superuser", "createdb"}},
Users: map[string]UserFlags{"zalando": {"superuser", "createdb"}},
MaintenanceWindows: []MaintenanceWindow{{
Everyday: false,
Weekday: time.Monday,