From 21928c5bcffd351b8c510ae11be52b0a3d8c6b36 Mon Sep 17 00:00:00 2001 From: Nidhi Nandwani Date: Thu, 11 Jun 2026 10:55:39 +0000 Subject: [PATCH 1/3] feat(PHP): add deleteFolderRecursive sample This adds a sample demonstrating how to recursively delete a folder in a hierarchical namespace bucket. Fixes: b/521168740 --- .../src/delete_folder_recursive.php | 63 +++++++++++++++++++ storagecontrol/test/StorageControlTest.php | 18 ++++++ 2 files changed, 81 insertions(+) create mode 100644 storagecontrol/src/delete_folder_recursive.php diff --git a/storagecontrol/src/delete_folder_recursive.php b/storagecontrol/src/delete_folder_recursive.php new file mode 100644 index 0000000000..817c23e589 --- /dev/null +++ b/storagecontrol/src/delete_folder_recursive.php @@ -0,0 +1,63 @@ +folderName('_', $bucketName, $folderName); + + $request = new DeleteFolderRecursiveRequest([ + 'name' => $formattedName, + ]); + + $operation = $storageControlClient->deleteFolderRecursive($request); + + $operation->pollUntilComplete(); + + if ($operation->operationSucceeded()) { + printf('Deleted folder: %s', $folderName); + } else { + printf('Failed to delete folder: %s', $operation->getError()->getMessage()); + } +} +# [END storage_control_delete_folder_recursive] + +// The following 2 lines are only needed to run the samples +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/storagecontrol/test/StorageControlTest.php b/storagecontrol/test/StorageControlTest.php index f32230e9d1..72939bed50 100644 --- a/storagecontrol/test/StorageControlTest.php +++ b/storagecontrol/test/StorageControlTest.php @@ -206,4 +206,22 @@ public function testDeleteFolder() $output ); } + + public function testDeleteFolderRecursive() + { + $recursiveFolderId = time() . rand(); + + $this->runFunctionSnippet('create_folder', [ + self::$sourceBucket->name(), $recursiveFolderId + ]); + + $output = $this->runFunctionSnippet('delete_folder_recursive', [ + self::$sourceBucket->name(), $recursiveFolderId + ]); + + $this->assertStringContainsString( + sprintf('Deleted folder: %s', $recursiveFolderId), + $output + ); + } } From 42eab797a31ae9371278e2dcb272284058b5fc4d Mon Sep 17 00:00:00 2001 From: Nidhi Nandwani Date: Thu, 11 Jun 2026 11:33:30 +0000 Subject: [PATCH 2/3] fix(storagecontrol): resolve PR comments and CI failures for deleteFolderRecursive [Generated-by: AI] --- storagecontrol/composer.json | 2 +- storagecontrol/src/delete_folder_recursive.php | 3 ++- storagecontrol/test/StorageControlTest.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/storagecontrol/composer.json b/storagecontrol/composer.json index 46deccbf4c..c2e2a38fcb 100644 --- a/storagecontrol/composer.json +++ b/storagecontrol/composer.json @@ -1,6 +1,6 @@ { "require": { - "google/cloud-storage-control": "1.6.1" + "google/cloud-storage-control": "^1.7.0" }, "require-dev": { "google/cloud-storage": "^1.48.1" diff --git a/storagecontrol/src/delete_folder_recursive.php b/storagecontrol/src/delete_folder_recursive.php index 817c23e589..ad1c98ccb0 100644 --- a/storagecontrol/src/delete_folder_recursive.php +++ b/storagecontrol/src/delete_folder_recursive.php @@ -53,7 +53,8 @@ function delete_folder_recursive(string $bucketName, string $folderName): void if ($operation->operationSucceeded()) { printf('Deleted folder: %s', $folderName); } else { - printf('Failed to delete folder: %s', $operation->getError()->getMessage()); + $error = $operation->getError(); + printf('Failed to delete folder: %s', $error ? $error->getMessage() : 'Unknown error'); } } # [END storage_control_delete_folder_recursive] diff --git a/storagecontrol/test/StorageControlTest.php b/storagecontrol/test/StorageControlTest.php index 72939bed50..b40fe69f36 100644 --- a/storagecontrol/test/StorageControlTest.php +++ b/storagecontrol/test/StorageControlTest.php @@ -210,7 +210,7 @@ public function testDeleteFolder() public function testDeleteFolderRecursive() { $recursiveFolderId = time() . rand(); - + $this->runFunctionSnippet('create_folder', [ self::$sourceBucket->name(), $recursiveFolderId ]); From 11e1750e447a5bae1c700e21496d8499e3c0811b Mon Sep 17 00:00:00 2001 From: Nidhi Nandwani Date: Thu, 11 Jun 2026 11:40:09 +0000 Subject: [PATCH 3/3] chore: trigger kokoro rerun due to transient JWT Signature error [Generated-by: AI]