forked from argoproj/argo-workflows
/
conn.go
79 lines (67 loc) · 2.03 KB
/
conn.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package client
import (
"context"
"os"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"google.golang.org/grpc"
"k8s.io/client-go/tools/clientcmd"
"github.com/argoproj/argo/pkg/apiclient"
"github.com/argoproj/argo/util/kubeconfig"
)
// DEPRECATED
var ArgoServer string
// DEPRECATED
var Config clientcmd.ClientConfig
func AddKubectlFlagsToCmd(cmd *cobra.Command) {
// The "usual" clientcmd/kubectl flags
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig
overrides := clientcmd.ConfigOverrides{}
kflags := clientcmd.RecommendedConfigOverrideFlags("")
cmd.PersistentFlags().StringVar(&loadingRules.ExplicitPath, "kubeconfig", "", "Path to a kube config. Only required if out-of-cluster")
clientcmd.BindOverrideFlags(&overrides, cmd.PersistentFlags(), kflags)
Config = clientcmd.NewInteractiveDeferredLoadingClientConfig(loadingRules, &overrides, os.Stdin)
}
func AddArgoServerFlagsToCmd(cmd *cobra.Command) {
cmd.PersistentFlags().StringVar(&ArgoServer, "argo-server", os.Getenv("ARGO_SERVER"), "API server `host:port`. e.g. localhost:2746. Defaults to the ARGO_SERVER environment variable.")
}
// DEPRECATED
func GetClientConn() *grpc.ClientConn {
conn, err := apiclient.NewClientConn(ArgoServer)
if err != nil {
log.Fatal(err)
}
return conn
}
func NewAPIClient() (context.Context, apiclient.Client) {
ctx, client, err := apiclient.NewClient(ArgoServer, func() string {
return GetAuthString()
}, Config)
if err != nil {
log.Fatal(err)
}
return ctx, client
}
func Namespace() string {
namespace, _, err := Config.Namespace()
if err != nil {
log.Fatal(err)
}
return namespace
}
// DEPRECATED should only be used by client/v1 package
func GetContext() context.Context {
return apiclient.NewContext(GetAuthString())
}
func GetAuthString() string {
restConfig, err := Config.ClientConfig()
if err != nil {
log.Fatal(err)
}
authString, err := kubeconfig.GetAuthString(restConfig)
if err != nil {
log.Fatal(err)
}
return authString
}