move setStatus test to controller package and make function public
This commit is contained in:
parent
f0888b6017
commit
2ad951e172
|
|
@ -102,5 +102,5 @@ func (postgresStatus PostgresStatus) Creating() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (postgresStatus PostgresStatus) String() string {
|
func (postgresStatus PostgresStatus) String() string {
|
||||||
return fmt.Sprintf(`status=%s`, postgresStatus.PostgresClusterStatus)
|
return fmt.Sprintf(`"status":{"PostgresClusterStatus": %s}`, postgresStatus.PostgresClusterStatus)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ package cluster
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
|
@ -19,8 +20,6 @@ import (
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
|
|
||||||
"encoding/json"
|
|
||||||
|
|
||||||
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
|
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
|
||||||
"github.com/zalando/postgres-operator/pkg/spec"
|
"github.com/zalando/postgres-operator/pkg/spec"
|
||||||
"github.com/zalando/postgres-operator/pkg/util"
|
"github.com/zalando/postgres-operator/pkg/util"
|
||||||
|
|
@ -149,9 +148,9 @@ func (c *Cluster) setProcessName(procName string, args ...interface{}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cluster) setStatus(status string) {
|
func (c *Cluster) SetStatus(status string) {
|
||||||
// TODO: eventually switch to updateStatus() for kubernetes 1.11 and above
|
// TODO: eventually switch to updateStatus() for kubernetes 1.11 and above
|
||||||
patch, err := json.Marshal(&acidv1.PostgresStatus{PostgresClusterStatus: status})
|
patch, err := json.Marshal(acidv1.PostgresStatus{PostgresClusterStatus: status})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.logger.Errorf("could not marshal status: %v", err)
|
c.logger.Errorf("could not marshal status: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -210,13 +209,13 @@ func (c *Cluster) Create() error {
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
c.setStatus(acidv1.ClusterStatusRunning) //TODO: are you sure it's running?
|
c.SetStatus(acidv1.ClusterStatusRunning) //TODO: are you sure it's running?
|
||||||
} else {
|
} else {
|
||||||
c.setStatus(acidv1.ClusterStatusAddFailed)
|
c.SetStatus(acidv1.ClusterStatusAddFailed)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
c.setStatus(acidv1.ClusterStatusCreating)
|
c.SetStatus(acidv1.ClusterStatusCreating)
|
||||||
|
|
||||||
for _, role := range []PostgresRole{Master, Replica} {
|
for _, role := range []PostgresRole{Master, Replica} {
|
||||||
|
|
||||||
|
|
@ -483,14 +482,14 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
|
||||||
c.setStatus(acidv1.ClusterStatusUpdating)
|
c.SetStatus(acidv1.ClusterStatusUpdating)
|
||||||
c.setSpec(newSpec)
|
c.setSpec(newSpec)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if updateFailed {
|
if updateFailed {
|
||||||
c.setStatus(acidv1.ClusterStatusUpdateFailed)
|
c.SetStatus(acidv1.ClusterStatusUpdateFailed)
|
||||||
} else {
|
} else {
|
||||||
c.setStatus(acidv1.ClusterStatusRunning)
|
c.SetStatus(acidv1.ClusterStatusRunning)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,20 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
var logger = logrus.New().WithField("test", "cluster")
|
var logger = logrus.New().WithField("test", "cluster")
|
||||||
var cl = New(Config{OpConfig: config.Config{ProtectedRoles: []string{"admin"},
|
var cl = New(
|
||||||
Auth: config.Auth{SuperUsername: superUserName,
|
Config{
|
||||||
ReplicationUsername: replicationUserName}}},
|
OpConfig: config.Config{
|
||||||
k8sutil.KubernetesClient{}, acidv1.Postgresql{}, logger)
|
ProtectedRoles: []string{"admin"},
|
||||||
|
Auth: config.Auth{
|
||||||
|
SuperUsername: superUserName,
|
||||||
|
ReplicationUsername: replicationUserName,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
k8sutil.KubernetesClient{},
|
||||||
|
acidv1.Postgresql{},
|
||||||
|
logger,
|
||||||
|
)
|
||||||
|
|
||||||
func TestInitRobotUsers(t *testing.T) {
|
func TestInitRobotUsers(t *testing.T) {
|
||||||
testName := "TestInitRobotUsers"
|
testName := "TestInitRobotUsers"
|
||||||
|
|
@ -318,31 +328,3 @@ func TestShouldDeleteSecret(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetStatus(t *testing.T) {
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
status acidv1.PostgresStatus
|
|
||||||
outcome bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
status: acidv1.PostgresStatus{PostgresClusterStatus: acidv1.ClusterStatusCreating},
|
|
||||||
outcome: cl.Status.Creating(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
status: acidv1.PostgresStatus{PostgresClusterStatus: acidv1.ClusterStatusRunning},
|
|
||||||
outcome: cl.Status.Running(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
status: acidv1.PostgresStatus{PostgresClusterStatus: acidv1.ClusterStatusSyncFailed},
|
|
||||||
outcome: !cl.Status.Success(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tt := range tests {
|
|
||||||
cl.setStatus(tt.status.PostgresClusterStatus)
|
|
||||||
if tt.outcome {
|
|
||||||
t.Errorf("Wrong status: %s", cl.Status.String())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,9 @@ func (c *Cluster) Sync(newSpec *acidv1.Postgresql) error {
|
||||||
defer func() {
|
defer func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.logger.Warningf("error while syncing cluster state: %v", err)
|
c.logger.Warningf("error while syncing cluster state: %v", err)
|
||||||
c.setStatus(acidv1.ClusterStatusSyncFailed)
|
c.SetStatus(acidv1.ClusterStatusSyncFailed)
|
||||||
} else if !c.Status.Running() {
|
} else if !c.Status.Running() {
|
||||||
c.setStatus(acidv1.ClusterStatusRunning)
|
c.SetStatus(acidv1.ClusterStatusRunning)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,13 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
b64 "encoding/base64"
|
b64 "encoding/base64"
|
||||||
|
|
||||||
|
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
|
||||||
|
"github.com/zalando/postgres-operator/pkg/spec"
|
||||||
|
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||||
|
|
||||||
"github.com/zalando/postgres-operator/pkg/spec"
|
|
||||||
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -186,3 +187,33 @@ func TestGetInfrastructureRoles(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetStatus(t *testing.T) {
|
||||||
|
|
||||||
|
for _, cl := range c.clusters {
|
||||||
|
tests := []struct {
|
||||||
|
status acidv1.PostgresStatus
|
||||||
|
outcome bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
status: acidv1.PostgresStatus{PostgresClusterStatus: acidv1.ClusterStatusCreating},
|
||||||
|
outcome: cl.Status.Creating(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
status: acidv1.PostgresStatus{PostgresClusterStatus: acidv1.ClusterStatusRunning},
|
||||||
|
outcome: cl.Status.Running(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
status: acidv1.PostgresStatus{PostgresClusterStatus: acidv1.ClusterStatusInvalid},
|
||||||
|
outcome: !cl.Status.Success(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
cl.SetStatus(tt.status.PostgresClusterStatus)
|
||||||
|
if tt.outcome {
|
||||||
|
t.Errorf("Wrong status: %s", cl.Status.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue