kubelatte-ce

Форк
2
Форк от sbertech/kubelatte-ce
114 строк · 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
//go:generate go run github.com/vektra/mockery/v2@v2.20.2 --name=TriggerInterface
13
type TriggerInterface interface {
14
	List(ctx context.Context, opts metav1.ListOptions) (*v1alpha1.TriggerList, error)
15
	Get(ctx context.Context, name string, options metav1.GetOptions) (*v1alpha1.Trigger, error)
16
	Update(ctx context.Context, trigger *v1alpha1.Trigger, opts metav1.UpdateOptions) (result *v1alpha1.Trigger, err error)
17
	UpdateStatus(ctx context.Context, hostEntry *v1alpha1.Trigger, opts metav1.UpdateOptions) (*v1alpha1.Trigger, error)
18
	Create(ctx context.Context, trigger *v1alpha1.Trigger) (*v1alpha1.Trigger, error)
19
	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
20
	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
21
}
22

23
type triggerClient struct {
24
	restClient rest.Interface
25
	ns         string
26
}
27

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

38
	return &result, err
39
}
40

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

52
	return &result, err
53
}
54

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

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

82
func (c *triggerClient) Create(ctx context.Context, trigger *v1alpha1.Trigger) (*v1alpha1.Trigger, error) {
83
	result := v1alpha1.Trigger{}
84
	err := c.restClient.
85
		Post().
86
		Namespace(c.ns).
87
		Resource("triggers").
88
		Body(trigger).
89
		Do(ctx).
90
		Into(&result)
91

92
	return &result, err
93
}
94

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

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

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

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

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

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