X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=internal%2Fsdlgoredis%2Fsdlgosentinel.go;h=19468d748dab37e4a1893ab3fe9294d05a70a6d3;hb=refs%2Fchanges%2F52%2F7152%2F3;hp=014d4ba565bdde5d2073793512a6eaa402974367;hpb=7c256b622c8fd065e91a7e289937d6e692a7eb1d;p=ric-plt%2Fsdlgo.git diff --git a/internal/sdlgoredis/sdlgosentinel.go b/internal/sdlgoredis/sdlgosentinel.go index 014d4ba..19468d7 100644 --- a/internal/sdlgoredis/sdlgosentinel.go +++ b/internal/sdlgoredis/sdlgosentinel.go @@ -23,7 +23,9 @@ package sdlgoredis import ( + "fmt" "github.com/go-redis/redis/v7" + "strconv" ) type Sentinel struct { @@ -55,14 +57,22 @@ func newRedisSentinel(cfg *Config, addr string) *Sentinel { func (s *Sentinel) GetDbState() (*DbState, error) { state := new(DbState) - mState, mErr := s.getMasterDbState() + pState, pErr := s.getPrimaryDbState() rState, rErr := s.getReplicasState() sState, sErr := s.getSentinelsState() - state.MasterDbState = *mState + state.PrimaryDbState = *pState state.ReplicasDbState = rState state.SentinelsDbState = sState - if mErr != nil { - return state, mErr + + cnt, err := strconv.Atoi(s.Cfg.nodeCnt) + if err != nil { + state.Err = fmt.Errorf("Sentinel DBAAS_NODE_COUNT configuration value '%s' conversion to integer failed", s.Cfg.nodeCnt) + return state, state.Err + } + state.ConfigNodeCnt = cnt + + if pErr != nil { + return state, pErr } if rErr != nil { return state, rErr @@ -70,8 +80,8 @@ func (s *Sentinel) GetDbState() (*DbState, error) { return state, sErr } -func (s *Sentinel) getMasterDbState() (*MasterDbState, error) { - state := new(MasterDbState) +func (s *Sentinel) getPrimaryDbState() (*PrimaryDbState, error) { + state := new(PrimaryDbState) redisVal, redisErr := s.Master(s.Cfg.masterName).Result() if redisErr == nil { state.Fields.Ip = redisVal["ip"] @@ -89,8 +99,8 @@ func (s *Sentinel) getReplicasState() (*ReplicasDbState, error) { redisVal, redisErr := s.Slaves(s.Cfg.masterName).Result() if redisErr == nil { - for _, redisSlave := range redisVal { - replicaState := readReplicaState(redisSlave.([]interface{})) + for _, redisReplica := range redisVal { + replicaState := readReplicaState(redisReplica.([]interface{})) states.States = append(states.States, replicaState) } } @@ -98,19 +108,19 @@ func (s *Sentinel) getReplicasState() (*ReplicasDbState, error) { return states, redisErr } -func readReplicaState(redisSlaves []interface{}) *ReplicaDbState { +func readReplicaState(redisReplicas []interface{}) *ReplicaDbState { state := new(ReplicaDbState) - for i := 0; i < len(redisSlaves); i += 2 { - if redisSlaves[i].(string) == "ip" { - state.Fields.Ip = redisSlaves[i+1].(string) - } else if redisSlaves[i].(string) == "port" { - state.Fields.Port = redisSlaves[i+1].(string) - } else if redisSlaves[i].(string) == "flags" { - state.Fields.Flags = redisSlaves[i+1].(string) - } else if redisSlaves[i].(string) == "role-reported" { - state.Fields.Role = redisSlaves[i+1].(string) - } else if redisSlaves[i].(string) == "master-link-status" { - state.Fields.MasterLinkStatus = redisSlaves[i+1].(string) + for i := 0; i < len(redisReplicas); i += 2 { + if redisReplicas[i].(string) == "ip" { + state.Fields.Ip = redisReplicas[i+1].(string) + } else if redisReplicas[i].(string) == "port" { + state.Fields.Port = redisReplicas[i+1].(string) + } else if redisReplicas[i].(string) == "flags" { + state.Fields.Flags = redisReplicas[i+1].(string) + } else if redisReplicas[i].(string) == "role-reported" { + state.Fields.Role = redisReplicas[i+1].(string) + } else if redisReplicas[i].(string) == "master-link-status" { + state.Fields.PrimaryLinkStatus = redisReplicas[i+1].(string) } } return state