From 4e266c07d9d2bc708f82cdff133dd70c7af42b94 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Tue, 19 Sep 2023 11:02:27 +0200 Subject: [PATCH 01/22] feat: Descriptive Hooks --- aruna/api/google | 2 +- .../api/hooks/services/v2/hooks_service.proto | 54 +++++++++++++------ .../services/v2/workspace_service.proto | 17 +++++- 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/aruna/api/google b/aruna/api/google index 75346295..bbcd7c56 160000 --- a/aruna/api/google +++ b/aruna/api/google @@ -1 +1 @@ -Subproject commit 75346295df28e55c42c2a3b108c92013a199ae55 +Subproject commit bbcd7c5619a6171baeeb393c387563b5463b4f89 diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 73a66891..b793ab04 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -15,17 +15,23 @@ import "aruna/api/storage/models/v2/models.proto"; // // A service that enables automatic Hook scheduling service HooksService { + // Created Hooks are always associated with the owner that creates the hook rpc CreateHook(CreateHookRequest) returns (CreateHookResponse) { option (google.api.http) = { post : "/v2/hook" body : "*" }; } - rpc ListHooks(ListHooksRequest) returns (ListHooksResponse) { + rpc ListProjectHooks(ListProjectHooksRequest) returns (ListHooksResponse) { option (google.api.http) = { get : "/v2/hooks/project/{project_id}" }; } + rpc ListOwnedHooks(ListOwnedHooksRequest) returns (ListHooksResponse) { + option (google.api.http) = { + get : "/v2/hooks/owner/{user_id}" + }; + } rpc DeleteHook(DeleteHookRequest) returns (DeleteHookResponse) { option (google.api.http) = { delete : "/v2/hook/{hook_id}" @@ -94,10 +100,12 @@ message Credentials { } message CreateHookRequest { - Trigger trigger = 1; - Hook hook = 2; - uint64 timeout = 3; - string project_id = 4; + string name = 1; + Trigger trigger = 2; + Hook hook = 3; + uint64 timeout = 4; + string project_id = 5; + string description = 6; } message CreateHookResponse { string hook_id = 1; @@ -110,26 +118,40 @@ message DeleteHookRequest { message DeleteHookResponse {} message HookCallbackRequest { - bool success = 1; - repeated storage.models.v2.KeyValue add_key_values = 2; - repeated storage.models.v2.KeyValue remove_key_values = 3; - string secret = 4; - string hook_id = 5; - string object_id = 6; - int32 pubkey_serial = 7; + oneof status { + Finished finished = 1; + Error error = 2; + }; + string secret = 3; + string hook_id = 4; + string object_id = 5; + int32 pubkey_serial = 6; +} +message Finished { + repeated storage.models.v2.KeyValue add_key_values = 1; + repeated storage.models.v2.KeyValue remove_key_values = 2; +} +message Error { + string error = 1; } message HookCallbackResponse{} -message ListHooksRequest{ +message ListProjectHooksRequest{ string project_id = 1; } +message ListOwnedHooksRequest{ + string user_id = 1; +} + message HookInfo { string hook_id = 1; - Hook hook = 2; - Trigger trigger = 3; - uint64 timeout = 4; + string name = 2; + string description = 3; + Hook hook = 4; + Trigger trigger = 5; + uint64 timeout = 6; } message ListHooksResponse{ diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index a3e9cc62..0d9ade3a 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -24,6 +24,11 @@ service WorkspaceService { }; } + // TODO: ListWorkspaceTemplates/FilterAllTemplates/ListOwnedTemplates ? + // TODO: DeleteWorkspaceTemplate + // TODO: DescribeWorkspaceTemplate? + + // CreateWorkspace // // Status: ALPHA @@ -88,7 +93,13 @@ message CreateWorkspaceTemplateRequest { // The name of the workspace template string name = 3; // Key values / hooks that must be added to each participant of the workspace - repeated storage.models.v2.KeyValue key_values = 4; + // repeated storage.models.v2.KeyValue key_values = 4; + // --> replace with hooks: + repeated string hook_ids = 4; + // Description of the workspace + string description = 5; + // Endpoint id that is used for this template + string endpoint_id = 6; } message CreateWorkspaceTemplateResponse { @@ -97,6 +108,8 @@ message CreateWorkspaceTemplateResponse { message CreateWorkspaceRequest { string workspace_template = 1; + // Description of this workspace instance + string description = 2; } message CreateWorkspaceResponse{ @@ -128,4 +141,4 @@ message MoveWorkspaceDataRequest { string project_id = 2; } -message MoveWorkspaceDataResponse {} \ No newline at end of file +message MoveWorkspaceDataResponse {} From 15de674c513e99034759b6052304af6a81f1eaa9 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Tue, 19 Sep 2023 11:06:55 +0200 Subject: [PATCH 02/22] fix: Multi use of response --- aruna/api/hooks/services/v2/hooks_service.proto | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index b793ab04..ed320b54 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -22,12 +22,12 @@ service HooksService { body : "*" }; } - rpc ListProjectHooks(ListProjectHooksRequest) returns (ListHooksResponse) { + rpc ListProjectHooks(ListProjectHooksRequest) returns (ListProjectHooksResponse) { option (google.api.http) = { get : "/v2/hooks/project/{project_id}" }; } - rpc ListOwnedHooks(ListOwnedHooksRequest) returns (ListHooksResponse) { + rpc ListOwnedHooks(ListOwnedHooksRequest) returns (ListOwnedHooksResponse) { option (google.api.http) = { get : "/v2/hooks/owner/{user_id}" }; @@ -154,6 +154,10 @@ message HookInfo { uint64 timeout = 6; } -message ListHooksResponse{ +message ListProjectHooksResponse{ + repeated HookInfo infos = 1; +} + +message ListOwnedHooksResponse{ repeated HookInfo infos = 1; } From d9496299d9732999f3a084c8f9a76fff123be8a6 Mon Sep 17 00:00:00 2001 From: St4NNi Date: Tue, 19 Sep 2023 14:46:05 +0200 Subject: [PATCH 03/22] feat: Added DataProxyBackend service --- .../services/v2/dataproxy_service.proto | 111 +++++++++++++++++- 1 file changed, 110 insertions(+), 1 deletion(-) diff --git a/aruna/api/dataproxy/services/v2/dataproxy_service.proto b/aruna/api/dataproxy/services/v2/dataproxy_service.proto index 9bef3064..9bcfde57 100644 --- a/aruna/api/dataproxy/services/v2/dataproxy_service.proto +++ b/aruna/api/dataproxy/services/v2/dataproxy_service.proto @@ -27,6 +27,20 @@ service DataproxyService { rpc InitReplication(InitReplicationRequest) returns (InitReplicationResponse) {} } + +service DataproxyBackendService { + rpc PutObject(stream PutObjectRequest) returns (PutObjectResponse) {} + rpc GetObject(GetObjectRequest) returns (stream GetObjectResponse) {} + rpc HeadObject(HeadObjectRequest) returns (HeadObjectResponse) {} + rpc InitMultiPartUpload(InitMultiPartUploadRequest) returns (InitMultiPartUploadResponse) {} + rpc UploadPart(stream UploadPartRequest) returns (UploadPartResponse) {} + rpc CompleteMultiPartUpload(CompleteMultiPartUploadRequest) returns (CompleteMultiPartUploadResponse) {} + rpc CreateBucket(CreateBucketRequest) returns (CreateBucketResponse) {} + rpc DeleteBucket(DeleteBucketRequest) returns (DeleteBucketResponse) {} + rpc DeleteObject(DeleteObjectRequest) returns (DeleteObjectResponse) {} + rpc InitLocation(InitLocationRequest) returns (InitLocationResponse) {} +} + service DataproxyUserService { // GetCredentials // @@ -74,6 +88,10 @@ service DataproxyUserService { } } + + + + message DataProxyInfo { string dataproxy_id = 1; int64 available_space = 2; @@ -160,4 +178,95 @@ enum ReplicationStatus { message ReplicationStatusResponse { ReplicationStatus status = 1; string message = 2; -} \ No newline at end of file +} + +message ObjectLocation { + string bucket = 1; + string key = 2; + string upload_id = 3; + string content_length = 4; +} + +message PutObjectRequest { + ObjectLocation location = 1; + bytes data = 2; +} + +message PutObjectResponse {} + +message GetObjectRequest { + ObjectLocation location = 1; +} + +message GetObjectResponse { + bytes data = 1; +} + +message HeadObjectRequest { + ObjectLocation location = 1; +} + +message HeadObjectResponse { + string content_length = 1; + bool exists = 2; +} + +message InitMultiPartUploadRequest { + ObjectLocation location = 1; +} + +message InitMultiPartUploadResponse { + string upload_id = 1; +} + +message UploadPartRequest { + ObjectLocation location = 1; + int32 part_number = 3; + bytes data = 4; +} + +message UploadPartResponse { + string etag = 1; +} + +message CompletedPart { + int32 part_number = 1; + string etag = 2; +} + +message CompleteMultiPartUploadRequest { + ObjectLocation location = 1; + repeated CompletedPart completed_parts = 2; +} + +message CompleteMultiPartUploadResponse {} + +message CreateBucketRequest { + string bucket = 1; +} + +message CreateBucketResponse {} + +message DeleteBucketRequest { + string bucket = 1; +} + +message DeleteBucketResponse {} + +message DeleteObjectRequest { + ObjectLocation location = 1; +} + +message DeleteObjectResponse {} + +message InitLocationRequest { + string object_name = 1; + int64 size = 2; + bool is_temporary = 3; +} + +message InitLocationResponse { + ObjectLocation location = 1; +} + + From e9d0b325e4110fe9598a3d8cdd14d6d19c660f54 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Wed, 20 Sep 2023 09:43:47 +0200 Subject: [PATCH 04/22] feat: Additional hook triggers --- aruna/api/hooks/services/v2/hooks_service.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index ed320b54..e7e2997e 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -48,6 +48,10 @@ enum TriggerType { TRIGGER_TYPE_UNSPECIFIED = 0; TRIGGER_TYPE_HOOK_ADDED = 1; TRIGGER_TYPE_OBJECT_CREATED = 2; + TRIGGER_TYPE_LABEL_ADDED = 3; + TRIGGER_TYPE_STATIC_LABEL_ADDED = 4; + TRIGGER_TYPE_HOOK_STATUS_CHANGED = 5; + // TODO: TRIGGER_TYPE_RELATION_ADDED } message Trigger { From 12cf0b213a0d47fb09847e51515c714653189499 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Wed, 20 Sep 2023 09:54:29 +0200 Subject: [PATCH 05/22] fix: Fixed linting error --- aruna/api/hooks/services/v2/hooks_service.proto | 2 +- aruna/api/storage/services/v2/workspace_service.proto | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index e7e2997e..97de03ae 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -6,9 +6,9 @@ option java_multiple_files = true; option java_package = "com.github.ArunaStorage.java_api.aruna.api.storage.services.v2"; option java_outer_classname = "HooksService"; import "google/api/annotations.proto"; - import "aruna/api/storage/models/v2/models.proto"; + // HooksService // // Status: ALPHA diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index 0d9ade3a..20e4f6e6 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -5,7 +5,7 @@ option go_package = "github.com/ArunaStorage/go-api/aruna/api/storage/services/v option java_multiple_files = true; option java_package = "com.github.ArunaStorage.java_api.aruna.api.storage.services.v2"; option java_outer_classname = "WorkspaceService"; -import "aruna/api/storage/models/v2/models.proto"; +//import "aruna/api/storage/models/v2/models.proto"; import "google/api/annotations.proto"; // Service to manage "special" anonymous collections / workspaces From 198b1c639279d1a029a7359f99e2f9e41f6a7dc9 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:14:13 +0200 Subject: [PATCH 06/22] feat: Forced create_on_updates --- aruna/api/storage/services/v2/object_service.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aruna/api/storage/services/v2/object_service.proto b/aruna/api/storage/services/v2/object_service.proto index f1b94f57..259e6f51 100644 --- a/aruna/api/storage/services/v2/object_service.proto +++ b/aruna/api/storage/services/v2/object_service.proto @@ -234,6 +234,8 @@ message UpdateObjectRequest { string dataset_id = 10; } repeated storage.models.v2.Hash hashes = 12; + // Force new object reversion + bool forced_revision = 13; } message UpdateObjectResponse { @@ -308,4 +310,4 @@ message GetObjectEndpointsRequest { string collection_id = 1; // Object id string object_id = 2; -} \ No newline at end of file +} From 0ce859cfe1a6b4131e30c6f0ef10d35e9a7da1ec Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Thu, 21 Sep 2023 12:45:31 +0200 Subject: [PATCH 07/22] feat: Custom templates --- aruna/api/hooks/services/v2/hooks_service.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 97de03ae..3bdaccb9 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -4,8 +4,7 @@ package aruna.api.hooks.services.v2; option go_package = "github.com/ArunaStorage/go-api/aruna/api/storage/services/v2"; option java_multiple_files = true; option java_package = "com.github.ArunaStorage.java_api.aruna.api.storage.services.v2"; -option java_outer_classname = "HooksService"; -import "google/api/annotations.proto"; +option java_outer_classname = "HooksService"; import "google/api/annotations.proto"; import "aruna/api/storage/models/v2/models.proto"; @@ -51,9 +50,9 @@ enum TriggerType { TRIGGER_TYPE_LABEL_ADDED = 3; TRIGGER_TYPE_STATIC_LABEL_ADDED = 4; TRIGGER_TYPE_HOOK_STATUS_CHANGED = 5; - // TODO: TRIGGER_TYPE_RELATION_ADDED } + message Trigger { TriggerType trigger_type = 1; string key = 2; @@ -63,7 +62,8 @@ message Trigger { message ExternalHook { string url = 1; Credentials credentials = 2; - string json_template = 3; + // If empty a basic JSON template will be used + optional string custom_template = 3; Method method = 4; } From 51d0634cb354c6d84df5b221c43d53778467dec6 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Thu, 21 Sep 2023 12:45:31 +0200 Subject: [PATCH 08/22] feat: Custom templates --- .../api/hooks/services/v2/hooks_service.proto | 8 +-- .../storage/services/v2/user_service.proto | 52 ++++++++++++++++--- 2 files changed, 48 insertions(+), 12 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 97de03ae..3bdaccb9 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -4,8 +4,7 @@ package aruna.api.hooks.services.v2; option go_package = "github.com/ArunaStorage/go-api/aruna/api/storage/services/v2"; option java_multiple_files = true; option java_package = "com.github.ArunaStorage.java_api.aruna.api.storage.services.v2"; -option java_outer_classname = "HooksService"; -import "google/api/annotations.proto"; +option java_outer_classname = "HooksService"; import "google/api/annotations.proto"; import "aruna/api/storage/models/v2/models.proto"; @@ -51,9 +50,9 @@ enum TriggerType { TRIGGER_TYPE_LABEL_ADDED = 3; TRIGGER_TYPE_STATIC_LABEL_ADDED = 4; TRIGGER_TYPE_HOOK_STATUS_CHANGED = 5; - // TODO: TRIGGER_TYPE_RELATION_ADDED } + message Trigger { TriggerType trigger_type = 1; string key = 2; @@ -63,7 +62,8 @@ message Trigger { message ExternalHook { string url = 1; Credentials credentials = 2; - string json_template = 3; + // If empty a basic JSON template will be used + optional string custom_template = 3; Method method = 4; } diff --git a/aruna/api/storage/services/v2/user_service.proto b/aruna/api/storage/services/v2/user_service.proto index 9353c7b0..e2b6e4b5 100644 --- a/aruna/api/storage/services/v2/user_service.proto +++ b/aruna/api/storage/services/v2/user_service.proto @@ -211,7 +211,11 @@ service UserService { }; } - + // GetPersonalNotifications + // + // Status: ALPHA + // + // Fetches personal notifications rpc GetPersonalNotifications(GetPersonalNotificationsRequest) returns (GetPersonalNotificationsResponse) { option (google.api.http) = { @@ -219,6 +223,18 @@ service UserService { }; } + // AcknowledgePersonalNotifications + // + // Status: ALPHA + // + // Acknowledges personal notifications + rpc AcknowledgePersonalNotifications(AcknowledgePersonalNotificationsRequest) + returns (AcknowledgePersonalNotificationsResponse) { + option (google.api.http) = { + get : "/v2/user/{user_id}/acknowledge" + }; + } + } message RegisterUserRequest { @@ -383,19 +399,39 @@ message GetPersonalNotificationsRequest { string user_id = 1; } +message GetPersonalNotificationsResponse { + repeated PersonalNotification notifications = 1; +} + +message AcknowledgePersonalNotificationsRequest { + repeated string notification_id = 1; +} + +message AcknowledgePersonalNotificationsResponse {} + +enum ReferenceType { + REFERENCE_TYPE_UNSPECIFIED = 0; + REFERENCE_TYPE_USER = 1; + REFERENCE_TYPE_RESOURCE = 2; +} message References { - string ref_type = 1; // UserRequestAccess + ReferenceType ref_type = 1; string ref_name = 2; // "User A" string ref_value = 3; // 0123AAA123AAA (id) } -message UserNotification { - string variant = 1; // Request access - string message = 2; // User A has requested access for resource B - repeated References refs = 3; // References to resource in the "message" +enum PersonalNotificationVariant { + PERSONAL_NOTIFICATION_VARIANT_UNSPECIFIED = 0; + PERSONAL_NOTIFICATION_VARIANT_ACCESS_REQUESTED = 1; + PERSONAL_NOTIFICATION_VARIANT_PERMISSION_GRANTED = 2; + PERSONAL_NOTIFICATION_VARIANT_PERMISSION_REVOKED = 3; + PERSONAL_NOTIFICATION_VARIANT_ANNOUNCEMENT = 4; } -message GetPersonalNotificationsResponse { - repeated UserNotification notifications = 1; +message PersonalNotification { + string id = 1; + PersonalNotificationVariant variant = 2; + string message = 3; // User A has requested access for resource B + repeated References refs = 4; // References to resource in the "message" } From fb36f29b539995eb6b33425260651f3237913558 Mon Sep 17 00:00:00 2001 From: Jannis Hochmuth Date: Thu, 21 Sep 2023 17:04:36 +0200 Subject: [PATCH 09/22] feat: Add resource access request/response --- .../api/storage/services/v2/search_service.proto | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/aruna/api/storage/services/v2/search_service.proto b/aruna/api/storage/services/v2/search_service.proto index e576fb37..73a02bcd 100644 --- a/aruna/api/storage/services/v2/search_service.proto +++ b/aruna/api/storage/services/v2/search_service.proto @@ -45,6 +45,16 @@ service SearchService { }; } + // RequestResourceAccess + // + // Status: ALPHA + // + // Requests access to resources + rpc RequestResourceAccess(RequestResourceAccessRequest) returns (RequestResourceAccessResponse){ + option (google.api.http) = { + get : "/v2/resource/{resource_id}/access" + }; + } } message SearchResourcesRequest { @@ -86,3 +96,9 @@ message GetResourcesResponse { repeated ResourceWithPermission resources = 1; } +message RequestResourceAccessRequest { + string resource_id = 1; +} + + +message RequestResourceAccessResponse {} \ No newline at end of file From 6f5996e93e0f16d2ba9ad2c4ef8777b38d8c2583 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Fri, 22 Sep 2023 15:27:11 +0200 Subject: [PATCH 10/22] feat: Workspace template convenience calls --- .../api/hooks/services/v2/hooks_service.proto | 4 +- .../storage/services/v2/object_service.proto | 4 +- .../services/v2/workspace_service.proto | 81 ++++++++++++++++--- 3 files changed, 76 insertions(+), 13 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 3bdaccb9..45393caa 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -64,7 +64,9 @@ message ExternalHook { Credentials credentials = 2; // If empty a basic JSON template will be used optional string custom_template = 3; - Method method = 4; + // Collection/Dataset where hooks can upload results + optional string result_object = 4, + Method method = 5; } enum Method { diff --git a/aruna/api/storage/services/v2/object_service.proto b/aruna/api/storage/services/v2/object_service.proto index 259e6f51..f0640a65 100644 --- a/aruna/api/storage/services/v2/object_service.proto +++ b/aruna/api/storage/services/v2/object_service.proto @@ -219,7 +219,7 @@ message UpdateObjectRequest { string object_id = 1; // object name optional string name = 2; - // + // object description optional string description = 3; // key_values to add repeated storage.models.v2.KeyValue add_key_values = 4; @@ -234,7 +234,7 @@ message UpdateObjectRequest { string dataset_id = 10; } repeated storage.models.v2.Hash hashes = 12; - // Force new object reversion + // Force new object revision bool forced_revision = 13; } diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index 20e4f6e6..25c53a12 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -23,11 +23,44 @@ service WorkspaceService { body : "*" }; } - - // TODO: ListWorkspaceTemplates/FilterAllTemplates/ListOwnedTemplates ? - // TODO: DeleteWorkspaceTemplate - // TODO: DescribeWorkspaceTemplate? - + // ListWorkspaceTemplatesById + // + // Status: ALPHA + // + // Gets workspace templates by id + // TODO: Are all templates public? + rpc GetWorkspaceTemplateById(GetWorkspaceTemplateByIdRequest) + returns (GetWorkspaceTemplateByIdResponse) { + option (google.api.http) = { + get: "/v2/workspace/template/{template_id}" + body : "*" + }; + } + // ListWorkspaceTemplates + // + // Status: ALPHA + // + // Lists workspace templates + // TODO: Are all templates public? + rpc ListWorkspaceTemplates(ListWorkspaceTemplatesRequest) + returns (ListWorkspaceTemplatesResponse) { + option (google.api.http) = { + get: "/v2/workspace/template" + body : "*" + }; + } + // DeleteWorkspaceTemplates + // + // Status: ALPHA + // + // Deletes specified workspace templates + rpc DeleteWorkspaceTemplate(DeleteWorkspaceTemplateRequest) + returns (DeleteWorkspaceTemplateResponse) { + option (google.api.http) = { + delete: "/v2/workspace/template/{template_id}" + body : "*" + }; + } // CreateWorkspace // @@ -93,20 +126,48 @@ message CreateWorkspaceTemplateRequest { // The name of the workspace template string name = 3; // Key values / hooks that must be added to each participant of the workspace - // repeated storage.models.v2.KeyValue key_values = 4; - // --> replace with hooks: + repeated storage.models.v2.KeyValue key_values = 4; + // Hooks that are added to created workspaces repeated string hook_ids = 4; // Description of the workspace string description = 5; - // Endpoint id that is used for this template - string endpoint_id = 6; + // Endpoint ids that are used for this template + repeated string endpoint_id = 6; } message CreateWorkspaceTemplateResponse { - string template_name = 1; + string template_id = 1; +} + +message GetWorkspaceTemplateByIdRequest { + string template_id = 1; +} +message GetWorkspaceTemplateByIdResponse { + WorkspaceInfo workspaces = 1; +} + +message ListWorkspaceTemplatesRequest { + // Filter by key value or get all + optional repeated storage.models.v2.KeyValue key_values = 1; +} + +message ListWorkspaceTemplatesResponse { + repeated WorkspaceInfo workspaces = 1; +} + +message WorkspaceInfo { + string workspace_id = 1; + string name = 2; + string description = 3; + string owner = 4; + string prefix = 5; + string hook_ids = 6; // TODO: Or complete hooks? + string endpoint_ids = 7; + repeated storage.models.v2.KeyValue key_values = 8; } message CreateWorkspaceRequest { + // Workspace template id string workspace_template = 1; // Description of this workspace instance string description = 2; From 7a89b3b0a6b217b3ee88ba882d0f7fdbd6f37d01 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Fri, 22 Sep 2023 15:32:41 +0200 Subject: [PATCH 11/22] fix: Linting --- aruna/api/hooks/services/v2/hooks_service.proto | 2 +- aruna/api/storage/services/v2/workspace_service.proto | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 45393caa..98a41a87 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -65,7 +65,7 @@ message ExternalHook { // If empty a basic JSON template will be used optional string custom_template = 3; // Collection/Dataset where hooks can upload results - optional string result_object = 4, + optional string result_object = 4; Method method = 5; } diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index 25c53a12..d084c005 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -147,8 +147,8 @@ message GetWorkspaceTemplateByIdResponse { } message ListWorkspaceTemplatesRequest { - // Filter by key value or get all - optional repeated storage.models.v2.KeyValue key_values = 1; + // Filter by key value or get all if empty + repeated storage.models.v2.KeyValue key_values = 1; } message ListWorkspaceTemplatesResponse { From 1539ffd1024655a3cfb2e2cb9cebbd00e28ae1a5 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Fri, 22 Sep 2023 15:34:15 +0200 Subject: [PATCH 12/22] fix: CreateWorkspaceTemplate numbering --- aruna/api/storage/services/v2/workspace_service.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index d084c005..7c6881ea 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -128,11 +128,11 @@ message CreateWorkspaceTemplateRequest { // Key values / hooks that must be added to each participant of the workspace repeated storage.models.v2.KeyValue key_values = 4; // Hooks that are added to created workspaces - repeated string hook_ids = 4; + repeated string hook_ids = 5; // Description of the workspace - string description = 5; + string description = 6; // Endpoint ids that are used for this template - repeated string endpoint_id = 6; + repeated string endpoint_id = 7; } message CreateWorkspaceTemplateResponse { From 457179ea71c449eca06559b3b658f9ba0d48ab26 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Fri, 22 Sep 2023 15:36:58 +0200 Subject: [PATCH 13/22] fixed: Missing requests --- aruna/api/storage/services/v2/workspace_service.proto | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index 7c6881ea..c385b9a9 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -5,7 +5,7 @@ option go_package = "github.com/ArunaStorage/go-api/aruna/api/storage/services/v option java_multiple_files = true; option java_package = "com.github.ArunaStorage.java_api.aruna.api.storage.services.v2"; option java_outer_classname = "WorkspaceService"; -//import "aruna/api/storage/models/v2/models.proto"; +import "aruna/api/storage/models/v2/models.proto"; import "google/api/annotations.proto"; // Service to manage "special" anonymous collections / workspaces @@ -145,6 +145,10 @@ message GetWorkspaceTemplateByIdRequest { message GetWorkspaceTemplateByIdResponse { WorkspaceInfo workspaces = 1; } +message DeleteWorkspaceTemplateRequest { + string template_id = 1; +} +message DeleteWorkspaceTemplateResponse {} message ListWorkspaceTemplatesRequest { // Filter by key value or get all if empty From 788e146362b3f0dc9984243c16a76c8f0a35ba0b Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 10:41:16 +0200 Subject: [PATCH 14/22] feat: Workspace template descriptions --- .../api/hooks/services/v2/hooks_service.proto | 3 ++- .../services/v2/workspace_service.proto | 27 ++++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 98a41a87..0d4af068 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -4,7 +4,8 @@ package aruna.api.hooks.services.v2; option go_package = "github.com/ArunaStorage/go-api/aruna/api/storage/services/v2"; option java_multiple_files = true; option java_package = "com.github.ArunaStorage.java_api.aruna.api.storage.services.v2"; -option java_outer_classname = "HooksService"; import "google/api/annotations.proto"; +option java_outer_classname = "HooksService"; +import "google/api/annotations.proto"; import "aruna/api/storage/models/v2/models.proto"; diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index c385b9a9..ea5f4a00 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -29,21 +29,21 @@ service WorkspaceService { // // Gets workspace templates by id // TODO: Are all templates public? - rpc GetWorkspaceTemplateById(GetWorkspaceTemplateByIdRequest) - returns (GetWorkspaceTemplateByIdResponse) { + rpc DescribeWorkspaceTemplate(DescribeWorkspaceTemplateRequest) + returns (DescribeWorkspaceTemplateResponse) { option (google.api.http) = { get: "/v2/workspace/template/{template_id}" body : "*" }; } - // ListWorkspaceTemplates + // ListOwnedWorkspaceTemplates // // Status: ALPHA // // Lists workspace templates // TODO: Are all templates public? - rpc ListWorkspaceTemplates(ListWorkspaceTemplatesRequest) - returns (ListWorkspaceTemplatesResponse) { + rpc ListOwnedWorkspaceTemplates(ListOwnedWorkspaceTemplatesRequest) + returns (ListOwnedWorkspaceTemplatesResponse) { option (google.api.http) = { get: "/v2/workspace/template" body : "*" @@ -121,12 +121,10 @@ service WorkspaceService { message CreateWorkspaceTemplateRequest { // The user id of the template owner (will be automatically added as "admin" to each associated workspace) string owner_id = 1; - // Short prefix for each workspace_project (will be prepended by a random id) example: test-i12ashj9g2 + // Short prefix for each workspace_project (will be prepended by a random id) example: test-i12ashj9g2 string prefix = 2; // The name of the workspace template string name = 3; - // Key values / hooks that must be added to each participant of the workspace - repeated storage.models.v2.KeyValue key_values = 4; // Hooks that are added to created workspaces repeated string hook_ids = 5; // Description of the workspace @@ -139,10 +137,10 @@ message CreateWorkspaceTemplateResponse { string template_id = 1; } -message GetWorkspaceTemplateByIdRequest { +message DescribeWorkspaceTemplateRequest { string template_id = 1; } -message GetWorkspaceTemplateByIdResponse { +message DescribeWorkspaceTemplateResponse { WorkspaceInfo workspaces = 1; } message DeleteWorkspaceTemplateRequest { @@ -150,12 +148,10 @@ message DeleteWorkspaceTemplateRequest { } message DeleteWorkspaceTemplateResponse {} -message ListWorkspaceTemplatesRequest { - // Filter by key value or get all if empty - repeated storage.models.v2.KeyValue key_values = 1; +message ListOwnedWorkspaceTemplatesRequest { } -message ListWorkspaceTemplatesResponse { +message ListOwnedWorkspaceTemplatesResponse { repeated WorkspaceInfo workspaces = 1; } @@ -165,9 +161,8 @@ message WorkspaceInfo { string description = 3; string owner = 4; string prefix = 5; - string hook_ids = 6; // TODO: Or complete hooks? + string hook_ids = 6; string endpoint_ids = 7; - repeated storage.models.v2.KeyValue key_values = 8; } message CreateWorkspaceRequest { From 2295741235260764e3553f9586265b4bfa08fcb6 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 10:46:35 +0200 Subject: [PATCH 15/22] fix: Linting --- aruna/api/storage/services/v2/workspace_service.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index ea5f4a00..ef4832fe 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -5,7 +5,6 @@ option go_package = "github.com/ArunaStorage/go-api/aruna/api/storage/services/v option java_multiple_files = true; option java_package = "com.github.ArunaStorage.java_api.aruna.api.storage.services.v2"; option java_outer_classname = "WorkspaceService"; -import "aruna/api/storage/models/v2/models.proto"; import "google/api/annotations.proto"; // Service to manage "special" anonymous collections / workspaces From d8d0ee2d975711e73ee503488bddc7d0ea03b739 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 11:14:55 +0200 Subject: [PATCH 16/22] refactor: Removed comments --- aruna/api/storage/services/v2/workspace_service.proto | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index ef4832fe..7c320414 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -26,8 +26,7 @@ service WorkspaceService { // // Status: ALPHA // - // Gets workspace templates by id - // TODO: Are all templates public? + // Gets workspace template by id rpc DescribeWorkspaceTemplate(DescribeWorkspaceTemplateRequest) returns (DescribeWorkspaceTemplateResponse) { option (google.api.http) = { @@ -39,8 +38,7 @@ service WorkspaceService { // // Status: ALPHA // - // Lists workspace templates - // TODO: Are all templates public? + // Lists owned workspace templates rpc ListOwnedWorkspaceTemplates(ListOwnedWorkspaceTemplatesRequest) returns (ListOwnedWorkspaceTemplatesResponse) { option (google.api.http) = { From 7d01ed9c828f7b6da694b8b3b68bc97a6aba7b9b Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 14:26:38 +0200 Subject: [PATCH 17/22] feat: Removed move workspace request --- .../services/v2/workspace_service.proto | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index 7c320414..f6b1bfb5 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -98,19 +98,6 @@ service WorkspaceService { body : "*" }; } - - // MoveWorkspaceData - // - // Status: ALPHA - // - // Claims an anonymous workspace - rpc MoveWorkspaceData(MoveWorkspaceDataRequest) - returns (MoveWorkspaceDataResponse) { - option (google.api.http) = { - post : "/v2/workspace/{workspace_id}/move/{project_id}" - body : "*" - }; - } } // Models: @@ -191,11 +178,3 @@ message ClaimWorkspaceRequest { } message ClaimWorkspaceResponse {} - -message MoveWorkspaceDataRequest { - // This will update all objects as "non_workspace" and move the root to another project - string workspace_id = 1; - string project_id = 2; -} - -message MoveWorkspaceDataResponse {} From ffceab13ab8ced7cc335bd209dc8c865a9e71be4 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 14:55:50 +0200 Subject: [PATCH 18/22] feat: Global hooks --- .../api/hooks/services/v2/hooks_service.proto | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 0d4af068..e171b974 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -22,6 +22,12 @@ service HooksService { body : "*" }; } + rpc AddProjectToHook(AddProjectToHookRequest) returns (AddProjectToHookResponse) { + option (google.api.http) = { + post : "/v2/hook/{hook_id}/{project_id}" + body : "*" + }; + } rpc ListProjectHooks(ListProjectHooksRequest) returns (ListProjectHooksResponse) { option (google.api.http) = { get : "/v2/hooks/project/{project_id}" @@ -111,7 +117,7 @@ message CreateHookRequest { Trigger trigger = 2; Hook hook = 3; uint64 timeout = 4; - string project_id = 5; + repeated string project_ids = 5; string description = 6; } message CreateHookResponse { @@ -154,11 +160,12 @@ message ListOwnedHooksRequest{ message HookInfo { string hook_id = 1; - string name = 2; - string description = 3; - Hook hook = 4; - Trigger trigger = 5; - uint64 timeout = 6; + repeated string project_ids = 2; + string name = 3; + string description = 4; + Hook hook = 5; + Trigger trigger = 6; + uint64 timeout = 7; } message ListProjectHooksResponse{ @@ -168,3 +175,10 @@ message ListProjectHooksResponse{ message ListOwnedHooksResponse{ repeated HookInfo infos = 1; } + +message AddProjectsToHookRequest { + string hook_id = 1; + repeated string project_ids = 2; +} + +message AddProjectsToHookResponse {}; From 9c4b3a5ed7e831b2434df262912194df749c021c Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 14:58:08 +0200 Subject: [PATCH 19/22] fix: Fixed typos --- aruna/api/hooks/services/v2/hooks_service.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index e171b974..8f37ee3c 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -22,7 +22,7 @@ service HooksService { body : "*" }; } - rpc AddProjectToHook(AddProjectToHookRequest) returns (AddProjectToHookResponse) { + rpc AddProjectsToHook(AddProjectsToHookRequest) returns (AddProjectsToHookResponse) { option (google.api.http) = { post : "/v2/hook/{hook_id}/{project_id}" body : "*" From 375c4e19eaaaee7e3281f3931fe2d9765ce7630f Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:05:07 +0200 Subject: [PATCH 20/22] fix: Commenting --- aruna/api/hooks/services/v2/hooks_service.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aruna/api/hooks/services/v2/hooks_service.proto b/aruna/api/hooks/services/v2/hooks_service.proto index 8f37ee3c..11bad2cf 100644 --- a/aruna/api/hooks/services/v2/hooks_service.proto +++ b/aruna/api/hooks/services/v2/hooks_service.proto @@ -71,7 +71,7 @@ message ExternalHook { Credentials credentials = 2; // If empty a basic JSON template will be used optional string custom_template = 3; - // Collection/Dataset where hooks can upload results + // Optional Project/Collection/Dataset where hooks can upload results. optional string result_object = 4; Method method = 5; } From 795e72ddc666e4cdea56b9ea3b543d154dbcf8f1 Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:29:55 +0200 Subject: [PATCH 21/22] fix: Renaming Describe into Get --- aruna/api/storage/services/v2/workspace_service.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index f6b1bfb5..d3c4af68 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -27,8 +27,8 @@ service WorkspaceService { // Status: ALPHA // // Gets workspace template by id - rpc DescribeWorkspaceTemplate(DescribeWorkspaceTemplateRequest) - returns (DescribeWorkspaceTemplateResponse) { + rpc GetWorkspaceTemplate(GetWorkspaceTemplateRequest) + returns (GetWorkspaceTemplateResponse) { option (google.api.http) = { get: "/v2/workspace/template/{template_id}" body : "*" @@ -121,10 +121,10 @@ message CreateWorkspaceTemplateResponse { string template_id = 1; } -message DescribeWorkspaceTemplateRequest { +message GetWorkspaceTemplateRequest { string template_id = 1; } -message DescribeWorkspaceTemplateResponse { +message GetWorkspaceTemplateResponse { WorkspaceInfo workspaces = 1; } message DeleteWorkspaceTemplateRequest { From 7b3867f50b7943bd805fb2b0bf16ecfd1fec5dcb Mon Sep 17 00:00:00 2001 From: lfbrehm <97600985+lfbrehm@users.noreply.github.com> Date: Mon, 25 Sep 2023 16:03:23 +0200 Subject: [PATCH 22/22] refactor: Applied suggestions --- aruna/api/storage/services/v2/object_service.proto | 2 +- aruna/api/storage/services/v2/workspace_service.proto | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aruna/api/storage/services/v2/object_service.proto b/aruna/api/storage/services/v2/object_service.proto index f0640a65..2e1d1ca6 100644 --- a/aruna/api/storage/services/v2/object_service.proto +++ b/aruna/api/storage/services/v2/object_service.proto @@ -235,7 +235,7 @@ message UpdateObjectRequest { } repeated storage.models.v2.Hash hashes = 12; // Force new object revision - bool forced_revision = 13; + bool force_revision = 13; } message UpdateObjectResponse { diff --git a/aruna/api/storage/services/v2/workspace_service.proto b/aruna/api/storage/services/v2/workspace_service.proto index d3c4af68..0156148a 100644 --- a/aruna/api/storage/services/v2/workspace_service.proto +++ b/aruna/api/storage/services/v2/workspace_service.proto @@ -22,7 +22,7 @@ service WorkspaceService { body : "*" }; } - // ListWorkspaceTemplatesById + // GetWorkspaceTemplatesById // // Status: ALPHA //