Skip to content

Commit

Permalink
feat: Make Managed Folders operations public
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 620299849
  • Loading branch information
Google APIs authored and Copybara-Service committed Mar 29, 2024
1 parent 34990e5 commit c5b9e24
Show file tree
Hide file tree
Showing 4 changed files with 242 additions and 22 deletions.
39 changes: 18 additions & 21 deletions google/storage/control/v2/BUILD.bazel
Expand Up @@ -104,11 +104,9 @@ java_gapic_assembly_gradle_pkg(
],
)

# Other than Java, the build target for all other languages are commented out.

###############################################################################
## Go
###############################################################################
##############################################################################
# Go
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"go_gapic_assembly_pkg",
Expand Down Expand Up @@ -157,9 +155,9 @@ go_gapic_assembly_pkg(
],
)

###############################################################################
## Python
###############################################################################
##############################################################################
# Python
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"py_gapic_assembly_pkg",
Expand Down Expand Up @@ -203,9 +201,9 @@ py_gapic_assembly_pkg(
],
)

###############################################################################
## PHP
###############################################################################
##############################################################################
# PHP
##############################################################################
#load(
# "@com_google_googleapis_imports//:imports.bzl",
# "php_gapic_assembly_pkg",
Expand All @@ -222,7 +220,6 @@ py_gapic_assembly_pkg(
# name = "control_php_gapic",
# srcs = [":control_proto_with_info"],
# grpc_service_config = "storage_control_grpc_service_config.json",
# rest_numeric_enums = True,
# migration_mode = "NEW_SURFACE_ONLY",
# service_yaml = "storage_v2.yaml",
# transport = "grpc",
Expand All @@ -240,9 +237,9 @@ py_gapic_assembly_pkg(
# ],
#)
#
###############################################################################
## Node.js
###############################################################################
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
Expand Down Expand Up @@ -270,9 +267,9 @@ nodejs_gapic_assembly_pkg(
],
)

###############################################################################
## Ruby
###############################################################################
##############################################################################
# Ruby
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"ruby_gapic_assembly_pkg",
Expand Down Expand Up @@ -318,9 +315,9 @@ ruby_gapic_assembly_pkg(
],
)

###############################################################################
## C#
###############################################################################
##############################################################################
# C#
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"csharp_gapic_assembly_pkg",
Expand Down
205 changes: 204 additions & 1 deletion google/storage/control/v2/storage_control.proto
Expand Up @@ -112,6 +112,47 @@ service StorageControl {
};
option (google.api.method_signature) = "name";
}

// Creates a new managed folder.
rpc CreateManagedFolder(CreateManagedFolderRequest) returns (ManagedFolder) {
option (google.api.routing) = {
routing_parameters { field: "parent" path_template: "{bucket=**}" }
};
option (google.api.method_signature) =
"parent,managed_folder,managed_folder_id";
}

// Permanently deletes an empty managed folder.
rpc DeleteManagedFolder(DeleteManagedFolderRequest)
returns (google.protobuf.Empty) {
option (google.api.routing) = {
routing_parameters {
field: "name"
path_template: "{bucket=projects/*/buckets/*}/**"
}
};
option (google.api.method_signature) = "name";
}

// Returns metadata for the specified managed folder.
rpc GetManagedFolder(GetManagedFolderRequest) returns (ManagedFolder) {
option (google.api.routing) = {
routing_parameters {
field: "name"
path_template: "{bucket=projects/*/buckets/*}/**"
}
};
option (google.api.method_signature) = "name";
}

// Retrieves a list of managed folders for a given bucket.
rpc ListManagedFolders(ListManagedFoldersRequest)
returns (ListManagedFoldersResponse) {
option (google.api.routing) = {
routing_parameters { field: "parent" path_template: "{bucket=**}" }
};
option (google.api.method_signature) = "parent";
}
}

// Contains information about a pending rename operation.
Expand Down Expand Up @@ -195,7 +236,11 @@ message CreateFolderRequest {
// error.
Folder folder = 2 [(google.api.field_behavior) = REQUIRED];

// Required. The absolute path of the folder, using a single `/` as delimiter.
// Required. The full name of a folder, including all its parent folders.
// Folders use single '/' characters as a delimiter.
// The folder_id must end with a slash.
// For example, the folder_id of "books/biographies/" would create a new
// "biographies/" folder under the "books/" folder.
string folder_id = 3 [(google.api.field_behavior) = REQUIRED];

// Optional. If true, parent folder doesn't have to be present and all missing
Expand Down Expand Up @@ -428,3 +473,161 @@ message GetStorageLayoutRequest {
(google.api.field_behavior) = OPTIONAL
];
}

