MCPcopy Create free account
hub / github.com/cortexproject/cortex / createClient

Function createClient

pkg/ring/kv/client.go:133–190  ·  view source on GitHub ↗
(backend string, prefix string, cfg StoreConfig, codec codec.Codec, role role, reg prometheus.Registerer, logger log.Logger)

Source from the content-addressed store, hash-verified

131}
132
133func createClient(backend string, prefix string, cfg StoreConfig, codec codec.Codec, role role, reg prometheus.Registerer, logger log.Logger) (Client, error) {
134 var client Client
135 var err error
136
137 switch backend {
138 case "dynamodb":
139 client, err = dynamodb.NewClient(cfg.DynamoDB, codec, logger, reg)
140
141 case "consul":
142 client, err = consul.NewClient(cfg.Consul, codec, logger, reg)
143
144 case "etcd":
145 client, err = etcd.New(cfg.Etcd, codec, logger)
146
147 case "inmemory":
148 // If we use the in-memory store, make sure everyone gets the same instance
149 // within the same process.
150 inmemoryStoreInit.Do(func() {
151 inmemoryStore, _ = consul.NewInMemoryClient(codec, logger, reg)
152 })
153 client = inmemoryStore
154
155 case "memberlist":
156 kv, err := cfg.MemberlistKV()
157 if err != nil {
158 return nil, err
159 }
160 client, err = memberlist.NewClient(kv, codec)
161 if err != nil {
162 return nil, err
163 }
164
165 case "multi":
166 client, err = buildMultiClient(cfg, codec, reg, logger)
167
168 // This case is for testing. The mock KV client does not do anything internally.
169 case "mock":
170 client, err = buildMockClient(logger)
171
172 default:
173 return nil, fmt.Errorf("invalid KV store type: %s", backend)
174 }
175
176 if err != nil {
177 return nil, err
178 }
179
180 if prefix != "" {
181 client = PrefixClient(client, prefix)
182 }
183
184 // If no Registerer is provided return the raw client.
185 if reg == nil {
186 return client, nil
187 }
188
189 return newMetricsClient(backend, client, prometheus.WrapRegistererWith(role.Labels(), reg)), nil
190}

Calls 11

NewClientFunction · 0.92
NewClientFunction · 0.92
NewFunction · 0.92
NewInMemoryClientFunction · 0.92
NewClientFunction · 0.92
buildMultiClientFunction · 0.85
buildMockClientFunction · 0.85
PrefixClientFunction · 0.85
newMetricsClientFunction · 0.85
DoMethod · 0.65
LabelsMethod · 0.45