+
+func (s *Sentinel) getSentinelsState() (*SentinelsDbState, error) {
+ states := new(SentinelsDbState)
+ states.States = make([]*SentinelDbState, 0)
+
+ redisVal, redisErr := s.Sentinels(s.Cfg.masterName).Result()
+ if redisErr == nil {
+ for _, redisSentinel := range redisVal {
+ sentinelState := readSentinelState(redisSentinel.([]interface{}))
+ states.States = append(states.States, sentinelState)
+ }
+ }
+ states.Err = redisErr
+ return states, redisErr
+}
+
+func readSentinelState(redisSentinels []interface{}) *SentinelDbState {
+ state := new(SentinelDbState)
+ for i := 0; i < len(redisSentinels); i += 2 {
+ if redisSentinels[i].(string) == "ip" {
+ state.Fields.Ip = redisSentinels[i+1].(string)
+ } else if redisSentinels[i].(string) == "port" {
+ state.Fields.Port = redisSentinels[i+1].(string)
+ } else if redisSentinels[i].(string) == "flags" {
+ state.Fields.Flags = redisSentinels[i+1].(string)
+ }
+ }
+ return state
+}