MCPcopy
hub / github.com/grafana/dskit / createClient

Function createClient

kv/client.go:137–192  ·  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

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

Calls 12

NewClientFunction · 0.92
NewFunction · 0.92
NewInMemoryClientFunction · 0.92
NewClientFunction · 0.92
buildMultiClientFunction · 0.85
buildMockClientFunction · 0.85
PrefixClientFunction · 0.85
newMetricsClientFunction · 0.85
WithCodecMethod · 0.80
ErrorfMethod · 0.80
LabelsMethod · 0.80
DoMethod · 0.45