X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=internal%2Fsdlgoredis%2Fsdlgosentinel.go;h=a06722bdb44a4f2a9c8bb2073d735d01eddc71e6;hb=refs%2Fchanges%2F60%2F12260%2F1;hp=ac56322bdaa6ad76089b4bfbf14d7840c0c38e5f;hpb=77dd13bfb2ac4eb9ab3a4dd79d7a09a8fdc6d299;p=ric-plt%2Fsdlgo.git diff --git a/internal/sdlgoredis/sdlgosentinel.go b/internal/sdlgoredis/sdlgosentinel.go index ac56322..a06722b 100644 --- a/internal/sdlgoredis/sdlgosentinel.go +++ b/internal/sdlgoredis/sdlgosentinel.go @@ -1,6 +1,6 @@ /* Copyright (c) 2021 AT&T Intellectual Property. - Copyright (c) 2018-2021 Nokia. + Copyright (c) 2018-2022 Nokia. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,27 +23,31 @@ package sdlgoredis import ( + "context" "fmt" - "github.com/go-redis/redis/v7" + "github.com/go-redis/redis/v8" "strconv" ) type Sentinel struct { + ctx context.Context + MasterName string + NodeCnt string IredisSentinelClient - Cfg *Config } type IredisSentinelClient interface { - Master(name string) *redis.StringStringMapCmd - Slaves(name string) *redis.SliceCmd - Sentinels(name string) *redis.SliceCmd + Master(ctx context.Context, name string) *redis.StringStringMapCmd + Slaves(ctx context.Context, name string) *redis.SliceCmd + Sentinels(ctx context.Context, name string) *redis.SliceCmd } -type RedisSentinelCreateCb func(cfg *Config, addr string) *Sentinel +type RedisSentinelCreateCb func(addr, sentinelPort, masterName, nodeCnt string) *Sentinel -func newRedisSentinel(cfg *Config, addr string) *Sentinel { - redisAddress := addr + ":" + cfg.sentinelPort +func newRedisSentinel(addr, sentinelPort, masterName, nodeCnt string) *Sentinel { + redisAddress := addr + ":" + sentinelPort return &Sentinel{ + ctx: context.Background(), IredisSentinelClient: redis.NewSentinelClient(&redis.Options{ Addr: redisAddress, Password: "", // no password set @@ -51,7 +55,8 @@ func newRedisSentinel(cfg *Config, addr string) *Sentinel { PoolSize: 20, MaxRetries: 2, }), - Cfg: cfg, + MasterName: masterName, + NodeCnt: nodeCnt, } } @@ -64,9 +69,9 @@ func (s *Sentinel) GetDbState() (*DbState, error) { state.ReplicasDbState = rState state.SentinelsDbState = sState - cnt, err := strconv.Atoi(s.Cfg.nodeCnt) + cnt, err := strconv.Atoi(s.NodeCnt) if err != nil { - state.Err = fmt.Errorf("Sentinel DBAAS_NODE_COUNT configuration value '%s' conversion to integer failed", s.Cfg.nodeCnt) + state.Err = fmt.Errorf("Sentinel DBAAS_NODE_COUNT configuration value '%s' conversion to integer failed", s.NodeCnt) return state, state.Err } state.ConfigNodeCnt = cnt @@ -82,7 +87,7 @@ func (s *Sentinel) GetDbState() (*DbState, error) { func (s *Sentinel) getPrimaryDbState() (*PrimaryDbState, error) { state := new(PrimaryDbState) - redisVal, redisErr := s.Master(s.Cfg.masterName).Result() + redisVal, redisErr := s.Master(s.ctx, s.MasterName).Result() if redisErr == nil { state.Fields.Ip = redisVal["ip"] state.Fields.Port = redisVal["port"] @@ -97,7 +102,7 @@ func (s *Sentinel) getReplicasState() (*ReplicasDbState, error) { states := new(ReplicasDbState) states.States = make([]*ReplicaDbState, 0) - redisVal, redisErr := s.Slaves(s.Cfg.masterName).Result() + redisVal, redisErr := s.Slaves(s.ctx, s.MasterName).Result() if redisErr == nil { for _, redisReplica := range redisVal { replicaState := readReplicaState(redisReplica.([]interface{})) @@ -130,7 +135,7 @@ func (s *Sentinel) getSentinelsState() (*SentinelsDbState, error) { states := new(SentinelsDbState) states.States = make([]*SentinelDbState, 0) - redisVal, redisErr := s.Sentinels(s.Cfg.masterName).Result() + redisVal, redisErr := s.Sentinels(s.ctx, s.MasterName).Result() if redisErr == nil { for _, redisSentinel := range redisVal { sentinelState := readSentinelState(redisSentinel.([]interface{}))