orchard/pkg/client/service_accounts.go

77 lines
1.7 KiB
Go

package client
import (
"context"
"fmt"
"github.com/cirruslabs/orchard/pkg/resource/v1"
"net/http"
"net/url"
)
type ServiceAccountsService struct {
client *Client
}
func (service *ServiceAccountsService) Create(ctx context.Context, serviceAccount *v1.ServiceAccount) error {
err := service.client.request(ctx, http.MethodPost, "service-accounts",
serviceAccount, nil, nil)
if err != nil {
return err
}
return nil
}
func (service *ServiceAccountsService) List(ctx context.Context) ([]v1.ServiceAccount, error) {
var serviceAccounts []v1.ServiceAccount
err := service.client.request(ctx, http.MethodGet, "service-accounts",
nil, &serviceAccounts, nil)
if err != nil {
return nil, err
}
return serviceAccounts, nil
}
func (service *ServiceAccountsService) Get(ctx context.Context, name string) (*v1.ServiceAccount, error) {
var serviceAccount v1.ServiceAccount
err := service.client.request(ctx, http.MethodGet,
fmt.Sprintf("service-accounts/%s", url.PathEscape(name)),
nil, &serviceAccount, nil)
if err != nil {
return nil, err
}
return &serviceAccount, nil
}
func (service *ServiceAccountsService) Update(ctx context.Context, serviceAccount *v1.ServiceAccount) error {
err := service.client.request(ctx, http.MethodPut,
fmt.Sprintf("service-accounts/%s", url.PathEscape(serviceAccount.Name)),
serviceAccount, nil, nil)
if err != nil {
return err
}
return nil
}
func (service *ServiceAccountsService) Delete(ctx context.Context, name string, force bool) error {
params := map[string]string{}
if force {
params["force"] = "true"
}
err := service.client.request(ctx, http.MethodDelete,
fmt.Sprintf("service-accounts/%s", url.PathEscape(name)),
nil, nil, params)
if err != nil {
return err
}
return nil
}