Remove function for state only. Fix var names.

This commit is contained in:
Jan Mußler 2021-02-19 11:34:40 +01:00
parent c6d7cb5ed5
commit 14e04cc7fe
2 changed files with 8 additions and 41 deletions

View File

@ -12,6 +12,7 @@ import (
"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"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/pkg/util/retryutil" "github.com/zalando/postgres-operator/pkg/util/retryutil"
) )
@ -312,14 +313,14 @@ func (c *Cluster) isSafeToRecreatePods(pods *v1.PodList) bool {
for _, pod := range pods.Items { for _, pod := range pods.Items {
var state string var data patroni.MemberData
err := retryutil.Retry(1*time.Second, 5*time.Second, err := retryutil.Retry(1*time.Second, 5*time.Second,
func() (bool, error) { func() (bool, error) {
var err error var err error
state, err = c.patroni.GetPatroniMemberState(&pod) data, err = c.patroni.GetMemberData(&pod)
if err != nil { if err != nil {
return false, err return false, err
@ -331,7 +332,7 @@ func (c *Cluster) isSafeToRecreatePods(pods *v1.PodList) bool {
if err != nil { if err != nil {
c.logger.Errorf("failed to get Patroni state for pod: %s", err) c.logger.Errorf("failed to get Patroni state for pod: %s", err)
return false return false
} else if state == "creating replica" { } else if data.State == "creating replica" {
c.logger.Warningf("cannot re-create replica %s: it is currently being initialized", pod.Name) c.logger.Warningf("cannot re-create replica %s: it is currently being initialized", pod.Name)
return false return false
} }

View File

@ -26,7 +26,6 @@ const (
type Interface interface { type Interface interface {
Switchover(master *v1.Pod, candidate string) error Switchover(master *v1.Pod, candidate string) error
SetPostgresParameters(server *v1.Pod, options map[string]string) error SetPostgresParameters(server *v1.Pod, options map[string]string) error
GetPatroniMemberState(pod *v1.Pod) (string, error)
GetMemberData(server *v1.Pod) (MemberData, error) GetMemberData(server *v1.Pod) (MemberData, error)
} }
@ -127,39 +126,6 @@ func (p *Patroni) SetPostgresParameters(server *v1.Pod, parameters map[string]st
return p.httpPostOrPatch(http.MethodPatch, apiURLString+configPath, buf) return p.httpPostOrPatch(http.MethodPatch, apiURLString+configPath, buf)
} }
//GetPatroniMemberState returns a state of member of a Patroni cluster
func (p *Patroni) GetPatroniMemberState(server *v1.Pod) (string, error) {
apiURLString, err := apiURL(server)
if err != nil {
return "", err
}
response, err := p.httpClient.Get(apiURLString)
if err != nil {
return "", fmt.Errorf("could not perform Get request: %v", err)
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return "", fmt.Errorf("could not read response: %v", err)
}
data := make(map[string]interface{})
err = json.Unmarshal(body, &data)
if err != nil {
return "", err
}
state, ok := data["state"].(string)
if !ok {
return "", errors.New("Patroni Get call response contains wrong type for 'state' field")
}
return state, nil
}
// MemberData Patroni member data from Patroni API // MemberData Patroni member data from Patroni API
type MemberData struct { type MemberData struct {
State string State string
@ -197,13 +163,13 @@ func (p *Patroni) GetMemberData(server *v1.Pod) (MemberData, error) {
var ok, r bool var ok, r bool
memberData.state, r = data["state"].(string) memberData.State, r = data["state"].(string)
ok = ok && r ok = ok && r
memberData.serverVersion, r = data["server_version"].(int) memberData.ServerVersion, r = data["server_version"].(int)
ok = ok && r ok = ok && r
memberData.role, r = data["role"].(string) memberData.Role, r = data["role"].(string)
ok = ok && r ok = ok && r
memberData.role, r = data["scope"].(string) memberData.Role, r = data["scope"].(string)
ok = ok && r ok = ok && r
if !ok { if !ok {