// A managed folder.
message ManagedFolder {
option (google.api.resource) = {
type: "storage.googleapis.com/ManagedFolder"
pattern: "projects/{project}/buckets/{bucket}/managedFolders/{managedFolder=**}"
plural: "managedFolders"
singular: "managedFolder"
};

// Identifier. The name of this managed folder.
// Format:
// `projects/{project}/buckets/{bucket}/managedFolders/{managedFolder}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];

// Output only. The metadata version of this managed folder. It increases
// whenever the metadata is updated. Used for preconditions and for detecting
// changes in metadata. Managed folders don't have a generation number.
int64 metageneration = 3 [(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. The creation time of the managed folder.
google.protobuf.Timestamp create_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. The modification time of the managed folder.
google.protobuf.Timestamp update_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
}

// Request message for GetManagedFolder.
message GetManagedFolderRequest {
// Required. Name of the managed folder.
// Format:
// `projects/{project}/buckets/{bucket}/managedFolders/{managedFolder}`
string name = 6 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "storage.googleapis.com/ManagedFolder"
}
];

// The operation succeeds conditional on the managed folder's current
// metageneration matching the value here specified.
optional int64 if_metageneration_match = 3;

// The operation succeeds conditional on the managed folder's current
// metageneration NOT matching the value here specified.
optional int64 if_metageneration_not_match = 4;

// Optional. A unique identifier for this request. UUID is the recommended
// format, but other formats are still accepted.
string request_id = 5 [
(google.api.field_info).format = UUID4,
(google.api.field_behavior) = OPTIONAL
];
}

// Request message for CreateManagedFolder.
message CreateManagedFolderRequest {
// Required. Name of the bucket this managed folder belongs to.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "storage.googleapis.com/ManagedFolder"
}
];

// Required. Properties of the managed folder being created.
// The bucket and managed folder names are specified in the `parent` and
// `managed_folder_id` fields. Populating these fields in `managed_folder`
// will result in an error.
ManagedFolder managed_folder = 2 [(google.api.field_behavior) = REQUIRED];

// Required. The name of the managed folder. It uses a single `/` as delimiter
// and leading and trailing `/` are allowed.
string managed_folder_id = 3 [(google.api.field_behavior) = REQUIRED];

// Optional. A unique identifier for this request. UUID is the recommended
// format, but other formats are still accepted.
string request_id = 4 [
(google.api.field_info).format = UUID4,
(google.api.field_behavior) = OPTIONAL
];
}

// DeleteManagedFolder RPC request message.
message DeleteManagedFolderRequest {
// Required. Name of the managed folder.
// Format:
// `projects/{project}/buckets/{bucket}/managedFolders/{managedFolder}`
string name = 7 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "storage.googleapis.com/ManagedFolder"
}
];

// The operation succeeds conditional on the managed folder's current
// metageneration matching the value here specified.
optional int64 if_metageneration_match = 3;

// The operation succeeds conditional on the managed folder's current
// metageneration NOT matching the value here specified.
optional int64 if_metageneration_not_match = 4;

// Allows deletion of a managed folder even if it is not empty.
// A managed folder is empty if it manages no child managed folders or
// objects. Caller must have permission for
// storage.managedFolders.setIamPolicy.
bool allow_non_empty = 5;

// Optional. A unique identifier for this request. UUID is the recommended
// format, but other formats are still accepted.
string request_id = 6 [
(google.api.field_info).format = UUID4,
(google.api.field_behavior) = OPTIONAL
];
}

// Request message for ListManagedFolders.
message ListManagedFoldersRequest {
// Required. Name of the bucket this managed folder belongs to.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "storage.googleapis.com/ManagedFolder"
}
];

// Optional. Maximum number of managed folders to return in a single response.
// The service will use this parameter or 1,000 items, whichever is smaller.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];

// Optional. A previously-returned page token representing part of the larger
// set of results to view.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];

// Optional. Filter results to match managed folders with name starting with
// this prefix.
string prefix = 4 [(google.api.field_behavior) = OPTIONAL];

// Optional. A unique identifier for this request. UUID is the recommended
// format, but other formats are still accepted.
string request_id = 5 [
(google.api.field_info).format = UUID4,
(google.api.field_behavior) = OPTIONAL
];
}

// Response message for ListManagedFolders.
message ListManagedFoldersResponse {
// The list of matching managed folders
repeated ManagedFolder managed_folders = 1;

// The continuation token, used to page through large result sets. Provide
// this value in a subsequent request to return the next page of results.
string next_page_token = 2;
}
Expand Up @@ -20,6 +20,14 @@
{
"service": "google.storage.control.v2.StorageControl",
"method": "RenameFolder"
},
{
"service": "google.storage.control.v2.StorageControl",
"method": "GetManagedFolder"
},
{
"service": "google.storage.control.v2.StorageControl",
"method": "ListManagedFolders"
}
],
"timeout": "60s",
Expand Down
12 changes: 12 additions & 0 deletions google/storage/control/v2/storage_v2.yaml
Expand Up @@ -58,6 +58,18 @@ publishing:
- selector: google.storage.control.v2.StorageControl.GetStorageLayout
auto_populated_fields:
- request_id
- selector: google.storage.control.v2.StorageControl.CreateManagedFolder
auto_populated_fields:
- request_id
- selector: google.storage.control.v2.StorageControl.DeleteManagedFolder
auto_populated_fields:
- request_id
- selector: google.storage.control.v2.StorageControl.GetManagedFolder
auto_populated_fields:
- request_id
- selector: google.storage.control.v2.StorageControl.ListManagedFolders
auto_populated_fields:
- request_id
new_issue_uri: https://issuetracker.google.com/issues/new?component=187243&template=1162869
documentation_uri: https://cloud.google.com/storage/docs/overview
api_short_name: storage
Expand Down

0 comments on commit c5b9e24

Please sign in to comment.