77 lines
1.7 KiB
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
|
|
}
|