1
16
17 package action
18
19 import (
20 "context"
21 "sync"
22
23 v1 "k8s.io/api/core/v1"
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25 "k8s.io/apimachinery/pkg/types"
26 "k8s.io/apimachinery/pkg/watch"
27 applycorev1 "k8s.io/client-go/applyconfigurations/core/v1"
28 "k8s.io/client-go/kubernetes"
29 corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
30 )
31
32
33
34
35 type lazyClient struct {
36
37 initClient sync.Once
38 client kubernetes.Interface
39 clientErr error
40
41
42 clientFn func() (*kubernetes.Clientset, error)
43
44
45 namespace string
46 }
47
48 func (s *lazyClient) init() error {
49 s.initClient.Do(func() {
50 s.client, s.clientErr = s.clientFn()
51 })
52 return s.clientErr
53 }
54
55
56 type secretClient struct{ *lazyClient }
57
58 var _ corev1.SecretInterface = (*secretClient)(nil)
59
60 func newSecretClient(lc *lazyClient) *secretClient {
61 return &secretClient{lazyClient: lc}
62 }
63
64 func (s *secretClient) Create(ctx context.Context, secret *v1.Secret, opts metav1.CreateOptions) (result *v1.Secret, err error) {
65 if err := s.init(); err != nil {
66 return nil, err
67 }
68 return s.client.CoreV1().Secrets(s.namespace).Create(ctx, secret, opts)
69 }
70
71 func (s *secretClient) Update(ctx context.Context, secret *v1.Secret, opts metav1.UpdateOptions) (*v1.Secret, error) {
72 if err := s.init(); err != nil {
73 return nil, err
74 }
75 return s.client.CoreV1().Secrets(s.namespace).Update(ctx, secret, opts)
76 }
77
78 func (s *secretClient) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
79 if err := s.init(); err != nil {
80 return err
81 }
82 return s.client.CoreV1().Secrets(s.namespace).Delete(ctx, name, opts)
83 }
84
85 func (s *secretClient) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
86 if err := s.init(); err != nil {
87 return err
88 }
89 return s.client.CoreV1().Secrets(s.namespace).DeleteCollection(ctx, opts, listOpts)
90 }
91
92 func (s *secretClient) Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Secret, error) {
93 if err := s.init(); err != nil {
94 return nil, err
95 }
96 return s.client.CoreV1().Secrets(s.namespace).Get(ctx, name, opts)
97 }
98
99 func (s *secretClient) List(ctx context.Context, opts metav1.ListOptions) (*v1.SecretList, error) {
100 if err := s.init(); err != nil {
101 return nil, err
102 }
103 return s.client.CoreV1().Secrets(s.namespace).List(ctx, opts)
104 }
105
106 func (s *secretClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
107 if err := s.init(); err != nil {
108 return nil, err
109 }
110 return s.client.CoreV1().Secrets(s.namespace).Watch(ctx, opts)
111 }
112
113 func (s *secretClient) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (*v1.Secret, error) {
114 if err := s.init(); err != nil {
115 return nil, err
116 }
117 return s.client.CoreV1().Secrets(s.namespace).Patch(ctx, name, pt, data, opts, subresources...)
118 }
119
120 func (s *secretClient) Apply(ctx context.Context, secretConfiguration *applycorev1.SecretApplyConfiguration, opts metav1.ApplyOptions) (*v1.Secret, error) {
121 if err := s.init(); err != nil {
122 return nil, err
123 }
124 return s.client.CoreV1().Secrets(s.namespace).Apply(ctx, secretConfiguration, opts)
125 }
126
127
128 type configMapClient struct{ *lazyClient }
129
130 var _ corev1.ConfigMapInterface = (*configMapClient)(nil)
131
132 func newConfigMapClient(lc *lazyClient) *configMapClient {
133 return &configMapClient{lazyClient: lc}
134 }
135
136 func (c *configMapClient) Create(ctx context.Context, configMap *v1.ConfigMap, opts metav1.CreateOptions) (*v1.ConfigMap, error) {
137 if err := c.init(); err != nil {
138 return nil, err
139 }
140 return c.client.CoreV1().ConfigMaps(c.namespace).Create(ctx, configMap, opts)
141 }
142
143 func (c *configMapClient) Update(ctx context.Context, configMap *v1.ConfigMap, opts metav1.UpdateOptions) (*v1.ConfigMap, error) {
144 if err := c.init(); err != nil {
145 return nil, err
146 }
147 return c.client.CoreV1().ConfigMaps(c.namespace).Update(ctx, configMap, opts)
148 }
149
150 func (c *configMapClient) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
151 if err := c.init(); err != nil {
152 return err
153 }
154 return c.client.CoreV1().ConfigMaps(c.namespace).Delete(ctx, name, opts)
155 }
156
157 func (c *configMapClient) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
158 if err := c.init(); err != nil {
159 return err
160 }
161 return c.client.CoreV1().ConfigMaps(c.namespace).DeleteCollection(ctx, opts, listOpts)
162 }
163
164 func (c *configMapClient) Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ConfigMap, error) {
165 if err := c.init(); err != nil {
166 return nil, err
167 }
168 return c.client.CoreV1().ConfigMaps(c.namespace).Get(ctx, name, opts)
169 }
170
171 func (c *configMapClient) List(ctx context.Context, opts metav1.ListOptions) (*v1.ConfigMapList, error) {
172 if err := c.init(); err != nil {
173 return nil, err
174 }
175 return c.client.CoreV1().ConfigMaps(c.namespace).List(ctx, opts)
176 }
177
178 func (c *configMapClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
179 if err := c.init(); err != nil {
180 return nil, err
181 }
182 return c.client.CoreV1().ConfigMaps(c.namespace).Watch(ctx, opts)
183 }
184
185 func (c *configMapClient) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (*v1.ConfigMap, error) {
186 if err := c.init(); err != nil {
187 return nil, err
188 }
189 return c.client.CoreV1().ConfigMaps(c.namespace).Patch(ctx, name, pt, data, opts, subresources...)
190 }
191
192 func (c *configMapClient) Apply(ctx context.Context, configMap *applycorev1.ConfigMapApplyConfiguration, opts metav1.ApplyOptions) (*v1.ConfigMap, error) {
193 if err := c.init(); err != nil {
194 return nil, err
195 }
196 return c.client.CoreV1().ConfigMaps(c.namespace).Apply(ctx, configMap, opts)
197 }
198
View as plain text