Skip to content

Commit

Permalink
Add samples for Backup Schedule feature.
Browse files Browse the repository at this point in the history
* CreateBackupSchedule
* GetBackupSchedule
* ListBackupSchedules
* UpdateBackupSchedule
* DeleteBackupSchedule
  • Loading branch information
Aayush Kadam committed Dec 9, 2024
1 parent 2405523 commit 3e18c55
Show file tree
Hide file tree
Showing 6 changed files with 562 additions and 0 deletions.
88 changes: 88 additions & 0 deletions spanner/src/create_backup_schedule.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?php
/**
* Copyright 2024 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* For instructions on how to run the full sample:
*
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/spanner/README.md
*/

namespace Google\Cloud\Samples\Spanner;

// [START spanner_create_backup_schedule]
use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\CreateBackupScheduleRequest;
use Google\Cloud\Spanner\Admin\Database\V1\CreateBackupEncryptionConfig;
use Google\Cloud\Spanner\Admin\Database\V1\CreateBackupEncryptionConfig\EncryptionType;
use Google\Cloud\Spanner\Admin\Database\V1\BackupSchedule;
use Google\Cloud\Spanner\Admin\Database\V1\FullBackupSpec;
use Google\Cloud\Spanner\Admin\Database\V1\BackupScheduleSpec;
use Google\Cloud\Spanner\Admin\Database\V1\CrontabSpec;
use Google\Protobuf\Duration;

/**
* Create a backup schedule.
* Example:
* ```
* create_backup_schedule($projectId, $instanceId, $databaseId, $backupScheduleId);
* ```
*
* @param string $projectId The Google Cloud project ID.
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
* @param string $backupScheduleId The ID of the backup schedule to be created.
* at https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases.backupSchedules#BackupSchedule.FIELDS
*/
function create_backup_schedule(
string $projectId,
string $instanceId,
string $databaseId,
string $backupScheduleId,
): void {
$databaseAdminClient = new DatabaseAdminClient();
$databaseFullName = DatabaseAdminClient::databaseName($projectId, $instanceId, $databaseId);
printf('%s', $databaseFullName);

$encryptionConfig = ( new CreateBackupEncryptionConfig() )
-> setEncryptionType(EncryptionType::USE_DATABASE_ENCRYPTION);
$backupSchedule = new BackupSchedule([
'full_backup_spec' => new FullBackupSpec(),
'retention_duration' => (new Duration())
->setSeconds(24 * 60 * 60),
'spec' => new BackupScheduleSpec([
'cron_spec' => new CrontabSpec([
'text' => '30 12 * * *'
]),
]),
'encryption_config' => $encryptionConfig,
]);
$request = new CreateBackupScheduleRequest([
'parent' => $databaseFullName,
'backup_schedule_id' => $backupScheduleId,
'backup_schedule' => $backupSchedule,
]);

$operation = $databaseAdminClient->createBackupSchedule($request);

printf('Created backup scehedule %s' . PHP_EOL, $operation->getName());
}
// [END spanner_create_backup_schedule]

// 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);

68 changes: 68 additions & 0 deletions spanner/src/delete_backup_schedule.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php
/**
* Copyright 2024 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* For instructions on how to run the full sample:
*
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/spanner/README.md
*/

namespace Google\Cloud\Samples\Spanner;

// [START spanner_delete_backup_schedule]
use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\DeleteBackupScheduleRequest;

/**
* Delete a backup schedule.
* Example:
* ```
* delete_backup_schedule($projectId, $instanceId, $databaseId, $backupScheduleId);
* ```
*
* @param string $projectId The Google Cloud project ID.
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
* @param string $backupScheduleId The ID of the backup schedule to be created.
* at https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases.backupSchedules#BackupSchedule.FIELDS
*/
function delete_backup_schedule(
string $projectId,
string $instanceId,
string $databaseId,
string $backupScheduleId,
): void {
$databaseAdminClient = new DatabaseAdminClient();

$backupScheduleName = sprintf(
'projects/%s/instances/%s/databases/%s/backupSchedules/%s',
$projectId,
$instanceId,
$databaseId,
$backupScheduleId);
$request = new DeleteBackupScheduleRequest([
'name' => strval($backupScheduleName),
]);

$databaseAdminClient->deleteBackupSchedule($request);
printf('Deleted backup scehedule %s' . PHP_EOL, $backupScheduleName);
}
// [END spanner_delete_backup_schedule]

// 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);
69 changes: 69 additions & 0 deletions spanner/src/get_backup_schedule.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?php
/**
* Copyright 2024 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* For instructions on how to run the full sample:
*
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/spanner/README.md
*/

namespace Google\Cloud\Samples\Spanner;

// [START spanner_get_backup_schedule]
use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\GetBackupScheduleRequest;

