X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/44c93373e97da98645d41ae8f09c6eef6788bb26..da4bc7c758d09c1c02542b54b96eab018f746eae:/sdk/go/arvados/api.go diff --git a/sdk/go/arvados/api.go b/sdk/go/arvados/api.go index d76ece1edd..e7310818f7 100644 --- a/sdk/go/arvados/api.go +++ b/sdk/go/arvados/api.go @@ -10,6 +10,7 @@ import ( "encoding/json" "io" "net" + "net/http" "github.com/sirupsen/logrus" ) @@ -24,8 +25,14 @@ type APIEndpoint struct { var ( EndpointConfigGet = APIEndpoint{"GET", "arvados/v1/config", ""} EndpointVocabularyGet = APIEndpoint{"GET", "arvados/v1/vocabulary", ""} + EndpointDiscoveryDocument = APIEndpoint{"GET", "discovery/v1/apis/arvados/v1/rest", ""} EndpointLogin = APIEndpoint{"GET", "login", ""} EndpointLogout = APIEndpoint{"GET", "logout", ""} + EndpointAuthorizedKeyCreate = APIEndpoint{"POST", "arvados/v1/authorized_keys", "authorized_key"} + EndpointAuthorizedKeyUpdate = APIEndpoint{"PATCH", "arvados/v1/authorized_keys/{uuid}", "authorized_key"} + EndpointAuthorizedKeyGet = APIEndpoint{"GET", "arvados/v1/authorized_keys/{uuid}", ""} + EndpointAuthorizedKeyList = APIEndpoint{"GET", "arvados/v1/authorized_keys", ""} + EndpointAuthorizedKeyDelete = APIEndpoint{"DELETE", "arvados/v1/authorized_keys/{uuid}", ""} EndpointCollectionCreate = APIEndpoint{"POST", "arvados/v1/collections", "collection"} EndpointCollectionUpdate = APIEndpoint{"PATCH", "arvados/v1/collections/{uuid}", "collection"} EndpointCollectionGet = APIEndpoint{"GET", "arvados/v1/collections/{uuid}", ""} @@ -42,17 +49,22 @@ var ( EndpointSpecimenDelete = APIEndpoint{"DELETE", "arvados/v1/specimens/{uuid}", ""} EndpointContainerCreate = APIEndpoint{"POST", "arvados/v1/containers", "container"} EndpointContainerUpdate = APIEndpoint{"PATCH", "arvados/v1/containers/{uuid}", "container"} + EndpointContainerPriorityUpdate = APIEndpoint{"POST", "arvados/v1/containers/{uuid}/update_priority", "container"} EndpointContainerGet = APIEndpoint{"GET", "arvados/v1/containers/{uuid}", ""} EndpointContainerList = APIEndpoint{"GET", "arvados/v1/containers", ""} EndpointContainerDelete = APIEndpoint{"DELETE", "arvados/v1/containers/{uuid}", ""} EndpointContainerLock = APIEndpoint{"POST", "arvados/v1/containers/{uuid}/lock", ""} EndpointContainerUnlock = APIEndpoint{"POST", "arvados/v1/containers/{uuid}/unlock", ""} - EndpointContainerSSH = APIEndpoint{"GET", "arvados/v1/connect/{uuid}/ssh", ""} // move to /containers after #17014 fixes routing + EndpointContainerSSH = APIEndpoint{"POST", "arvados/v1/containers/{uuid}/ssh", ""} + EndpointContainerSSHCompat = APIEndpoint{"POST", "arvados/v1/connect/{uuid}/ssh", ""} // for compatibility with arvados <2.7 + EndpointContainerGatewayTunnel = APIEndpoint{"POST", "arvados/v1/containers/{uuid}/gateway_tunnel", ""} + EndpointContainerGatewayTunnelCompat = APIEndpoint{"POST", "arvados/v1/connect/{uuid}/gateway_tunnel", ""} // for compatibility with arvados <2.7 EndpointContainerRequestCreate = APIEndpoint{"POST", "arvados/v1/container_requests", "container_request"} EndpointContainerRequestUpdate = APIEndpoint{"PATCH", "arvados/v1/container_requests/{uuid}", "container_request"} EndpointContainerRequestGet = APIEndpoint{"GET", "arvados/v1/container_requests/{uuid}", ""} EndpointContainerRequestList = APIEndpoint{"GET", "arvados/v1/container_requests", ""} EndpointContainerRequestDelete = APIEndpoint{"DELETE", "arvados/v1/container_requests/{uuid}", ""} + EndpointContainerRequestLog = APIEndpoint{"GET", "arvados/v1/container_requests/{uuid}/log{path:|/.*}", ""} EndpointGroupCreate = APIEndpoint{"POST", "arvados/v1/groups", "group"} EndpointGroupUpdate = APIEndpoint{"PATCH", "arvados/v1/groups/{uuid}", "group"} EndpointGroupGet = APIEndpoint{"GET", "arvados/v1/groups/{uuid}", ""} @@ -68,6 +80,11 @@ var ( EndpointLinkGet = APIEndpoint{"GET", "arvados/v1/links/{uuid}", ""} EndpointLinkList = APIEndpoint{"GET", "arvados/v1/links", ""} EndpointLinkDelete = APIEndpoint{"DELETE", "arvados/v1/links/{uuid}", ""} + EndpointLogCreate = APIEndpoint{"POST", "arvados/v1/logs", "log"} + EndpointLogUpdate = APIEndpoint{"PATCH", "arvados/v1/logs/{uuid}", "log"} + EndpointLogGet = APIEndpoint{"GET", "arvados/v1/logs/{uuid}", ""} + EndpointLogList = APIEndpoint{"GET", "arvados/v1/logs", ""} + EndpointLogDelete = APIEndpoint{"DELETE", "arvados/v1/logs/{uuid}", ""} EndpointSysTrashSweep = APIEndpoint{"POST", "sys/trash_sweep", ""} EndpointUserActivate = APIEndpoint{"POST", "arvados/v1/users/{uuid}/activate", ""} EndpointUserCreate = APIEndpoint{"POST", "arvados/v1/users", "user"} @@ -96,12 +113,19 @@ type ContainerSSHOptions struct { UUID string `json:"uuid"` DetachKeys string `json:"detach_keys"` LoginUsername string `json:"login_username"` + NoForward bool `json:"no_forward"` } -type ContainerSSHConnection struct { +type ConnectionResponse struct { Conn net.Conn `json:"-"` Bufrw *bufio.ReadWriter `json:"-"` Logger logrus.FieldLogger `json:"-"` + Header http.Header `json:"-"` +} + +type ContainerGatewayTunnelOptions struct { + UUID string `json:"uuid"` + AuthSecret string `json:"auth_secret"` } type GetOptions struct { @@ -217,11 +241,17 @@ type LogoutOptions struct { ReturnTo string `json:"return_to"` // Redirect to this URL after logging out } +type BlockReadOptions struct { + Locator string + WriteTo io.Writer + LocalLocator func(string) +} + type BlockWriteOptions struct { Hash string Data []byte - Reader io.Reader - DataSize int // Must be set if Data is nil. + Reader io.Reader // Must be set if Data is nil. + DataSize int // Must be set if Data is nil. RequestID string StorageClasses []string Replicas int @@ -229,8 +259,21 @@ type BlockWriteOptions struct { } type BlockWriteResponse struct { - Locator string - Replicas int + Locator string + Replicas int + StorageClasses map[string]int +} + +type WebDAVOptions struct { + Method string + Path string + Header http.Header +} + +type ContainerLogOptions struct { + UUID string `json:"uuid"` + NoForward bool `json:"no_forward"` + WebDAVOptions } type API interface { @@ -238,6 +281,11 @@ type API interface { VocabularyGet(ctx context.Context) (Vocabulary, error) Login(ctx context.Context, options LoginOptions) (LoginResponse, error) Logout(ctx context.Context, options LogoutOptions) (LogoutResponse, error) + AuthorizedKeyCreate(ctx context.Context, options CreateOptions) (AuthorizedKey, error) + AuthorizedKeyUpdate(ctx context.Context, options UpdateOptions) (AuthorizedKey, error) + AuthorizedKeyGet(ctx context.Context, options GetOptions) (AuthorizedKey, error) + AuthorizedKeyList(ctx context.Context, options ListOptions) (AuthorizedKeyList, error) + AuthorizedKeyDelete(ctx context.Context, options DeleteOptions) (AuthorizedKey, error) CollectionCreate(ctx context.Context, options CreateOptions) (Collection, error) CollectionUpdate(ctx context.Context, options UpdateOptions) (Collection, error) CollectionGet(ctx context.Context, options GetOptions) (Collection, error) @@ -249,17 +297,20 @@ type API interface { CollectionUntrash(ctx context.Context, options UntrashOptions) (Collection, error) ContainerCreate(ctx context.Context, options CreateOptions) (Container, error) ContainerUpdate(ctx context.Context, options UpdateOptions) (Container, error) + ContainerPriorityUpdate(ctx context.Context, options UpdateOptions) (Container, error) ContainerGet(ctx context.Context, options GetOptions) (Container, error) ContainerList(ctx context.Context, options ListOptions) (ContainerList, error) ContainerDelete(ctx context.Context, options DeleteOptions) (Container, error) ContainerLock(ctx context.Context, options GetOptions) (Container, error) ContainerUnlock(ctx context.Context, options GetOptions) (Container, error) - ContainerSSH(ctx context.Context, options ContainerSSHOptions) (ContainerSSHConnection, error) + ContainerSSH(ctx context.Context, options ContainerSSHOptions) (ConnectionResponse, error) + ContainerGatewayTunnel(ctx context.Context, options ContainerGatewayTunnelOptions) (ConnectionResponse, error) ContainerRequestCreate(ctx context.Context, options CreateOptions) (ContainerRequest, error) ContainerRequestUpdate(ctx context.Context, options UpdateOptions) (ContainerRequest, error) ContainerRequestGet(ctx context.Context, options GetOptions) (ContainerRequest, error) ContainerRequestList(ctx context.Context, options ListOptions) (ContainerRequestList, error) ContainerRequestDelete(ctx context.Context, options DeleteOptions) (ContainerRequest, error) + ContainerRequestLog(ctx context.Context, options ContainerLogOptions) (http.Handler, error) GroupCreate(ctx context.Context, options CreateOptions) (Group, error) GroupUpdate(ctx context.Context, options UpdateOptions) (Group, error) GroupGet(ctx context.Context, options GetOptions) (Group, error) @@ -274,6 +325,11 @@ type API interface { LinkGet(ctx context.Context, options GetOptions) (Link, error) LinkList(ctx context.Context, options ListOptions) (LinkList, error) LinkDelete(ctx context.Context, options DeleteOptions) (Link, error) + LogCreate(ctx context.Context, options CreateOptions) (Log, error) + LogUpdate(ctx context.Context, options UpdateOptions) (Log, error) + LogGet(ctx context.Context, options GetOptions) (Log, error) + LogList(ctx context.Context, options ListOptions) (LogList, error) + LogDelete(ctx context.Context, options DeleteOptions) (Log, error) SpecimenCreate(ctx context.Context, options CreateOptions) (Specimen, error) SpecimenUpdate(ctx context.Context, options UpdateOptions) (Specimen, error) SpecimenGet(ctx context.Context, options GetOptions) (Specimen, error) @@ -299,4 +355,5 @@ type API interface { APIClientAuthorizationDelete(ctx context.Context, options DeleteOptions) (APIClientAuthorization, error) APIClientAuthorizationUpdate(ctx context.Context, options UpdateOptions) (APIClientAuthorization, error) APIClientAuthorizationGet(ctx context.Context, options GetOptions) (APIClientAuthorization, error) + DiscoveryDocument(ctx context.Context) (DiscoveryDocument, error) }