Proper unmarshal.
This commit is contained in:
parent
6893d0f874
commit
620521d2a8
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue