From d8c8fdf085052e4944463e80d1dbde46f21ba1c4 Mon Sep 17 00:00:00 2001 From: Nidhi Nandwani Date: Thu, 11 Jun 2026 10:55:03 +0000 Subject: [PATCH 1/3] feat(c++): add deleteFolderRecursive sample This adds a sample demonstrating how to recursively delete a folder in a hierarchical namespace bucket. Fixes: b/521168740 --- .../samples/storage_control_folder_samples.cc | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc index 43e8050f65f4c..0f6315100d3cd 100644 --- a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc +++ b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc @@ -76,6 +76,24 @@ void DeleteFolder(google::cloud::storagecontrol_v2::StorageControlClient client, (std::move(client), argv.at(0), argv.at(1)); } +void DeleteFolderRecursive(google::cloud::storagecontrol_v2::StorageControlClient client, + std::vector const& argv) { + // [START storage_control_delete_folder_recursive] + namespace storagecontrol = google::cloud::storagecontrol_v2; + [](storagecontrol::StorageControlClient client, + std::string const& bucket_name, std::string const& folder_id) { + // Set project to "_" to signify globally scoped bucket + auto const name = std::string{"projects/_/buckets/"} + bucket_name + + "/folders/" + folder_id; + auto deleted = client.DeleteFolderRecursive(name).get(); + if (!deleted) throw std::move(deleted).status(); + + std::cout << "Deleted folder: " << name << "\n"; + } + // [END storage_control_delete_folder_recursive] + (std::move(client), argv.at(0), argv.at(1)); +} + void GetFolder(google::cloud::storagecontrol_v2::StorageControlClient client, std::vector const& argv) { // [START storage_control_get_folder] @@ -176,6 +194,10 @@ void AutoRun(std::vector const& argv) { std::cout << "\nRunning DeleteFolder() example" << std::endl; DeleteFolder(client, {bucket_name, dest_folder_id}); + + std::cout << "\nRunning DeleteFolderRecursive() example" << std::endl; + CreateFolder(client, {bucket_name, folder_id}); + DeleteFolderRecursive(client, {bucket_name, folder_id}); } } // namespace @@ -207,6 +229,8 @@ int main(int argc, char* argv[]) { // NOLINT(bugprone-exception-escape) Example example({ make_entry("create-folder", {"bucket-name", "folder-id"}, CreateFolder), make_entry("delete-folder", {"bucket-name", "folder-id"}, DeleteFolder), + make_entry("delete-folder-recursive", {"bucket-name", "folder-id"}, + DeleteFolderRecursive), make_entry("get-folder", {"bucket-name", "folder-id"}, GetFolder), make_entry("list-folders", {"bucket-name"}, ListFolders), make_entry("rename-folder", From ea2fc55814a1e830a2a5d479f339c361b80a57f3 Mon Sep 17 00:00:00 2001 From: Nidhi Nandwani Date: Thu, 11 Jun 2026 11:39:51 +0000 Subject: [PATCH 2/3] fix(storagecontrol): resolve PR comments for DeleteFolderRecursive [Generated-by: AI] --- commit_msg.txt | 5 +++++ .../v2/samples/storage_control_folder_samples.cc | 1 + 2 files changed, 6 insertions(+) create mode 100644 commit_msg.txt diff --git a/commit_msg.txt b/commit_msg.txt new file mode 100644 index 0000000000000..7b75b8214f9d0 --- /dev/null +++ b/commit_msg.txt @@ -0,0 +1,5 @@ +feat(c++): add deleteFolderRecursive sample + +This adds a sample demonstrating how to recursively delete a folder in a hierarchical namespace bucket. + +Fixes: b/521168740 diff --git a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc index 0f6315100d3cd..19c332bee60ae 100644 --- a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc +++ b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc @@ -197,6 +197,7 @@ void AutoRun(std::vector const& argv) { std::cout << "\nRunning DeleteFolderRecursive() example" << std::endl; CreateFolder(client, {bucket_name, folder_id}); + CreateFolder(client, {bucket_name, folder_id + "/subfolder"}); DeleteFolderRecursive(client, {bucket_name, folder_id}); } From 433d4e2e44a6244563d20b543a36499f87746b3f Mon Sep 17 00:00:00 2001 From: Nidhi Nandwani Date: Thu, 11 Jun 2026 11:42:15 +0000 Subject: [PATCH 3/3] style(storagecontrol): format DeleteFolderRecursive signature [Generated-by: AI] --- .../v2/samples/storage_control_folder_samples.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc index 19c332bee60ae..00b29b56a0bc4 100644 --- a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc +++ b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc @@ -76,8 +76,9 @@ void DeleteFolder(google::cloud::storagecontrol_v2::StorageControlClient client, (std::move(client), argv.at(0), argv.at(1)); } -void DeleteFolderRecursive(google::cloud::storagecontrol_v2::StorageControlClient client, - std::vector const& argv) { +void DeleteFolderRecursive( + google::cloud::storagecontrol_v2::StorageControlClient client, + std::vector const& argv) { // [START storage_control_delete_folder_recursive] namespace storagecontrol = google::cloud::storagecontrol_v2; [](storagecontrol::StorageControlClient client,