/**
* Get a backup schedule.
* Example:
* ```
* get_backup_schedule($projectId, $instanceId, $databaseId, $backupScheduleId);
* ```
*
* @param string $projectId The Google Cloud project ID.
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
* @param string $backupScheduleId The ID of the backup schedule to be created.
* at https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases.backupSchedules#BackupSchedule.FIELDS
*/
function get_backup_schedule(
string $projectId,
string $instanceId,
string $databaseId,
string $backupScheduleId,
): void {
$databaseAdminClient = new DatabaseAdminClient();

$backupScheduleName = sprintf(
'projects/%s/instances/%s/databases/%s/backupSchedules/%s',
$projectId,
$instanceId,
$databaseId,
$backupScheduleId);
$request = new GetBackupScheduleRequest([
'name' => $backupScheduleName,
]);

$operation = $databaseAdminClient->getBackupSchedule($request);

printf('Fetched backup scehedule %s' . PHP_EOL, $operation->getName());
}
// [END spanner_get_backup_schedule]

// 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);
65 changes: 65 additions & 0 deletions spanner/src/list_backup_schedules.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php
/**
* Copyright 2024 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* For instructions on how to run the full sample:
*
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/spanner/README.md
*/

namespace Google\Cloud\Samples\Spanner;

// [START spanner_list_backup_schedules]
use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\ListBackupSchedulesRequest;

/**
* Get list of all backup schedules for a given database.
* Example:
* ```
* list_backup_schedules($projectId, $instanceId, $databaseId, $backupScheduleId);
* ```
*
* @param string $projectId The Google Cloud project ID.
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
* at https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases.backupSchedules#BackupSchedule.FIELDS
*/
function list_backup_schedules(
string $projectId,
string $instanceId,
string $databaseId,
): void {
$databaseAdminClient = new DatabaseAdminClient();
$databaseFullName = DatabaseAdminClient::databaseName($projectId, $instanceId, $databaseId);

$request = new ListBackupSchedulesRequest([
'parent' => $databaseFullName,
]);
$operation = $databaseAdminClient->listBackupSchedules($request);

printf("Backup schedules for database %s" . PHP_EOL, $databaseFullName);
foreach($operation as $schedule) {
printf("Backup schedule: %s" . PHP_EOL, $schedule->getName());
}
}
// [END spanner_list_backup_schedules]

// 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);

101 changes: 101 additions & 0 deletions spanner/src/update_backup_schedule.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<?php
/**
* Copyright 2024 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
* For instructions on how to run the full sample:
*
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/spanner/README.md
*/

namespace Google\Cloud\Samples\Spanner;

// [START spanner_update_backup_schedule]
use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\UpdateBackupScheduleRequest;
use Google\Cloud\Spanner\Admin\Database\V1\CreateBackupEncryptionConfig;
use Google\Cloud\Spanner\Admin\Database\V1\CreateBackupEncryptionConfig\EncryptionType;
use Google\Cloud\Spanner\Admin\Database\V1\BackupSchedule;
use Google\Cloud\Spanner\Admin\Database\V1\FullBackupSpec;
use Google\Cloud\Spanner\Admin\Database\V1\BackupScheduleSpec;
use Google\Cloud\Spanner\Admin\Database\V1\CrontabSpec;
use Google\Protobuf\Duration;
use Google\Protobuf\FieldMask;

/**
* Update an existing backup schedule.
* Example:
* ```
* update_backup_schedule($projectId, $instanceId, $databaseId, $backupScheduleId);
* ```
*
* @param string $projectId The Google Cloud project ID.
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
* @param string $backupScheduleId The ID of the backup schedule to be created.
* at https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases.backupSchedules#BackupSchedule.FIELDS
*/
function update_backup_schedule(
string $projectId,
string $instanceId,
string $databaseId,
string $backupScheduleId,
): void {
$databaseAdminClient = new DatabaseAdminClient();

$encryptionConfig = new CreateBackupEncryptionConfig([
'encryption_type' => EncryptionType::USE_DATABASE_ENCRYPTION,
]);
$backupScheduleName = sprintf(
'projects/%s/instances/%s/databases/%s/backupSchedules/%s',
$projectId,
$instanceId,
$databaseId,
$backupScheduleId);
$backupSchedule = new BackupSchedule([
'name' => $backupScheduleName,
'full_backup_spec' => new FullBackupSpec(),
'retention_duration' => (new Duration())
->setSeconds(48 * 60 * 60),
'spec' => new BackupScheduleSpec([
'cron_spec' => new CrontabSpec([
'text' => '45 15 * * *'
]),
]),
'encryption_config' => $encryptionConfig,
]);
$fieldMask = (new FieldMask())
->setPaths([
'retention_duration',
'spec.cron_spec.text',
'encryption_config',
]);

$request = new UpdateBackupScheduleRequest([
'backup_schedule' => $backupSchedule,
'update_mask' => $fieldMask,
]);

$operation = $databaseAdminClient->updateBackupSchedule($request);

printf('Updated backup scehedule %s' . PHP_EOL, $operation->getName());
}
// [END spanner_update_backup_schedule]

// 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);

Loading

0 comments on commit 3e18c55

Please sign in to comment.