orchard/pkg/client/imagepulls.go

102 lines
2.3 KiB
Go

package client
import (
"context"
"fmt"
"net/http"
"net/url"
"github.com/cirruslabs/orchard/pkg/resource/v1"
)
const pullsEndpointPrefix = "imagepulls"
type ImagePullsService struct {
client *Client
}
func (service *ImagePullsService) Create(ctx context.Context, pull *v1.ImagePull) error {
err := service.client.request(ctx, http.MethodPost, pullsEndpointPrefix, pull, nil, nil)
if err != nil {
return err
}
return nil
}
func (service *ImagePullsService) FindForWorker(ctx context.Context, worker string) ([]v1.ImagePull, error) {
allPulls, err := service.List(ctx)
if err != nil {
return nil, err
}
var result []v1.ImagePull
for _, pull := range allPulls {
if pull.Worker != worker {
continue
}
result = append(result, pull)
}
return result, nil
}
func (service *ImagePullsService) List(ctx context.Context) ([]v1.ImagePull, error) {
var pulls []v1.ImagePull
err := service.client.request(ctx, http.MethodGet, pullsEndpointPrefix, nil, &pulls, nil)
if err != nil {
return nil, err
}
return pulls, nil
}
func (service *ImagePullsService) Get(ctx context.Context, name string) (*v1.ImagePull, error) {
var pull v1.ImagePull
err := service.client.request(ctx, http.MethodGet, fmt.Sprintf("%s/%s", pullsEndpointPrefix,
url.PathEscape(name)), nil, &pull, nil)
if err != nil {
return nil, err
}
return &pull, nil
}
func (service *ImagePullsService) Update(ctx context.Context, pull v1.ImagePull) (*v1.ImagePull, error) {
var updatedPull v1.ImagePull
err := service.client.request(ctx, http.MethodPut, fmt.Sprintf("%s/%s", pullsEndpointPrefix,
url.PathEscape(pull.Name)), pull, &updatedPull, nil)
if err != nil {
return &updatedPull, err
}
return &updatedPull, nil
}
func (service *ImagePullsService) UpdateState(ctx context.Context, pull v1.ImagePull) (*v1.ImagePull, error) {
var updatedPull v1.ImagePull
err := service.client.request(ctx, http.MethodPut, fmt.Sprintf("%s/%s/state", pullsEndpointPrefix,
url.PathEscape(pull.Name)), pull, &updatedPull, nil)
if err != nil {
return &updatedPull, err
}
return &updatedPull, nil
}
func (service *ImagePullsService) Delete(ctx context.Context, name string) error {
err := service.client.request(ctx, http.MethodDelete, fmt.Sprintf("%s/%s", pullsEndpointPrefix,
url.PathEscape(name)), nil, nil, nil)
if err != nil {
return err
}
return nil
}