...
1
16
17 package serviceaccount
18
19 import (
20 "context"
21 "k8s.io/api/core/v1"
22 apierrors "k8s.io/apimachinery/pkg/api/errors"
23 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24 clientset "k8s.io/client-go/kubernetes"
25 v1listers "k8s.io/client-go/listers/core/v1"
26 "k8s.io/kubernetes/pkg/serviceaccount"
27 )
28
29
30 type clientGetter struct {
31 client clientset.Interface
32 secretLister v1listers.SecretLister
33 serviceAccountLister v1listers.ServiceAccountLister
34 podLister v1listers.PodLister
35 nodeLister v1listers.NodeLister
36 }
37
38
39
40
41
42 func NewGetterFromClient(c clientset.Interface, secretLister v1listers.SecretLister, serviceAccountLister v1listers.ServiceAccountLister, podLister v1listers.PodLister, nodeLister v1listers.NodeLister) serviceaccount.ServiceAccountTokenGetter {
43 return clientGetter{c, secretLister, serviceAccountLister, podLister, nodeLister}
44 }
45
46 func (c clientGetter) GetServiceAccount(namespace, name string) (*v1.ServiceAccount, error) {
47 if serviceAccount, err := c.serviceAccountLister.ServiceAccounts(namespace).Get(name); err == nil {
48 return serviceAccount, nil
49 }
50 return c.client.CoreV1().ServiceAccounts(namespace).Get(context.TODO(), name, metav1.GetOptions{})
51 }
52
53 func (c clientGetter) GetPod(namespace, name string) (*v1.Pod, error) {
54 if pod, err := c.podLister.Pods(namespace).Get(name); err == nil {
55 return pod, nil
56 }
57 return c.client.CoreV1().Pods(namespace).Get(context.TODO(), name, metav1.GetOptions{})
58 }
59
60 func (c clientGetter) GetSecret(namespace, name string) (*v1.Secret, error) {
61 if secret, err := c.secretLister.Secrets(namespace).Get(name); err == nil {
62 return secret, nil
63 }
64 return c.client.CoreV1().Secrets(namespace).Get(context.TODO(), name, metav1.GetOptions{})
65 }
66
67 func (c clientGetter) GetNode(name string) (*v1.Node, error) {
68
69 if c.nodeLister == nil {
70 return nil, apierrors.NewNotFound(v1.Resource("nodes"), name)
71 }
72 if node, err := c.nodeLister.Get(name); err == nil {
73 return node, nil
74 }
75 return c.client.CoreV1().Nodes().Get(context.TODO(), name, metav1.GetOptions{})
76 }
77
View as plain text