102 lines
2.3 KiB
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
|
|
}
|