feat: implement function and http trigger resources via CRD
This commit is contained in:
@@ -26,6 +26,18 @@ var packageGVR = schema.GroupVersionResource{
|
||||
Resource: "packages",
|
||||
}
|
||||
|
||||
var functionGVR = schema.GroupVersionResource{
|
||||
Group: "fission.io",
|
||||
Version: "v1",
|
||||
Resource: "functions",
|
||||
}
|
||||
|
||||
var httpTriggerGVR = schema.GroupVersionResource{
|
||||
Group: "fission.io",
|
||||
Version: "v1",
|
||||
Resource: "httptriggers",
|
||||
}
|
||||
|
||||
// Client хранит клиентов Kubernetes API для работы с CRD Fission.
|
||||
type Client struct {
|
||||
DynClient dynamic.Interface
|
||||
@@ -161,3 +173,83 @@ func (c *Client) DeletePackage(ctx context.Context, namespace, name string) erro
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateFunction создает объект Function в заданном namespace.
|
||||
func (c *Client) CreateFunction(ctx context.Context, fn *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
createdFunction, err := c.DynClient.Resource(functionGVR).Namespace(fn.GetNamespace()).Create(ctx, fn, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("create function %q: %w", fn.GetName(), err)
|
||||
}
|
||||
|
||||
return createdFunction, nil
|
||||
}
|
||||
|
||||
// GetFunction получает объект Function по имени.
|
||||
func (c *Client) GetFunction(ctx context.Context, namespace, name string) (*unstructured.Unstructured, error) {
|
||||
fn, err := c.DynClient.Resource(functionGVR).Namespace(namespace).Get(ctx, name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("get function %q: %w", name, err)
|
||||
}
|
||||
|
||||
return fn, nil
|
||||
}
|
||||
|
||||
// UpdateFunction обновляет существующий объект Function.
|
||||
func (c *Client) UpdateFunction(ctx context.Context, fn *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
updatedFunction, err := c.DynClient.Resource(functionGVR).Namespace(fn.GetNamespace()).Update(ctx, fn, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("update function %q: %w", fn.GetName(), err)
|
||||
}
|
||||
|
||||
return updatedFunction, nil
|
||||
}
|
||||
|
||||
// DeleteFunction удаляет объект Function по имени.
|
||||
func (c *Client) DeleteFunction(ctx context.Context, namespace, name string) error {
|
||||
err := c.DynClient.Resource(functionGVR).Namespace(namespace).Delete(ctx, name, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("delete function %q: %w", name, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateHTTPTrigger создает объект HTTPTrigger в заданном namespace.
|
||||
func (c *Client) CreateHTTPTrigger(ctx context.Context, trigger *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
createdTrigger, err := c.DynClient.Resource(httpTriggerGVR).Namespace(trigger.GetNamespace()).Create(ctx, trigger, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("create http trigger %q: %w", trigger.GetName(), err)
|
||||
}
|
||||
|
||||
return createdTrigger, nil
|
||||
}
|
||||
|
||||
// GetHTTPTrigger получает объект HTTPTrigger по имени.
|
||||
func (c *Client) GetHTTPTrigger(ctx context.Context, namespace, name string) (*unstructured.Unstructured, error) {
|
||||
trigger, err := c.DynClient.Resource(httpTriggerGVR).Namespace(namespace).Get(ctx, name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("get http trigger %q: %w", name, err)
|
||||
}
|
||||
|
||||
return trigger, nil
|
||||
}
|
||||
|
||||
// UpdateHTTPTrigger обновляет существующий объект HTTPTrigger.
|
||||
func (c *Client) UpdateHTTPTrigger(ctx context.Context, trigger *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
updatedTrigger, err := c.DynClient.Resource(httpTriggerGVR).Namespace(trigger.GetNamespace()).Update(ctx, trigger, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("update http trigger %q: %w", trigger.GetName(), err)
|
||||
}
|
||||
|
||||
return updatedTrigger, nil
|
||||
}
|
||||
|
||||
// DeleteHTTPTrigger удаляет объект HTTPTrigger по имени.
|
||||
func (c *Client) DeleteHTTPTrigger(ctx context.Context, namespace, name string) error {
|
||||
err := c.DynClient.Resource(httpTriggerGVR).Namespace(namespace).Delete(ctx, name, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("delete http trigger %q: %w", name, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user