Add support for parsing profile yaml files
[multicloud/k8s.git] / src / k8splugin / internal / app / client.go
1 /*
2 Copyright 2018 Intel Corporation.
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6     http://www.apache.org/licenses/LICENSE-2.0
7 Unless required by applicable law or agreed to in writing, software
8 distributed under the License is distributed on an "AS IS" BASIS,
9 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 See the License for the specific language governing permissions and
11 limitations under the License.
12 */
13
14 package app
15
16 import (
17         "errors"
18
19         pkgerrors "github.com/pkg/errors"
20
21         "k8s.io/client-go/kubernetes"
22         "k8s.io/client-go/tools/clientcmd"
23 )
24
25 // GetKubeClient loads the Kubernetes configuation values stored into the local configuration file
26 var GetKubeClient = func(configPath string) (kubernetes.Clientset, error) {
27         var clientset *kubernetes.Clientset
28
29         if configPath == "" {
30                 return *clientset, errors.New("config not passed and is not found in ~/.kube. ")
31         }
32
33         config, err := clientcmd.BuildConfigFromFlags("", configPath)
34         if err != nil {
35                 return kubernetes.Clientset{}, pkgerrors.Wrap(err, "setConfig: Build config from flags raised an error")
36         }
37
38         clientset, err = kubernetes.NewForConfig(config)
39         if err != nil {
40                 return *clientset, err
41         }
42
43         return *clientset, nil
44 }