-
Notifications
You must be signed in to change notification settings - Fork 22
/
token.go
41 lines (34 loc) · 995 Bytes
/
token.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
package token
import (
"context"
"github.com/rancher/rancherd/pkg/kubectl"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/tools/clientcmd"
)
func GetToken(ctx context.Context, kubeconfig string) (string, error) {
kubeconfig, err := kubectl.GetKubeconfig(kubeconfig)
if err != nil {
return "", err
}
conf, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
return "", err
}
client, err := dynamic.NewForConfig(conf)
if err != nil {
return "", err
}
resource, err := client.Resource(schema.GroupVersionResource{
Group: "management.cattle.io",
Version: "v3",
Resource: "clusterregistrationtokens",
}).Namespace("local").Get(ctx, "default-token", metav1.GetOptions{})
if err != nil {
return "", err
}
str, _, err := unstructured.NestedString(resource.Object, "status", "token")
return str, err
}