Proper unmarshal.

This commit is contained in:
Jan Mußler 2021-02-22 23:34:11 +01:00
parent 6893d0f874
commit 620521d2a8
1 changed files with 9 additions and 22 deletions

View File

@ -3,7 +3,6 @@ package patroni
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"net"
@ -132,12 +131,18 @@ func (p *Patroni) SetPostgresParameters(server *v1.Pod, parameters map[string]st
return p.httpPostOrPatch(http.MethodPatch, apiURLString+configPath, buf)
}
// MemberDataPatroni child element
type MemberDataPatroni struct {
Version string
Scope string
}
// MemberData Patroni member data from Patroni API
type MemberData struct {
State string
Role string
ServerVersion int
Scope string
Patroni MemberDataPatroni
PatroniVersion string
}
@ -159,29 +164,11 @@ func (p *Patroni) GetMemberData(server *v1.Pod) (MemberData, error) {
return MemberData{}, fmt.Errorf("could not read response: %v", err)
}
data := make(map[string]interface{})
data := MemberData{}
err = json.Unmarshal(body, &data)
if err != nil {
return MemberData{}, err
}
memberData := MemberData{}
r := false
ok := true
memberData.State, r = data["state"].(string)
ok = ok && r
memberData.ServerVersion, r = data["server_version"].(int)
ok = ok && r
memberData.Role, r = data["role"].(string)
ok = ok && r
memberData.Role, r = data["scope"].(string)
ok = ok && r
if !ok {
return MemberData{}, errors.New("Patroni member data could not be read")
}
return memberData, nil
return data, nil
}