kubelatte-ce

Форк
2
Форк от sbertech/kubelatte-ce
113 строк · 3.2 Кб
1
package clientset
2

3
import (
4
	"context"
5
	"gitverse.ru/synapse/kubelatte/pkg/api/v1alpha1"
6
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7
	"k8s.io/apimachinery/pkg/watch"
8
	"k8s.io/client-go/kubernetes/scheme"
9
	"k8s.io/client-go/rest"
10
)
11

12
type TemplateInterface interface {
13
	List(ctx context.Context, opts metav1.ListOptions) (*v1alpha1.TemplateList, error)
14
	Get(ctx context.Context, name string, options metav1.GetOptions) (*v1alpha1.Template, error)
15
	Update(ctx context.Context, template *v1alpha1.Template, opts metav1.UpdateOptions) (result *v1alpha1.Template, err error)
16
	UpdateStatus(ctx context.Context, hostEntry *v1alpha1.Template, opts metav1.UpdateOptions) (*v1alpha1.Template, error)
17
	Create(ctx context.Context, template *v1alpha1.Template) (*v1alpha1.Template, error)
18
	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
19
	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
20
}
21

22
type templateClient struct {
23
	restClient rest.Interface
24
	ns         string
25
}
26

27
func (c *templateClient) List(ctx context.Context, opts metav1.ListOptions) (*v1alpha1.TemplateList, error) {
28
	result := v1alpha1.TemplateList{}
29
	err := c.restClient.
30
		Get().
31
		Namespace(c.ns).
32
		Resource("templates").
33
		VersionedParams(&opts, scheme.ParameterCodec).
34
		Do(ctx).
35
		Into(&result)
36

37
	return &result, err
38
}
39

40
func (c *templateClient) Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1alpha1.Template, error) {
41
	result := v1alpha1.Template{}
42
	err := c.restClient.
43
		Get().
44
		Namespace(c.ns).
45
		Resource("templates").
46
		Name(name).
47
		VersionedParams(&opts, scheme.ParameterCodec).
48
		Do(ctx).
49
		Into(&result)
50

51
	return &result, err
52
}
53

54
func (c *templateClient) Update(ctx context.Context, template *v1alpha1.Template, opts metav1.UpdateOptions) (result *v1alpha1.Template, err error) {
55
	result = &v1alpha1.Template{}
56
	err = c.restClient.Put().
57
		Namespace(c.ns).
58
		Resource("templates").
59
		Name(template.Name).
60
		VersionedParams(&opts, scheme.ParameterCodec).
61
		Body(template).
62
		Do(ctx).
63
		Into(result)
64
	return
65
}
66

67
func (c *templateClient) UpdateStatus(ctx context.Context, hostEntry *v1alpha1.Template, opts metav1.UpdateOptions) (result *v1alpha1.Template, err error) {
68
	result = &v1alpha1.Template{}
69
	err = c.restClient.Put().
70
		Namespace(c.ns).
71
		Resource("templates").
72
		Name(hostEntry.Name).
73
		SubResource("status").
74
		VersionedParams(&opts, scheme.ParameterCodec).
75
		Body(hostEntry).
76
		Do(ctx).
77
		Into(result)
78
	return
79
}
80

81
func (c *templateClient) Create(ctx context.Context, template *v1alpha1.Template) (*v1alpha1.Template, error) {
82
	result := v1alpha1.Template{}
83
	err := c.restClient.
84
		Post().
85
		Namespace(c.ns).
86
		Resource("templates").
87
		Body(template).
88
		Do(ctx).
89
		Into(&result)
90

91
	return &result, err
92
}
93

94
func (c *templateClient) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
95
	return c.restClient.
96
		Delete().
97
		Namespace(c.ns).
98
		Resource("templates").
99
		Name(name).
100
		Body(&opts).
101
		Do(ctx).
102
		Error()
103
}
104

105
func (c *templateClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
106
	opts.Watch = true
107
	return c.restClient.
108
		Get().
109
		Namespace(c.ns).
110
		Resource("templates").
111
		VersionedParams(&opts, scheme.ParameterCodec).
112
		Watch(ctx)
113
}
114

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.