X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5d56a1af42f64df57ef7a1bcef6d016ff2310900..c306aaa029d8e65a4399f27fec982e4e2f72ba8d:/sdk/go/arvados/api.go diff --git a/sdk/go/arvados/api.go b/sdk/go/arvados/api.go index a57f2a6838..f4ac1ab3c4 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" ) @@ -23,8 +24,14 @@ type APIEndpoint struct { var ( EndpointConfigGet = APIEndpoint{"GET", "arvados/v1/config", ""} + EndpointVocabularyGet = APIEndpoint{"GET", "arvados/v1/vocabulary", ""} 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}", ""} @@ -41,17 +48,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}", ""} @@ -62,6 +74,17 @@ var ( EndpointGroupDelete = APIEndpoint{"DELETE", "arvados/v1/groups/{uuid}", ""} EndpointGroupTrash = APIEndpoint{"POST", "arvados/v1/groups/{uuid}/trash", ""} EndpointGroupUntrash = APIEndpoint{"POST", "arvados/v1/groups/{uuid}/untrash", ""} + EndpointLinkCreate = APIEndpoint{"POST", "arvados/v1/links", "link"} + EndpointLinkUpdate = APIEndpoint{"PATCH", "arvados/v1/links/{uuid}", "link"} + 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"} EndpointUserCurrent = APIEndpoint{"GET", "arvados/v1/users/current", ""} @@ -75,22 +98,33 @@ var ( EndpointUserSystem = APIEndpoint{"GET", "arvados/v1/users/system", ""} EndpointUserUnsetup = APIEndpoint{"POST", "arvados/v1/users/{uuid}/unsetup", ""} EndpointUserUpdate = APIEndpoint{"PATCH", "arvados/v1/users/{uuid}", "user"} - EndpointUserUpdateUUID = APIEndpoint{"POST", "arvados/v1/users/{uuid}/update_uuid", ""} EndpointUserBatchUpdate = APIEndpoint{"PATCH", "arvados/v1/users/batch_update", ""} EndpointUserAuthenticate = APIEndpoint{"POST", "arvados/v1/users/authenticate", ""} EndpointAPIClientAuthorizationCurrent = APIEndpoint{"GET", "arvados/v1/api_client_authorizations/current", ""} + EndpointAPIClientAuthorizationCreate = APIEndpoint{"POST", "arvados/v1/api_client_authorizations", "api_client_authorization"} + EndpointAPIClientAuthorizationUpdate = APIEndpoint{"PUT", "arvados/v1/api_client_authorizations/{uuid}", "api_client_authorization"} + EndpointAPIClientAuthorizationList = APIEndpoint{"GET", "arvados/v1/api_client_authorizations", ""} + EndpointAPIClientAuthorizationDelete = APIEndpoint{"DELETE", "arvados/v1/api_client_authorizations/{uuid}", ""} + EndpointAPIClientAuthorizationGet = APIEndpoint{"GET", "arvados/v1/api_client_authorizations/{uuid}", ""} ) 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 { @@ -128,12 +162,17 @@ type CreateOptions struct { EnsureUniqueName bool `json:"ensure_unique_name"` Select []string `json:"select"` Attrs map[string]interface{} `json:"attrs"` + // ReplaceFiles only applies when creating a collection. + ReplaceFiles map[string]string `json:"replace_files"` } type UpdateOptions struct { UUID string `json:"uuid"` Attrs map[string]interface{} `json:"attrs"` + Select []string `json:"select"` BypassFederation bool `json:"bypass_federation"` + // ReplaceFiles only applies when updating a collection. + ReplaceFiles map[string]string `json:"replace_files"` } type GroupContentsOptions struct { @@ -153,11 +192,6 @@ type GroupContentsOptions struct { ExcludeHomeProject bool `json:"exclude_home_project"` } -type UpdateUUIDOptions struct { - UUID string `json:"uuid"` - NewUUID string `json:"new_uuid"` -} - type UserActivateOptions struct { UUID string `json:"uuid"` } @@ -222,10 +256,28 @@ type BlockWriteResponse struct { Replicas 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 { ConfigGet(ctx context.Context) (json.RawMessage, error) + 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) @@ -237,17 +289,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) @@ -257,14 +312,24 @@ type API interface { GroupDelete(ctx context.Context, options DeleteOptions) (Group, error) GroupTrash(ctx context.Context, options DeleteOptions) (Group, error) GroupUntrash(ctx context.Context, options UntrashOptions) (Group, error) + LinkCreate(ctx context.Context, options CreateOptions) (Link, error) + LinkUpdate(ctx context.Context, options UpdateOptions) (Link, error) + 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) SpecimenList(ctx context.Context, options ListOptions) (SpecimenList, error) SpecimenDelete(ctx context.Context, options DeleteOptions) (Specimen, error) + SysTrashSweep(ctx context.Context, options struct{}) (struct{}, error) UserCreate(ctx context.Context, options CreateOptions) (User, error) UserUpdate(ctx context.Context, options UpdateOptions) (User, error) - UserUpdateUUID(ctx context.Context, options UpdateUUIDOptions) (User, error) UserMerge(ctx context.Context, options UserMergeOptions) (User, error) UserActivate(ctx context.Context, options UserActivateOptions) (User, error) UserSetup(ctx context.Context, options UserSetupOptions) (map[string]interface{}, error) @@ -277,4 +342,9 @@ type API interface { UserBatchUpdate(context.Context, UserBatchUpdateOptions) (UserList, error) UserAuthenticate(ctx context.Context, options UserAuthenticateOptions) (APIClientAuthorization, error) APIClientAuthorizationCurrent(ctx context.Context, options GetOptions) (APIClientAuthorization, error) + APIClientAuthorizationCreate(ctx context.Context, options CreateOptions) (APIClientAuthorization, error) + APIClientAuthorizationList(ctx context.Context, options ListOptions) (APIClientAuthorizationList, error) + APIClientAuthorizationDelete(ctx context.Context, options DeleteOptions) (APIClientAuthorization, error) + APIClientAuthorizationUpdate(ctx context.Context, options UpdateOptions) (APIClientAuthorization, error) + APIClientAuthorizationGet(ctx context.Context, options GetOptions) (APIClientAuthorization, error) }