@@ -20,6 +20,7 @@ import (
20
20
"path/filepath"
21
21
22
22
"github.com/prometheus/client_golang/prometheus"
23
+ "github.com/sorintlab/stolon/internal/cluster"
23
24
"github.com/sorintlab/stolon/internal/common"
24
25
"github.com/sorintlab/stolon/internal/store"
25
26
"github.com/sorintlab/stolon/internal/util"
@@ -166,23 +167,7 @@ func NewStore(cfg *CommonConfig) (store.Store, error) {
166
167
}
167
168
s = store .NewKVBackedStore (kvstore ,storePath )
168
169
case "kubernetes" :
169
- kubeClientConfig := util .NewKubeClientConfig (cfg .KubeConfig ,cfg .KubeContext ,cfg .KubeNamespace )
170
- kubecfg ,err := kubeClientConfig .ClientConfig ()
171
- if err != nil {
172
- return nil ,err
173
- }
174
- kubecli ,err := kubernetes .NewForConfig (kubecfg )
175
- if err != nil {
176
- return nil ,fmt .Errorf ("cannot create kubernetes client: %v" ,err )
177
- }
178
- var podName string
179
- if ! cfg .IsStolonCtl {
180
- podName ,err = util .PodName ()
181
- if err != nil {
182
- return nil ,err
183
- }
184
- }
185
- namespace ,_ ,err := kubeClientConfig .Namespace ()
170
+ kubecli ,podName ,namespace ,err := getKubeValues (cfg )
186
171
if err != nil {
187
172
return nil ,err
188
173
}
@@ -212,23 +197,7 @@ func NewElection(cfg *CommonConfig, uid string) (store.Election, error) {
212
197
}
213
198
election = store .NewKVBackedElection (kvstore ,filepath .Join (storePath ,common .SentinelLeaderKey ),uid )
214
199
case "kubernetes" :
215
- kubeClientConfig := util .NewKubeClientConfig (cfg .KubeConfig ,cfg .KubeContext ,cfg .KubeNamespace )
216
- kubecfg ,err := kubeClientConfig .ClientConfig ()
217
- if err != nil {
218
- return nil ,err
219
- }
220
- kubecli ,err := kubernetes .NewForConfig (kubecfg )
221
- if err != nil {
222
- return nil ,fmt .Errorf ("cannot create kubernetes client: %v" ,err )
223
- }
224
- var podName string
225
- if ! cfg .IsStolonCtl {
226
- podName ,err = util .PodName ()
227
- if err != nil {
228
- return nil ,err
229
- }
230
- }
231
- namespace ,_ ,err := kubeClientConfig .Namespace ()
200
+ kubecli ,podName ,namespace ,err := getKubeValues (cfg )
232
201
if err != nil {
233
202
return nil ,err
234
203
}
@@ -240,3 +209,28 @@ func NewElection(cfg *CommonConfig, uid string) (store.Election, error) {
240
209
241
210
return election ,nil
242
211
}
212
+
213
+ func getKubeValues (cfg * CommonConfig ) (* kubernetes.Clientset ,string ,string ,error ) {
214
+ kubeClientConfig := util .NewKubeClientConfig (cfg .KubeConfig ,cfg .KubeContext ,cfg .KubeNamespace )
215
+ kubecfg ,err := kubeClientConfig .ClientConfig ()
216
+ if err != nil {
217
+ return nil ,"" ,"" ,err
218
+ }
219
+ kubecfg .Timeout = cluster .DefaultStoreTimeout
220
+ kubecli ,err := kubernetes .NewForConfig (kubecfg )
221
+ if err != nil {
222
+ return nil ,"" ,"" ,fmt .Errorf ("cannot create kubernetes client: %v" ,err )
223
+ }
224
+ var podName string
225
+ if ! cfg .IsStolonCtl {
226
+ podName ,err = util .PodName ()
227
+ if err != nil {
228
+ return nil ,"" ,"" ,err
229
+ }
230
+ }
231
+ namespace ,_ ,err := kubeClientConfig .Namespace ()
232
+ if err != nil {
233
+ return nil ,"" ,"" ,err
234
+ }
235
+ return kubecli ,podName ,namespace ,nil
236
+ }