From a10b8144ad8d13154a2cbe68c67e97bacd8f5d58 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:07:59 -0700 Subject: [PATCH 01/38] Add create_database_with_MR_CMEK.php --- spanner/src/create_database_with_MR_CMEK.php | 99 ++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 spanner/src/create_database_with_MR_CMEK.php diff --git a/spanner/src/create_database_with_MR_CMEK.php b/spanner/src/create_database_with_MR_CMEK.php new file mode 100644 index 000000000..9f214ae08 --- /dev/null +++ b/spanner/src/create_database_with_MR_CMEK.php @@ -0,0 +1,99 @@ +setParent($instanceName); + $createDatabaseRequest->setCreateStatement(sprintf('CREATE DATABASE `%s`', $databaseId)); + $createDatabaseRequest->setExtraStatements([ + 'CREATE TABLE Singers ( + SingerId INT64 NOT NULL, + FirstName STRING(1024), + LastName STRING(1024), + SingerInfo BYTES(MAX) + ) PRIMARY KEY (SingerId)', + 'CREATE TABLE Albums ( + SingerId INT64 NOT NULL, + AlbumId INT64 NOT NULL, + AlbumTitle STRING(MAX) + ) PRIMARY KEY (SingerId, AlbumId), + INTERLEAVE IN PARENT Singers ON DELETE CASCADE' + ]); + + if (!empty($kmsKeyNames)) { + $encryptionConfig = new EncryptionConfig(); + foreach ($kmsKeyNames as $kmsKeyName) { + $encryptionConfig->addKmsKeyNames($kmsKeyName); + } + $createDatabaseRequest->setEncryptionConfig($encryptionConfig); + } + + $operationResponse = $databaseAdminClient->createDatabase($createDatabaseRequest); + printf('Waiting for operation to complete...' . PHP_EOL); + $operationResponse->pollUntilComplete(); + + if ($operationResponse->operationSucceeded()) { + $database = $operationResponse->getResult(); + printf( + 'Created database %s on instance %s with encryption keys %s' . PHP_EOL, + $databaseId, + $instanceId, + print_r($database->getEncryptionConfig()->getKmsKeyNames(), true) + ); + } else { + $error = $operationResponse->getError(); + printf('Failed to create encrypted database: %s' . PHP_EOL, $error->getMessage()); + } +} +// [END spanner_create_database_with_MR_CMEK] + +// 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); From 9ff75b474af9600dabf54b82911a4ad0a2a9e705 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:49:09 -0700 Subject: [PATCH 02/38] Add testCreateDatabaseWithMRCMEK to spannerTest.php --- spanner/test/spannerTest.php | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index b279c2af1..69f95c95b 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -62,6 +62,9 @@ class spannerTest extends TestCase /** @var string encryptedDatabaseId */ protected static $encryptedDatabaseId; + /** @var string $encryptedMRCMEKDatabaseId */ + protected static $encryptedMRCMEKDatabaseId; + /** @var string backupId */ protected static $backupId; @@ -89,6 +92,12 @@ class spannerTest extends TestCase /** @var string kmsKeyName */ protected static $kmsKeyName; + /** @var string kmsKeyName2 */ + protected static $kmsKeyName2; + + /** @var string kmsKeyName3 */ + protected static $kmsKeyName3; + /** * Low cost instance with less than 1000 processing units. * @@ -132,11 +141,16 @@ public static function setUpBeforeClass(): void self::$instancePartitionInstanceId = 'test-' . time() . rand(); self::$instancePartitionInstance = $spanner->instance(self::$instancePartitionInstanceId); self::$databaseId = 'test-' . time() . rand(); - self::$encryptedDatabaseId = 'en-test-' . time() . rand(); + self::$encryptedDatabaseId = 'en-mr-cmek-test-' . time() . rand(); + self::$encryptedMRCMEKDatabaseId = 'en-test-' . time() . rand(); self::$backupId = 'backup-' . self::$databaseId; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = 'projects/' . self::$projectId . '/locations/us-central1/keyRings/spanner-test-keyring/cryptoKeys/spanner-test-cmek'; + self::$kmsKeyName2 = + 'projects/' . self::$projectId . '/locations/us-east1/keyRings/spanner-test-keyring2/cryptoKeys/spanner-test-cmek2'; + self::$kmsKeyName3 = + 'projects/' . self::$projectId . '/locations/us-east4/keyRings/spanner-test-keyring3/cryptoKeys/spanner-test-cmek3'; self::$lowCostInstance = $spanner->instance(self::$lowCostInstanceId); self::$multiInstanceId = 'kokoro-multi-instance'; @@ -296,6 +310,22 @@ public function testCreateDatabaseWithEncryptionKey() $this->assertStringContainsString('Created database en-test-', $output); } + /** + * @depends testCreateInstance + */ + public function testCreateDatabaseWithMRCMEK() + { + $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $output = $this->runAdminFunctionSnippet('create_database_with_MR_CMEK', [ + self::$projectId, + self::$instanceId, + self::$encryptedMRCMEKDatabaseId, + self::$kmsKeyNames, + ]); + $this->assertStringContainsString('Waiting for operation to complete...', $output); + $this->assertStringContainsString('Created database en-mr-cmek-test-', $output); + } + /** * @depends testCreateDatabase */ From 0d15ed3e74b61a5600669403a48be8cf74696d3b Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 13:48:27 -0700 Subject: [PATCH 03/38] Add create_backup_with_MR_CMEK --- spanner/src/create_backup_with_MR_CMEK | 97 ++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 spanner/src/create_backup_with_MR_CMEK diff --git a/spanner/src/create_backup_with_MR_CMEK b/spanner/src/create_backup_with_MR_CMEK new file mode 100644 index 000000000..0f21dd44e --- /dev/null +++ b/spanner/src/create_backup_with_MR_CMEK @@ -0,0 +1,97 @@ +setSeconds((new \DateTime('+14 days'))->getTimestamp()); + $request = new CreateBackupRequest([ + 'parent' => $instanceFullName, + 'backup_id' => $backupId, + 'encryption_config' => new CreateBackupEncryptionConfig([ + 'kms_key_names' => $kmsKeyNames, + 'encryption_type' => CreateBackupEncryptionConfig\EncryptionType::CUSTOMER_MANAGED_ENCRYPTION + ]), + 'backup' => new Backup([ + 'database' => $databaseFullName, + 'expire_time' => $expireTime + ]) + ]); + + $operation = $databaseAdminClient->createBackup($request); + + print('Waiting for operation to complete...' . PHP_EOL); + $operation->pollUntilComplete(); + + $request = new GetBackupRequest(); + $request->setName($databaseAdminClient->backupName($projectId, $instanceId, $backupId)); + $info = $databaseAdminClient->getBackup($request); + if (State::name($info->getState()) == 'READY') { + printf( + 'Backup %s of size %d bytes was created at %d using encryption keys %s' . PHP_EOL, + basename($info->getName()), + $info->getSizeBytes(), + $info->getCreateTime()->getSeconds(), + print_r($info->getEncryptionInfo()->getKmsKeyVersions(), true) + ); + } else { + print('Backup is not ready!' . PHP_EOL); + } +} +// [END spanner_create_backup_with_MR_CMEK] + +// 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); From 83fa89ce5bdf7c7de4d03ce756389e95b471bc1d Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:35:21 -0700 Subject: [PATCH 04/38] Add testCreateBackupWithMRCMEK to spannerBackupTest.php --- spanner/test/spannerBackupTest.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index 5e738ff8f..52d97075f 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -47,6 +47,9 @@ class spannerBackupTest extends TestCase /** @var string encryptedBackupId */ protected static $encryptedBackupId; + /** @var string encryptedMRCMEKBackupId */ + protected static $encryptedMRCMEKBackupId; + /** @var string databaseId */ protected static $databaseId; @@ -59,12 +62,21 @@ class spannerBackupTest extends TestCase /** @var string encryptedRestoredDatabaseId */ protected static $encryptedRestoredDatabaseId; + /** @var string encryptedMRCMEKRestoredDatabaseId */ + protected static $encryptedMRCMEKRestoredDatabaseId; + /** @var $instance Instance */ protected static $instance; /** @var string kmsKeyName */ protected static $kmsKeyName; + /** @var string kmsKeyName2 */ + protected static $kmsKeyName2; + + /** @var string kmsKeyName3 */ + protected static $kmsKeyName3; + public static function setUpBeforeClass(): void { self::checkProjectEnvVars(); @@ -85,12 +97,17 @@ public static function setUpBeforeClass(): void self::$databaseId = 'test-' . time() . rand(); self::$backupId = 'backup-' . self::$databaseId; self::$encryptedBackupId = 'en-backup-' . self::$databaseId; + self::$encryptedMRCMEKBackupId = 'en-mr-cmek-backup-' . self::$databaseId; self::$restoredDatabaseId = self::$databaseId . '-r'; self::$encryptedRestoredDatabaseId = self::$databaseId . '-en-r'; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = 'projects/' . self::$projectId . '/locations/us-central1/keyRings/spanner-test-keyring/cryptoKeys/spanner-test-cmek'; + self::$kmsKeyName2 = + 'projects/' . self::$projectId . '/locations/us-east1/keyRings/spanner-test-keyring2/cryptoKeys/spanner-test-cmek2'; + self::$kmsKeyName3 = + 'projects/' . self::$projectId . '/locations/us-east4/keyRings/spanner-test-keyring3/cryptoKeys/spanner-test-cmek3'; } public function testCreateDatabaseWithVersionRetentionPeriod() @@ -113,6 +130,17 @@ public function testCreateBackupWithEncryptionKey() $this->assertStringContainsString(self::$backupId, $output); } + public function testCreateBackupWithMRCMEK() + { + $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $output = $this->runFunctionSnippet('create_backup_with_MR_CMEK', [ + self::$databaseId, + self::$encryptedMRCMEKBackupId, + self::$kmsKeyNames, + ]); + $this->assertStringContainsString(self::$encryptedMRCMEKBackupId, $output); + } + /** * @depends testCreateDatabaseWithVersionRetentionPeriod */ From 593060f8a4796ffdf41df04ed41876d299b239d7 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:52:41 -0700 Subject: [PATCH 05/38] Add restore_backup_with_MR_CMEK --- spanner/src/restore_backup_with_MR_CMEK | 85 +++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 spanner/src/restore_backup_with_MR_CMEK diff --git a/spanner/src/restore_backup_with_MR_CMEK b/spanner/src/restore_backup_with_MR_CMEK new file mode 100644 index 000000000..fa2e159e2 --- /dev/null +++ b/spanner/src/restore_backup_with_MR_CMEK @@ -0,0 +1,85 @@ + $instanceFullName, + 'database_id' => $databaseId, + 'backup' => $backupFullName, + 'encryption_config' => new RestoreDatabaseEncryptionConfig([ + 'kms_key_names' => $kmsKeyNames, + 'encryption_type' => RestoreDatabaseEncryptionConfig\EncryptionType::CUSTOMER_MANAGED_ENCRYPTION + ]) + ]); + + // Create restore operation + $operation = $databaseAdminClient->restoreDatabase($request); + + print('Waiting for operation to complete...' . PHP_EOL); + $operation->pollUntilComplete(); + + // Reload new database and get restore info + $database = $operation->operationSucceeded() ? $operation->getResult() : null; + $restoreInfo = $database->getRestoreInfo(); + $backupInfo = $restoreInfo->getBackupInfo(); + $sourceDatabase = $backupInfo->getSourceDatabase(); + $sourceBackup = $backupInfo->getBackup(); + $encryptionConfig = $database->getEncryptionConfig(); + printf( + 'Database %s restored from backup %s using encryption keys %s' . PHP_EOL, + $sourceDatabase, $sourceBackup, print_r($encryptionConfig->getKmsKeyName(), true) + ); +} +// [END spanner_restore_backup_with_MR_CMEK] + +// 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); From 06bcc200ed0c360536c26a603f50404f2dbdcda4 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:58:55 -0700 Subject: [PATCH 06/38] Add testRestoreBackupWithMRCMEK to spannerBackupTest.php --- spanner/test/spannerBackupTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index 52d97075f..9c1c1b4db 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -100,6 +100,7 @@ public static function setUpBeforeClass(): void self::$encryptedMRCMEKBackupId = 'en-mr-cmek-backup-' . self::$databaseId; self::$restoredDatabaseId = self::$databaseId . '-r'; self::$encryptedRestoredDatabaseId = self::$databaseId . '-en-r'; + self::$encryptedMRCMEKRestoredDatabaseId = self::$databaseId . '-en-mr-cmek-r'; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = @@ -246,6 +247,21 @@ public function testRestoreBackupWithEncryptionKey() $this->assertStringContainsString(self::$databaseId, $output); } + /** + * @depends testCreateBackupWithMRCMEK + */ + public function testRestoreBackupWithMRCMEK() + { + $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $output = $this->runFunctionSnippet('restore_backup_with_MR_CMEK', [ + self::$encryptedRestoredDatabaseId, + self::$encryptedBackupId, + self::$kmsKeyNames, + ]); + $this->assertStringContainsString(self::$encryptedMRCMEKBackupId, $output); + $this->assertStringContainsString(self::$databaseId, $output); + } + /** * @depends testRestoreBackupWithEncryptionKey */ From ab16eb8bb47608f1467a3662cb9ef5fc55d8b695 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 16:05:53 -0700 Subject: [PATCH 07/38] Rename create_backup_with_MR_CMEK to create_backup_with_MR_CMEK.php --- ...{create_backup_with_MR_CMEK => create_backup_with_MR_CMEK.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spanner/src/{create_backup_with_MR_CMEK => create_backup_with_MR_CMEK.php} (100%) diff --git a/spanner/src/create_backup_with_MR_CMEK b/spanner/src/create_backup_with_MR_CMEK.php similarity index 100% rename from spanner/src/create_backup_with_MR_CMEK rename to spanner/src/create_backup_with_MR_CMEK.php From 27b4c900fb2c1809627643ce63637ff6006188b7 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 27 Aug 2024 16:06:29 -0700 Subject: [PATCH 08/38] Rename restore_backup_with_MR_CMEK to restore_backup_with_MR_CMEK.php --- ...estore_backup_with_MR_CMEK => restore_backup_with_MR_CMEK.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spanner/src/{restore_backup_with_MR_CMEK => restore_backup_with_MR_CMEK.php} (100%) diff --git a/spanner/src/restore_backup_with_MR_CMEK b/spanner/src/restore_backup_with_MR_CMEK.php similarity index 100% rename from spanner/src/restore_backup_with_MR_CMEK rename to spanner/src/restore_backup_with_MR_CMEK.php From fae82c33dec12a5e14c175f6c561e2490737186e Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 28 Aug 2024 08:24:11 -0700 Subject: [PATCH 09/38] Add copy_backup_with_MR_CMEK.php --- spanner/src/copy_backup_with_MR_CMEK.php | 91 ++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 spanner/src/copy_backup_with_MR_CMEK.php diff --git a/spanner/src/copy_backup_with_MR_CMEK.php b/spanner/src/copy_backup_with_MR_CMEK.php new file mode 100644 index 000000000..ad66204c9 --- /dev/null +++ b/spanner/src/copy_backup_with_MR_CMEK.php @@ -0,0 +1,91 @@ +setSeconds((new \DateTime('+30 days'))->getTimestamp()); + $request = new CopyBackupRequest([ + 'parent' => $instanceFullName, + 'backup_id' => $backupId, + 'source_backup' => $sourceBackupFullName, + 'expire_time' => $newExpireTime + 'encryption_config' => new CopyBackupEncryptionConfig([ + 'kms_key_names' => $kmsKeyNames, + 'encryption_type' => RestoreDatabaseEncryptionConfig\EncryptionType::CUSTOMER_MANAGED_ENCRYPTION + ]) + ]); + + // Create copy operation + $operation = $databaseAdminClient->copyBackup($request); + + print('Waiting for operation to complete...' . PHP_EOL); + $operation->pollUntilComplete(); + + $request = new GetBackupRequest(); + $request->setName($databaseAdminClient->backupName($projectId, $instanceId, $backupId)); + $info = $databaseAdminClient->getBackup($request); + if (State::name($info->getState()) == 'READY') { + printf( + 'Backup %s of size %d bytes was created at %d using encryption keys %s' . PHP_EOL, + basename($info->getName()), + $info->getSizeBytes(), + $info->getCreateTime()->getSeconds(), + print_r($info->getEncryptionInfo()->getKmsKeyVersions(), true) + ); + } else { + print('Backup is not ready!' . PHP_EOL); + } +} +// [END spanner_copy_backup_with_MR_CMEK] + +// 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); From a20201b13590d38860f6801df93fb04f02839f5d Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 28 Aug 2024 08:41:35 -0700 Subject: [PATCH 10/38] Add testCopyBackupWithMRCMEK to spannerBackupTest.php --- spanner/test/spannerBackupTest.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index 9c1c1b4db..250cf1b61 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -202,6 +202,25 @@ public function testCopyBackup() $this->assertMatchesRegularExpression(sprintf($regex, $newBackupId, self::$backupId), $output); } + /** + * @depends testCreateBackup + */ + public function testCopyBackupWithMRCMEK() + { + $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $newBackupId = 'copy-' . self::$backupId . '-' . time(); + + $output = $this->runFunctionSnippet('create_backup_with_MR_CMEK', [ + $newBackupId, + self::$instanceId, + self::$backupId, + $kmsKeyNames + ]); + + $regex = '/Backup %s of size \d+ bytes was copied at (.+) from the source backup %s/'; + $this->assertMatchesRegularExpression(sprintf($regex, $newBackupId, self::$backupId), $output); + } + /** * @depends testCreateBackup */ From 32568660986c132cdca7af0cd8917f89843f59f9 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 28 Aug 2024 08:47:55 -0700 Subject: [PATCH 11/38] Update copy_backup_with_MR_CMEK.php --- spanner/src/copy_backup_with_MR_CMEK.php | 65 +++++++++++++++--------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/spanner/src/copy_backup_with_MR_CMEK.php b/spanner/src/copy_backup_with_MR_CMEK.php index ad66204c9..4660669b4 100644 --- a/spanner/src/copy_backup_with_MR_CMEK.php +++ b/spanner/src/copy_backup_with_MR_CMEK.php @@ -25,8 +25,9 @@ // [START spanner_copy_backup_with_MR_CMEK] use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient; -use Google\Cloud\Spanner\Admin\Database\V1\CopyBackupEncryptionConfig; use Google\Cloud\Spanner\Admin\Database\V1\CopyBackupRequest; +use Google\Cloud\Spanner\Admin\Database\V1\CopyBackupEncryptionConfig; +use Google\Protobuf\Timestamp; /** * Copy a MR CMEK backup. @@ -40,48 +41,62 @@ * @param string $backupId The Spanner backup ID. * @param string[] $kmsKeyNames The KMS keys used for encryption. */ +/** + * Create a copy MR CMEK backup from another source backup. + * Example: + * ``` + * copy_backup_with_MR_CMEK($projectId, $destInstanceId, $destBackupId, $sourceInstanceId, $sourceBackupId, $kmsKeyNames); + * ``` + * + * @param string $projectId The Google Cloud project ID. + * @param string $destInstanceId The Spanner instance ID where the copy backup will reside. + * @param string $destBackupId The Spanner backup ID of the new backup to be created. + * @param string $sourceInstanceId The Spanner instance ID of the source backup. + * @param string $sourceBackupId The Spanner backup ID of the source. +* @param string[] $kmsKeyNames The KMS keys used for encryption. + */ function copy_backup_with_MR_CMEK( string $projectId, - string $instanceId, - string $sourceBackupId, - string $backupId, + string $destInstanceId, + string $destBackupId, + string $sourceInstanceId, + string $sourceBackupId array $kmsKeyNames ): void { $databaseAdminClient = new DatabaseAdminClient(); - $instanceFullName = DatabaseAdminClient::instanceName($projectId, $instanceId); - $sourceBackupFullName = DatabaseAdminClient::backupName($projectId, $instanceId, $sourceBackupId); - $newExpireTime = new Timestamp(); - $newExpireTime->setSeconds((new \DateTime('+30 days'))->getTimestamp()); + + $destInstanceFullName = DatabaseAdminClient::instanceName($projectId, $destInstanceId); + $expireTime = new Timestamp(); + $expireTime->setSeconds((new \DateTime('+8 hours'))->getTimestamp()); + $sourceBackupFullName = DatabaseAdminClient::backupName($projectId, $sourceInstanceId, $sourceBackupId); $request = new CopyBackupRequest([ - 'parent' => $instanceFullName, - 'backup_id' => $backupId, 'source_backup' => $sourceBackupFullName, - 'expire_time' => $newExpireTime + 'parent' => $destInstanceFullName, + 'backup_id' => $destBackupId, + 'expire_time' => $expireTime, 'encryption_config' => new CopyBackupEncryptionConfig([ 'kms_key_names' => $kmsKeyNames, 'encryption_type' => RestoreDatabaseEncryptionConfig\EncryptionType::CUSTOMER_MANAGED_ENCRYPTION ]) ]); - // Create copy operation - $operation = $databaseAdminClient->copyBackup($request); - - print('Waiting for operation to complete...' . PHP_EOL); - $operation->pollUntilComplete(); + $operationResponse = $databaseAdminClient->copyBackup($request); + $operationResponse->pollUntilComplete(); - $request = new GetBackupRequest(); - $request->setName($databaseAdminClient->backupName($projectId, $instanceId, $backupId)); - $info = $databaseAdminClient->getBackup($request); - if (State::name($info->getState()) == 'READY') { + if ($operationResponse->operationSucceeded()) { + $destBackupInfo = $operationResponse->getResult(); printf( - 'Backup %s of size %d bytes was created at %d using encryption keys %s' . PHP_EOL, - basename($info->getName()), - $info->getSizeBytes(), - $info->getCreateTime()->getSeconds(), + 'Backup %s of size %d bytes was copied at %d from the source backup %s using encryption keys %s' . PHP_EOL, + basename($destBackupInfo->getName()), + $destBackupInfo->getSizeBytes(), + $destBackupInfo->getCreateTime()->getSeconds(), + $sourceBackupId, print_r($info->getEncryptionInfo()->getKmsKeyVersions(), true) ); + printf('Version time of the copied backup: %d' . PHP_EOL, $destBackupInfo->getVersionTime()->getSeconds()); } else { - print('Backup is not ready!' . PHP_EOL); + $error = $operationResponse->getError(); + printf('Backup not created due to error: %s.' . PHP_EOL, $error->getMessage()); } } // [END spanner_copy_backup_with_MR_CMEK] From 3cb136a9b66fa1323d76cde6949cd983ef4c21d7 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 3 Sep 2024 16:33:21 -0700 Subject: [PATCH 12/38] Update copy_backup_with_MR_CMEK.php --- spanner/src/copy_backup_with_MR_CMEK.php | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/spanner/src/copy_backup_with_MR_CMEK.php b/spanner/src/copy_backup_with_MR_CMEK.php index 4660669b4..2ac83a120 100644 --- a/spanner/src/copy_backup_with_MR_CMEK.php +++ b/spanner/src/copy_backup_with_MR_CMEK.php @@ -60,7 +60,7 @@ function copy_backup_with_MR_CMEK( string $destInstanceId, string $destBackupId, string $sourceInstanceId, - string $sourceBackupId + string $sourceBackupId, array $kmsKeyNames ): void { $databaseAdminClient = new DatabaseAdminClient(); @@ -83,21 +83,21 @@ function copy_backup_with_MR_CMEK( $operationResponse = $databaseAdminClient->copyBackup($request); $operationResponse->pollUntilComplete(); - if ($operationResponse->operationSucceeded()) { - $destBackupInfo = $operationResponse->getResult(); - printf( - 'Backup %s of size %d bytes was copied at %d from the source backup %s using encryption keys %s' . PHP_EOL, - basename($destBackupInfo->getName()), - $destBackupInfo->getSizeBytes(), - $destBackupInfo->getCreateTime()->getSeconds(), - $sourceBackupId, - print_r($info->getEncryptionInfo()->getKmsKeyVersions(), true) - ); - printf('Version time of the copied backup: %d' . PHP_EOL, $destBackupInfo->getVersionTime()->getSeconds()); - } else { + if (!$operationResponse->operationSucceeded()) { $error = $operationResponse->getError(); printf('Backup not created due to error: %s.' . PHP_EOL, $error->getMessage()); + return; } + $destBackupInfo = $operationResponse->getResult(); + printf( + 'Backup %s of size %d bytes was copied at %d from the source backup %s using encryption keys %s' . PHP_EOL, + basename($destBackupInfo->getName()), + $destBackupInfo->getSizeBytes(), + $destBackupInfo->getCreateTime()->getSeconds(), + $sourceBackupId, + print_r($info->getEncryptionInfo()->getKmsKeyVersions(), true) + ); + printf('Version time of the copied backup: %d' . PHP_EOL, $destBackupInfo->getVersionTime()->getSeconds()); } // [END spanner_copy_backup_with_MR_CMEK] From 1f2a41b5b9d993caacc2263daed426a277379570 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 4 Sep 2024 09:53:58 -0700 Subject: [PATCH 13/38] Update create_database_with_MR_CMEK.php Add indentation --- spanner/src/create_database_with_MR_CMEK.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spanner/src/create_database_with_MR_CMEK.php b/spanner/src/create_database_with_MR_CMEK.php index 9f214ae08..38ff7030e 100644 --- a/spanner/src/create_database_with_MR_CMEK.php +++ b/spanner/src/create_database_with_MR_CMEK.php @@ -70,7 +70,7 @@ function create_database_with_MR_CMEK( if (!empty($kmsKeyNames)) { $encryptionConfig = new EncryptionConfig(); foreach ($kmsKeyNames as $kmsKeyName) { - $encryptionConfig->addKmsKeyNames($kmsKeyName); + $encryptionConfig->addKmsKeyNames($kmsKeyName); } $createDatabaseRequest->setEncryptionConfig($encryptionConfig); } From 51fa7224d775a921a9ada957f4dca6a0166a5182 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 4 Sep 2024 09:57:13 -0700 Subject: [PATCH 14/38] Update copy_backup_with_MR_CMEK.php --- spanner/src/copy_backup_with_MR_CMEK.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spanner/src/copy_backup_with_MR_CMEK.php b/spanner/src/copy_backup_with_MR_CMEK.php index 2ac83a120..c4b231c14 100644 --- a/spanner/src/copy_backup_with_MR_CMEK.php +++ b/spanner/src/copy_backup_with_MR_CMEK.php @@ -76,7 +76,7 @@ function copy_backup_with_MR_CMEK( 'expire_time' => $expireTime, 'encryption_config' => new CopyBackupEncryptionConfig([ 'kms_key_names' => $kmsKeyNames, - 'encryption_type' => RestoreDatabaseEncryptionConfig\EncryptionType::CUSTOMER_MANAGED_ENCRYPTION + 'encryption_type' => CopyBackupEncryptionConfig\EncryptionType::CUSTOMER_MANAGED_ENCRYPTION ]) ]); From 03b72447f6c43f133b5f05683e9a20e5d8fbece6 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 4 Sep 2024 10:24:57 -0700 Subject: [PATCH 15/38] Update copy_backup_with_MR_CMEK.php --- spanner/src/copy_backup_with_MR_CMEK.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spanner/src/copy_backup_with_MR_CMEK.php b/spanner/src/copy_backup_with_MR_CMEK.php index c4b231c14..578211fad 100644 --- a/spanner/src/copy_backup_with_MR_CMEK.php +++ b/spanner/src/copy_backup_with_MR_CMEK.php @@ -95,7 +95,7 @@ function copy_backup_with_MR_CMEK( $destBackupInfo->getSizeBytes(), $destBackupInfo->getCreateTime()->getSeconds(), $sourceBackupId, - print_r($info->getEncryptionInfo()->getKmsKeyVersions(), true) + print_r($destBackupInfo->getEncryptionInfo()->getKmsKeyVersions(), true) ); printf('Version time of the copied backup: %d' . PHP_EOL, $destBackupInfo->getVersionTime()->getSeconds()); } From 92e9cd97ba80e996a032892799e830977d60a369 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 4 Sep 2024 10:27:32 -0700 Subject: [PATCH 16/38] Update create_database_with_MR_CMEK.php --- spanner/src/create_database_with_MR_CMEK.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spanner/src/create_database_with_MR_CMEK.php b/spanner/src/create_database_with_MR_CMEK.php index 38ff7030e..0f0a5b3ef 100644 --- a/spanner/src/create_database_with_MR_CMEK.php +++ b/spanner/src/create_database_with_MR_CMEK.php @@ -69,9 +69,7 @@ function create_database_with_MR_CMEK( if (!empty($kmsKeyNames)) { $encryptionConfig = new EncryptionConfig(); - foreach ($kmsKeyNames as $kmsKeyName) { - $encryptionConfig->addKmsKeyNames($kmsKeyName); - } + $encryptionConfig->setKmsKeyNames($kmsKeyNames); $createDatabaseRequest->setEncryptionConfig($encryptionConfig); } From 449c7e2fcfb70f6c74bb9563b222b9bda5774d41 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 4 Sep 2024 10:34:22 -0700 Subject: [PATCH 17/38] Update restore_backup_with_MR_CMEK.php --- spanner/src/restore_backup_with_MR_CMEK.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spanner/src/restore_backup_with_MR_CMEK.php b/spanner/src/restore_backup_with_MR_CMEK.php index fa2e159e2..5bc22f746 100644 --- a/spanner/src/restore_backup_with_MR_CMEK.php +++ b/spanner/src/restore_backup_with_MR_CMEK.php @@ -75,7 +75,7 @@ function restore_backup_with_MR_CMEK( $encryptionConfig = $database->getEncryptionConfig(); printf( 'Database %s restored from backup %s using encryption keys %s' . PHP_EOL, - $sourceDatabase, $sourceBackup, print_r($encryptionConfig->getKmsKeyName(), true) + $sourceDatabase, $sourceBackup, print_r($encryptionConfig->getKmsKeyNames(), true) ); } // [END spanner_restore_backup_with_MR_CMEK] From 69c652f2c2828a2ab885a7c21dba9399192adada Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 4 Sep 2024 10:54:42 -0700 Subject: [PATCH 18/38] Update create_backup_with_MR_CMEK.php Use encryptionInformation --- spanner/src/create_backup_with_MR_CMEK.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spanner/src/create_backup_with_MR_CMEK.php b/spanner/src/create_backup_with_MR_CMEK.php index 0f21dd44e..cb71e8d5f 100644 --- a/spanner/src/create_backup_with_MR_CMEK.php +++ b/spanner/src/create_backup_with_MR_CMEK.php @@ -79,12 +79,16 @@ function create_backup_with_MR_CMEK( $request->setName($databaseAdminClient->backupName($projectId, $instanceId, $backupId)); $info = $databaseAdminClient->getBackup($request); if (State::name($info->getState()) == 'READY') { + $kmsKeyVersions = []; + foreach ($info->getEncryptionInformation() as $encryptionInfo) { + $kmsKeyVersions[] = $encryptionInfo->getKmsKeyVersion(); + } printf( 'Backup %s of size %d bytes was created at %d using encryption keys %s' . PHP_EOL, basename($info->getName()), $info->getSizeBytes(), $info->getCreateTime()->getSeconds(), - print_r($info->getEncryptionInfo()->getKmsKeyVersions(), true) + print_r($kmsKeyVersions, true) ); } else { print('Backup is not ready!' . PHP_EOL); From 52536f927a625c8e3c588563a3f1b5207957205c Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 4 Sep 2024 10:56:18 -0700 Subject: [PATCH 19/38] Update copy_backup_with_MR_CMEK.php Use encryptionInformation --- spanner/src/copy_backup_with_MR_CMEK.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spanner/src/copy_backup_with_MR_CMEK.php b/spanner/src/copy_backup_with_MR_CMEK.php index 578211fad..0fafca4e9 100644 --- a/spanner/src/copy_backup_with_MR_CMEK.php +++ b/spanner/src/copy_backup_with_MR_CMEK.php @@ -89,13 +89,17 @@ function copy_backup_with_MR_CMEK( return; } $destBackupInfo = $operationResponse->getResult(); + $kmsKeyVersions = []; + foreach ($destBackupInfo->getEncryptionInformation() as $encryptionInfo) { + $kmsKeyVersions[] = $encryptionInfo->getKmsKeyVersion(); + } printf( 'Backup %s of size %d bytes was copied at %d from the source backup %s using encryption keys %s' . PHP_EOL, basename($destBackupInfo->getName()), $destBackupInfo->getSizeBytes(), $destBackupInfo->getCreateTime()->getSeconds(), $sourceBackupId, - print_r($destBackupInfo->getEncryptionInfo()->getKmsKeyVersions(), true) + print_r($kmsKeyVersions, true) ); printf('Version time of the copied backup: %d' . PHP_EOL, $destBackupInfo->getVersionTime()->getSeconds()); } From 6299ff4930b7b74d2e44c8babade9844bf78460d Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:01:52 -0700 Subject: [PATCH 20/38] Update print_firewall_rule.php formatting --- compute/firewall/src/print_firewall_rule.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compute/firewall/src/print_firewall_rule.php b/compute/firewall/src/print_firewall_rule.php index d91ab44cf..bab5a7bc5 100644 --- a/compute/firewall/src/print_firewall_rule.php +++ b/compute/firewall/src/print_firewall_rule.php @@ -56,12 +56,12 @@ function print_firewall_rule(string $projectId, string $firewallRuleName) print('--Allowed--' . PHP_EOL); foreach ($response->getAllowed() as $item) { printf('Protocol: %s' . PHP_EOL, $item->getIPProtocol()); - foreach ($item->getPorts()as $ports) { + foreach ($item->getPorts() as $ports) { printf(' - Ports: %s' . PHP_EOL, $ports); } } print('--Source Ranges--' . PHP_EOL); - foreach ($response->getSourceRanges()as $ranges) { + foreach ($response->getSourceRanges() as $ranges) { printf(' - Range: %s' . PHP_EOL, $ranges); } } From cef2f51ab44ec9b56d989c1546c3b2a80aa62f93 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:06:04 -0700 Subject: [PATCH 21/38] Update and rename copy_backup_with_MR_CMEK.php to copy_backup_with_mr_cmek.php Change from MR_CMEK to mr_cmek --- ...backup_with_MR_CMEK.php => copy_backup_with_mr_cmek.php} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename spanner/src/{copy_backup_with_MR_CMEK.php => copy_backup_with_mr_cmek.php} (96%) diff --git a/spanner/src/copy_backup_with_MR_CMEK.php b/spanner/src/copy_backup_with_mr_cmek.php similarity index 96% rename from spanner/src/copy_backup_with_MR_CMEK.php rename to spanner/src/copy_backup_with_mr_cmek.php index 0fafca4e9..ffd55ea15 100644 --- a/spanner/src/copy_backup_with_MR_CMEK.php +++ b/spanner/src/copy_backup_with_mr_cmek.php @@ -33,7 +33,7 @@ * Copy a MR CMEK backup. * Example: * ``` - * copy_backup_with_MR_CMEK($projectId, $instanceId, $sourceBackupId, $backupId, $kmsKeyNames); + * copy_backup_with_mr_cmek($projectId, $instanceId, $sourceBackupId, $backupId, $kmsKeyNames); * ``` * @param string $projectId The Google Cloud project ID. * @param string $instanceId The Spanner instance ID. @@ -45,7 +45,7 @@ * Create a copy MR CMEK backup from another source backup. * Example: * ``` - * copy_backup_with_MR_CMEK($projectId, $destInstanceId, $destBackupId, $sourceInstanceId, $sourceBackupId, $kmsKeyNames); + * copy_backup_with_mr_cmek($projectId, $destInstanceId, $destBackupId, $sourceInstanceId, $sourceBackupId, $kmsKeyNames); * ``` * * @param string $projectId The Google Cloud project ID. @@ -55,7 +55,7 @@ * @param string $sourceBackupId The Spanner backup ID of the source. * @param string[] $kmsKeyNames The KMS keys used for encryption. */ -function copy_backup_with_MR_CMEK( +function copy_backup_with_mr_cmek( string $projectId, string $destInstanceId, string $destBackupId, From 4e434f23f00a568a89a6d4bf59a6e4d3b17c05e0 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:06:56 -0700 Subject: [PATCH 22/38] Update and rename create_backup_with_MR_CMEK.php to create_backup_with_mr_cmek.php Change from MR_CMEK to mr_cmek --- ...backup_with_MR_CMEK.php => create_backup_with_mr_cmek.php} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename spanner/src/{create_backup_with_MR_CMEK.php => create_backup_with_mr_cmek.php} (97%) diff --git a/spanner/src/create_backup_with_MR_CMEK.php b/spanner/src/create_backup_with_mr_cmek.php similarity index 97% rename from spanner/src/create_backup_with_MR_CMEK.php rename to spanner/src/create_backup_with_mr_cmek.php index cb71e8d5f..3b7ff230e 100644 --- a/spanner/src/create_backup_with_MR_CMEK.php +++ b/spanner/src/create_backup_with_mr_cmek.php @@ -36,7 +36,7 @@ * Create a CMEK backup. * Example: * ``` - * create_backup_with_MR_CMEK($projectId, $instanceId, $databaseId, $backupId, $kmsKeyNames); + * create_backup_with_mr_cmek($projectId, $instanceId, $databaseId, $backupId, $kmsKeyNames); * ``` * * @param string $projectId The Google Cloud project ID. @@ -45,7 +45,7 @@ * @param string $backupId The Spanner backup ID. * @param string[] $kmsKeyNames The KMS keys used for encryption. */ -function create_backup_with_MR_CMEK( +function create_backup_with_mr_cmek( string $projectId, string $instanceId, string $databaseId, From 9d831b3a03711e7fc1bd37d7b08acdd7ab2012b4 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:07:39 -0700 Subject: [PATCH 23/38] Update and rename create_database_with_MR_CMEK.php to create_database_with_mr_cmek.php Change from MR_CMEK to mr_cmek --- ...base_with_MR_CMEK.php => create_database_with_mr_cmek.php} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename spanner/src/{create_database_with_MR_CMEK.php => create_database_with_mr_cmek.php} (97%) diff --git a/spanner/src/create_database_with_MR_CMEK.php b/spanner/src/create_database_with_mr_cmek.php similarity index 97% rename from spanner/src/create_database_with_MR_CMEK.php rename to spanner/src/create_database_with_mr_cmek.php index 0f0a5b3ef..e53bf0504 100644 --- a/spanner/src/create_database_with_MR_CMEK.php +++ b/spanner/src/create_database_with_mr_cmek.php @@ -32,7 +32,7 @@ * Creates a MR CMEK database with tables for sample data. * Example: * ``` - * create_database_with_MR_CMEK($projectId, $instanceId, $databaseId, $kmsKeyNames); + * create_database_with_mr_cmek($projectId, $instanceId, $databaseId, $kmsKeyNames); * ``` * * @param string $projectId The Google Cloud project ID. @@ -40,7 +40,7 @@ * @param string $databaseId The Spanner database ID. * @param string[] $kmsKeyNames The KMS keys used for encryption. */ -function create_database_with_MR_CMEK( +function create_database_with_mr_cmek( string $projectId, string $instanceId, string $databaseId, From 467aabeb7e627709e7ad6e9c94ad74f10536962f Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:08:39 -0700 Subject: [PATCH 24/38] Update and rename restore_backup_with_MR_CMEK.php to restore_backup_with_mr_cmek.php Change from MR_CMEK to mr_cmek --- ...ackup_with_MR_CMEK.php => restore_backup_with_mr_cmek.php} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename spanner/src/{restore_backup_with_MR_CMEK.php => restore_backup_with_mr_cmek.php} (96%) diff --git a/spanner/src/restore_backup_with_MR_CMEK.php b/spanner/src/restore_backup_with_mr_cmek.php similarity index 96% rename from spanner/src/restore_backup_with_MR_CMEK.php rename to spanner/src/restore_backup_with_mr_cmek.php index 5bc22f746..6d82480d3 100644 --- a/spanner/src/restore_backup_with_MR_CMEK.php +++ b/spanner/src/restore_backup_with_mr_cmek.php @@ -32,7 +32,7 @@ * Restore a MR CMEK database from a backup. * Example: * ``` - * restore_backup_with_MR_CMEK($projectId, $instanceId, $databaseId, $backupId, $kmsKeyNames); + * restore_backup_with_mr_cmek($projectId, $instanceId, $databaseId, $backupId, $kmsKeyNames); * ``` * @param string $projectId The Google Cloud project ID. * @param string $instanceId The Spanner instance ID. @@ -40,7 +40,7 @@ * @param string $backupId The Spanner backup ID. * @param string[] $kmsKeyNames The KMS keys used for encryption. */ -function restore_backup_with_MR_CMEK( +function restore_backup_with_mr_cmek( string $projectId, string $instanceId, string $databaseId, From 9a1ca4d767537761617df8186fdb3cdb9355e453 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:12:51 -0700 Subject: [PATCH 25/38] Update spannerBackupTest.php Change from MR_CMEK to mr_cmek --- spanner/test/spannerBackupTest.php | 32 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index 250cf1b61..48e648fdd 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -47,8 +47,8 @@ class spannerBackupTest extends TestCase /** @var string encryptedBackupId */ protected static $encryptedBackupId; - /** @var string encryptedMRCMEKBackupId */ - protected static $encryptedMRCMEKBackupId; + /** @var string encryptedMrCmekBackupId */ + protected static $encryptedMrCmekBackupId; /** @var string databaseId */ protected static $databaseId; @@ -62,8 +62,8 @@ class spannerBackupTest extends TestCase /** @var string encryptedRestoredDatabaseId */ protected static $encryptedRestoredDatabaseId; - /** @var string encryptedMRCMEKRestoredDatabaseId */ - protected static $encryptedMRCMEKRestoredDatabaseId; + /** @var string encryptedMrCmekRestoredDatabaseId */ + protected static $encryptedMrCmekRestoredDatabaseId; /** @var $instance Instance */ protected static $instance; @@ -97,10 +97,10 @@ public static function setUpBeforeClass(): void self::$databaseId = 'test-' . time() . rand(); self::$backupId = 'backup-' . self::$databaseId; self::$encryptedBackupId = 'en-backup-' . self::$databaseId; - self::$encryptedMRCMEKBackupId = 'en-mr-cmek-backup-' . self::$databaseId; + self::$encryptedMrCmekBackupId = 'en-mr-cmek-backup-' . self::$databaseId; self::$restoredDatabaseId = self::$databaseId . '-r'; self::$encryptedRestoredDatabaseId = self::$databaseId . '-en-r'; - self::$encryptedMRCMEKRestoredDatabaseId = self::$databaseId . '-en-mr-cmek-r'; + self::$encryptedMrCmekRestoredDatabaseId = self::$databaseId . '-en-mr-cmek-r'; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = @@ -131,15 +131,15 @@ public function testCreateBackupWithEncryptionKey() $this->assertStringContainsString(self::$backupId, $output); } - public function testCreateBackupWithMRCMEK() + public function testCreateBackupWithMrCmek() { $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); - $output = $this->runFunctionSnippet('create_backup_with_MR_CMEK', [ + $output = $this->runFunctionSnippet('create_backup_with_mr_cmek', [ self::$databaseId, - self::$encryptedMRCMEKBackupId, + self::$encryptedMrCmekBackupId, self::$kmsKeyNames, ]); - $this->assertStringContainsString(self::$encryptedMRCMEKBackupId, $output); + $this->assertStringContainsString(self::$encryptedMrCmekBackupId, $output); } /** @@ -205,12 +205,12 @@ public function testCopyBackup() /** * @depends testCreateBackup */ - public function testCopyBackupWithMRCMEK() + public function testCopyBackupWithMrCmek() { $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); $newBackupId = 'copy-' . self::$backupId . '-' . time(); - $output = $this->runFunctionSnippet('create_backup_with_MR_CMEK', [ + $output = $this->runFunctionSnippet('create_backup_with_mr_cmek', [ $newBackupId, self::$instanceId, self::$backupId, @@ -267,17 +267,17 @@ public function testRestoreBackupWithEncryptionKey() } /** - * @depends testCreateBackupWithMRCMEK + * @depends testCreateBackupWithMrCmek */ - public function testRestoreBackupWithMRCMEK() + public function testRestoreBackupWithMrCmek() { $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); - $output = $this->runFunctionSnippet('restore_backup_with_MR_CMEK', [ + $output = $this->runFunctionSnippet('restore_backup_with_mr_cmek', [ self::$encryptedRestoredDatabaseId, self::$encryptedBackupId, self::$kmsKeyNames, ]); - $this->assertStringContainsString(self::$encryptedMRCMEKBackupId, $output); + $this->assertStringContainsString(self::$encryptedMrCmekBackupId, $output); $this->assertStringContainsString(self::$databaseId, $output); } From ac49f3b9e571a00abfc9cfa27a625071f5a9da09 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:14:36 -0700 Subject: [PATCH 26/38] Update spannerTest.php Change from MR_CMEK to mr_cmek --- spanner/test/spannerTest.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index 69f95c95b..407d26f95 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -62,8 +62,8 @@ class spannerTest extends TestCase /** @var string encryptedDatabaseId */ protected static $encryptedDatabaseId; - /** @var string $encryptedMRCMEKDatabaseId */ - protected static $encryptedMRCMEKDatabaseId; + /** @var string $encryptedMrCmekDatabaseId */ + protected static $encryptedMrCmekDatabaseId; /** @var string backupId */ protected static $backupId; @@ -142,7 +142,7 @@ public static function setUpBeforeClass(): void self::$instancePartitionInstance = $spanner->instance(self::$instancePartitionInstanceId); self::$databaseId = 'test-' . time() . rand(); self::$encryptedDatabaseId = 'en-mr-cmek-test-' . time() . rand(); - self::$encryptedMRCMEKDatabaseId = 'en-test-' . time() . rand(); + self::$encryptedMrCmekDatabaseId = 'en-test-' . time() . rand(); self::$backupId = 'backup-' . self::$databaseId; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = @@ -313,13 +313,13 @@ public function testCreateDatabaseWithEncryptionKey() /** * @depends testCreateInstance */ - public function testCreateDatabaseWithMRCMEK() + public function testCreateDatabaseWithMrCmek() { $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); - $output = $this->runAdminFunctionSnippet('create_database_with_MR_CMEK', [ + $output = $this->runAdminFunctionSnippet('create_database_with_mr_cmek', [ self::$projectId, self::$instanceId, - self::$encryptedMRCMEKDatabaseId, + self::$encryptedMrCmekDatabaseId, self::$kmsKeyNames, ]); $this->assertStringContainsString('Waiting for operation to complete...', $output); From b78580dfbb332bb9300f4d3aa714c358f760dbc0 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 17:31:46 -0700 Subject: [PATCH 27/38] Update spannerTest.php Add self::$ to kmsKeyName --- spanner/test/spannerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index 407d26f95..98e53f078 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -315,12 +315,12 @@ public function testCreateDatabaseWithEncryptionKey() */ public function testCreateDatabaseWithMrCmek() { - $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $output = $this->runAdminFunctionSnippet('create_database_with_mr_cmek', [ self::$projectId, self::$instanceId, self::$encryptedMrCmekDatabaseId, - self::$kmsKeyNames, + $kmsKeyNames, ]); $this->assertStringContainsString('Waiting for operation to complete...', $output); $this->assertStringContainsString('Created database en-mr-cmek-test-', $output); From bfc74d489883691bd49766c16aa26c2f917a2dc1 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 17:34:24 -0700 Subject: [PATCH 28/38] Update spannerBackupTest.php Add self::$ to kmsKeyName --- spanner/test/spannerBackupTest.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index 48e648fdd..d5dbaf3a5 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -133,11 +133,11 @@ public function testCreateBackupWithEncryptionKey() public function testCreateBackupWithMrCmek() { - $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $output = $this->runFunctionSnippet('create_backup_with_mr_cmek', [ self::$databaseId, self::$encryptedMrCmekBackupId, - self::$kmsKeyNames, + $kmsKeyNames, ]); $this->assertStringContainsString(self::$encryptedMrCmekBackupId, $output); } @@ -207,7 +207,7 @@ public function testCopyBackup() */ public function testCopyBackupWithMrCmek() { - $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $newBackupId = 'copy-' . self::$backupId . '-' . time(); $output = $this->runFunctionSnippet('create_backup_with_mr_cmek', [ @@ -271,11 +271,11 @@ public function testRestoreBackupWithEncryptionKey() */ public function testRestoreBackupWithMrCmek() { - $kmsKeyNames = array($kmsKeyName, kmsKeyName2, kmsKeyName3); + $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $output = $this->runFunctionSnippet('restore_backup_with_mr_cmek', [ self::$encryptedRestoredDatabaseId, self::$encryptedBackupId, - self::$kmsKeyNames, + $kmsKeyNames, ]); $this->assertStringContainsString(self::$encryptedMrCmekBackupId, $output); $this->assertStringContainsString(self::$databaseId, $output); From bbf0c0d5e79824dacedc140f786bf07ab42bdb5e Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Tue, 15 Oct 2024 17:35:32 -0700 Subject: [PATCH 29/38] Update spannerTest.php --- spanner/test/spannerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index 98e53f078..94b55a445 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -141,8 +141,8 @@ public static function setUpBeforeClass(): void self::$instancePartitionInstanceId = 'test-' . time() . rand(); self::$instancePartitionInstance = $spanner->instance(self::$instancePartitionInstanceId); self::$databaseId = 'test-' . time() . rand(); - self::$encryptedDatabaseId = 'en-mr-cmek-test-' . time() . rand(); - self::$encryptedMrCmekDatabaseId = 'en-test-' . time() . rand(); + self::$encryptedDatabaseId = 'en-test-' . time() . rand(); + self::$encryptedMrCmekDatabaseId = 'en-mr-cmek-test-' . time() . rand(); self::$backupId = 'backup-' . self::$databaseId; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = From a9e66d27cb1d29bcbc450fe3c210e43396f1d4ba Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 13:42:25 -0700 Subject: [PATCH 30/38] Update spannerTest.php Shorten database id --- spanner/test/spannerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index 94b55a445..aec7b88f9 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -142,7 +142,7 @@ public static function setUpBeforeClass(): void self::$instancePartitionInstance = $spanner->instance(self::$instancePartitionInstanceId); self::$databaseId = 'test-' . time() . rand(); self::$encryptedDatabaseId = 'en-test-' . time() . rand(); - self::$encryptedMrCmekDatabaseId = 'en-mr-cmek-test-' . time() . rand(); + self::$encryptedMrCmekDatabaseId = 'mr-test-' . time() . rand(); self::$backupId = 'backup-' . self::$databaseId; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = @@ -323,7 +323,7 @@ public function testCreateDatabaseWithMrCmek() $kmsKeyNames, ]); $this->assertStringContainsString('Waiting for operation to complete...', $output); - $this->assertStringContainsString('Created database en-mr-cmek-test-', $output); + $this->assertStringContainsString('Created database mr-test-', $output); } /** From ed6e7c63a08b3cf68d0d9bc52315b247c9388476 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:04:48 -0700 Subject: [PATCH 31/38] Update spannerBackupTest.php Shorten names --- spanner/test/spannerBackupTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index d5dbaf3a5..fa80718bf 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -97,10 +97,10 @@ public static function setUpBeforeClass(): void self::$databaseId = 'test-' . time() . rand(); self::$backupId = 'backup-' . self::$databaseId; self::$encryptedBackupId = 'en-backup-' . self::$databaseId; - self::$encryptedMrCmekBackupId = 'en-mr-cmek-backup-' . self::$databaseId; + self::$encryptedMrCmekBackupId = 'mr-backup-' . self::$databaseId; self::$restoredDatabaseId = self::$databaseId . '-r'; self::$encryptedRestoredDatabaseId = self::$databaseId . '-en-r'; - self::$encryptedMrCmekRestoredDatabaseId = self::$databaseId . '-en-mr-cmek-r'; + self::$encryptedMrCmekRestoredDatabaseId = self::$databaseId . '-mr-r'; self::$instance = $spanner->instance(self::$instanceId); self::$kmsKeyName = From edc82c792fa1aa973f22f592e6a19dcaa459ac28 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:35:06 -0700 Subject: [PATCH 32/38] Update spannerTest.php Use MR instance --- spanner/test/spannerTest.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index aec7b88f9..9823ec419 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -310,15 +310,25 @@ public function testCreateDatabaseWithEncryptionKey() $this->assertStringContainsString('Created database en-test-', $output); } - /** - * @depends testCreateInstance - */ public function testCreateDatabaseWithMrCmek() { + $mrCmekInstanceId = 'test-mr-' . time() . rand(); + $operation = $spanner->createInstance( + $instanceConfig, + $mrCmekInstanceId, + [ + 'displayName' => 'Mr Cmek test.', + 'nodeCount' => 1, + 'labels' => [ + 'cloud_spanner_samples' => true, + ] + ] + ); + $operation->pollUntilComplete(); $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $output = $this->runAdminFunctionSnippet('create_database_with_mr_cmek', [ self::$projectId, - self::$instanceId, + $mrCmekInstanceId, self::$encryptedMrCmekDatabaseId, $kmsKeyNames, ]); From a0e4d6d5fe21170f8014fbbf8c4e7e62378a873d Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:55:33 -0700 Subject: [PATCH 33/38] Update spannerTest.php Add spanner client --- spanner/test/spannerTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index 9823ec419..3a446c647 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -312,6 +312,9 @@ public function testCreateDatabaseWithEncryptionKey() public function testCreateDatabaseWithMrCmek() { + $spanner = new SpannerClient([ + 'projectId' => self::$projectId, + ]); $mrCmekInstanceId = 'test-mr-' . time() . rand(); $operation = $spanner->createInstance( $instanceConfig, From 6f50317bfc2a3622cb1057f76184d1321b67a690 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:59:35 -0700 Subject: [PATCH 34/38] Update spannerBackupTest.php Add mr copy instance --- spanner/test/spannerBackupTest.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index fa80718bf..deba35c8f 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -207,12 +207,27 @@ public function testCopyBackup() */ public function testCopyBackupWithMrCmek() { + $spanner = new SpannerClient([ + 'projectId' => self::$projectId, + ]); + $mrCmekInstanceId = 'test-mr-' . time() . rand(); + $operation = $spanner->createInstance( + $instanceConfig, + $mrCmekInstanceId, + [ + 'displayName' => 'Mr Cmek test.', + 'nodeCount' => 1, + 'labels' => [ + 'cloud_spanner_samples' => true, + ] + ] + ); $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $newBackupId = 'copy-' . self::$backupId . '-' . time(); - $output = $this->runFunctionSnippet('create_backup_with_mr_cmek', [ + $output = $this->runFunctionSnippet('copy_backup_with_mr_cmek', [ $newBackupId, - self::$instanceId, + self::mrCmekInstanceId, self::$backupId, $kmsKeyNames ]); From 0630b473803aa274c245a6be21a5d331062185bd Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:01:21 -0700 Subject: [PATCH 35/38] Update spannerTest.php Add self::$instanceConfig --- spanner/test/spannerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index 3a446c647..884300bfb 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -317,7 +317,7 @@ public function testCreateDatabaseWithMrCmek() ]); $mrCmekInstanceId = 'test-mr-' . time() . rand(); $operation = $spanner->createInstance( - $instanceConfig, + self::$instanceConfig $mrCmekInstanceId, [ 'displayName' => 'Mr Cmek test.', From 32d0e6f408bdab8ccefd44fe973f8e1659ccdb59 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:21:11 -0700 Subject: [PATCH 36/38] Update spannerTest.php Create instance config --- spanner/test/spannerTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spanner/test/spannerTest.php b/spanner/test/spannerTest.php index 884300bfb..eb06bb2e9 100644 --- a/spanner/test/spannerTest.php +++ b/spanner/test/spannerTest.php @@ -316,8 +316,9 @@ public function testCreateDatabaseWithMrCmek() 'projectId' => self::$projectId, ]); $mrCmekInstanceId = 'test-mr-' . time() . rand(); + $instanceConfig = $spanner->instanceConfiguration('nam3'); $operation = $spanner->createInstance( - self::$instanceConfig + $instanceConfig, $mrCmekInstanceId, [ 'displayName' => 'Mr Cmek test.', From a56a5cd0cc4c71bf3a340fae006e8f388aa5dfcd Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:23:55 -0700 Subject: [PATCH 37/38] Update spannerBackupTest.php --- spanner/test/spannerBackupTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index deba35c8f..ad5049482 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -211,6 +211,7 @@ public function testCopyBackupWithMrCmek() 'projectId' => self::$projectId, ]); $mrCmekInstanceId = 'test-mr-' . time() . rand(); + $instanceConfig = $spanner->instanceConfiguration('nam3'); $operation = $spanner->createInstance( $instanceConfig, $mrCmekInstanceId, @@ -222,6 +223,7 @@ public function testCopyBackupWithMrCmek() ] ] ); + $operation->pollUntilComplete(); $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $newBackupId = 'copy-' . self::$backupId . '-' . time(); From 7d5784d9c8f0a093e5446f1ddea88a86d407baf5 Mon Sep 17 00:00:00 2001 From: panerorenn9541 <36008213+panerorenn9541@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:38:35 -0700 Subject: [PATCH 38/38] Update spannerBackupTest.php --- spanner/test/spannerBackupTest.php | 48 ++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/spanner/test/spannerBackupTest.php b/spanner/test/spannerBackupTest.php index ad5049482..b51d7e8df 100644 --- a/spanner/test/spannerBackupTest.php +++ b/spanner/test/spannerBackupTest.php @@ -133,8 +133,28 @@ public function testCreateBackupWithEncryptionKey() public function testCreateBackupWithMrCmek() { + $spanner = new SpannerClient([ + 'projectId' => self::$projectId, + ]); + $mrCmekInstanceId = 'test-mr-' . time() . rand(); + $instanceConfig = $spanner->instanceConfiguration('nam3'); + $operation = $spanner->createInstance( + $instanceConfig, + $mrCmekInstanceId, + [ + 'displayName' => 'Mr Cmek test.', + 'nodeCount' => 1, + 'labels' => [ + 'cloud_spanner_samples' => true, + ] + ] + ); + $operation->pollUntilComplete(); + $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $output = $this->runFunctionSnippet('create_backup_with_mr_cmek', [ + self::$projectId, + $mrCmekInstanceId, self::$databaseId, self::$encryptedMrCmekBackupId, $kmsKeyNames, @@ -228,8 +248,10 @@ public function testCopyBackupWithMrCmek() $newBackupId = 'copy-' . self::$backupId . '-' . time(); $output = $this->runFunctionSnippet('copy_backup_with_mr_cmek', [ + self::$projectId, + $mrCmekInstanceId, $newBackupId, - self::mrCmekInstanceId, + $mrCmekInstanceId, self::$backupId, $kmsKeyNames ]); @@ -288,10 +310,30 @@ public function testRestoreBackupWithEncryptionKey() */ public function testRestoreBackupWithMrCmek() { + $spanner = new SpannerClient([ + 'projectId' => self::$projectId, + ]); + $mrCmekInstanceId = 'test-mr-' . time() . rand(); + $instanceConfig = $spanner->instanceConfiguration('nam3'); + $operation = $spanner->createInstance( + $instanceConfig, + $mrCmekInstanceId, + [ + 'displayName' => 'Mr Cmek test.', + 'nodeCount' => 1, + 'labels' => [ + 'cloud_spanner_samples' => true, + ] + ] + ); + $operation->pollUntilComplete(); + $kmsKeyNames = array(self::$kmsKeyName, self::$kmsKeyName2, self::$kmsKeyName3); $output = $this->runFunctionSnippet('restore_backup_with_mr_cmek', [ - self::$encryptedRestoredDatabaseId, - self::$encryptedBackupId, + self::$projectId, + $mrCmekInstanceId, + self::$encryptedMrCmekRestoredDatabaseId, + self::$encryptedMrCmekBackupId, $kmsKeyNames, ]); $this->assertStringContainsString(self::$encryptedMrCmekBackupId, $output);