Skip to content

Commit 5ce7a2b

Browse files
committed
samples: adding copy backup operation support
1 parent 8748972 commit 5ce7a2b

File tree

1 file changed

+37
-14
lines changed

1 file changed

+37
-14
lines changed

samples/snippets/src/main/java/com/example/spanner/SpannerSample.java

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,21 +1661,17 @@ static void cancelCreateBackup(
16611661
// [END spanner_cancel_backup_create]
16621662

16631663
// [START spanner_list_backup_operations]
1664-
static void listBackupOperations(InstanceAdminClient instanceAdminClient, DatabaseId databaseId) {
1664+
static void listBackupOperations(InstanceAdminClient instanceAdminClient, DatabaseId databaseId, BackupId backupId) {
16651665
Instance instance = instanceAdminClient.getInstance(databaseId.getInstanceId().getInstance());
16661666
// Get create backup operations for the sample database.
1667-
Timestamp last24Hours = Timestamp.ofTimeSecondsAndNanos(TimeUnit.SECONDS.convert(
1668-
TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24,
1669-
TimeUnit.HOURS), 0);
16701667
String filter =
16711668
String.format(
1672-
"(metadata.database:%s) AND "
1673-
+ "(metadata.@type:type.googleapis.com/"
1674-
+ "google.spanner.admin.database.v1.CreateBackupMetadata) AND "
1675-
+ "(metadata.progress.start_time > \"%s\")",
1676-
databaseId.getName(), last24Hours);
1677-
Page<Operation> operations = instance.listBackupOperations(Options.filter(filter));
1678-
for (Operation op : operations.iterateAll()) {
1669+
"(metadata.@type:type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) "
1670+
+ "AND (metadata.database:%s)",
1671+
databaseId.getName());
1672+
Page<Operation> createBackupOperations = instance.listBackupOperations(Options.filter(filter));
1673+
System.out.println("Create Backup Operations:");
1674+
for (Operation op : createBackupOperations.iterateAll()) {
16791675
try {
16801676
CreateBackupMetadata metadata = op.getMetadata().unpack(CreateBackupMetadata.class);
16811677
System.out.println(
@@ -1689,6 +1685,30 @@ static void listBackupOperations(InstanceAdminClient instanceAdminClient, Databa
16891685
System.err.println(e.getMessage());
16901686
}
16911687
}
1688+
1689+
// Get copy backup operations for the sample database.
1690+
filter =
1691+
String.format(
1692+
"(metadata.@type:type.googleapis.com/"
1693+
+ "google.spanner.admin.database.v1.CopyBackupMetadata) "
1694+
+ "AND (metadata.source_backup:%s)",
1695+
backupId.getName());
1696+
Page<Operation> copyBackupOperations = instance.listBackupOperations(Options.filter(filter));
1697+
System.out.println("Copy Backup Operations:");
1698+
for (Operation op : copyBackupOperations.iterateAll()) {
1699+
try {
1700+
CopyBackupMetadata copyBackupMetadata = op.getMetadata().unpack(CopyBackupMetadata.class);
1701+
System.out.println(
1702+
String.format(
1703+
"Copy Backup %s on backup %s pending: %d%% complete",
1704+
copyBackupMetadata.getName(),
1705+
copyBackupMetadata.getSourceBackup(),
1706+
copyBackupMetadata.getProgress().getProgressPercent()));
1707+
} catch (InvalidProtocolBufferException e) {
1708+
// The returned operation does not contain CopyBackupMetadata.
1709+
System.err.println(e.getMessage());
1710+
}
1711+
}
16921712
}
16931713
// [END spanner_list_backup_operations]
16941714

@@ -2055,7 +2075,7 @@ static void run(
20552075
BackupId.of(backup.getInstanceId(), backup.getBackup() + "_cancel"));
20562076
break;
20572077
case "listbackupoperations":
2058-
listBackupOperations(instanceAdminClient, database);
2078+
listBackupOperations(instanceAdminClient, database, backup);
20592079
break;
20602080
case "listdatabaseoperations":
20612081
listDatabaseOperations(instanceAdminClient, dbAdminClient, database.getInstanceId());
@@ -2151,14 +2171,14 @@ static void printUsageAndExit() {
21512171
System.err.println(" SpannerExample querywithqueryoptions my-instance example-db");
21522172
System.err.println(" SpannerExample createbackup my-instance example-db");
21532173
System.err.println(" SpannerExample listbackups my-instance example-db");
2154-
System.err.println(" SpannerExample listbackupoperations my-instance example-db");
2174+
System.err.println(" SpannerExample listbackupoperations my-instance example-db backup-id");
21552175
System.err.println(" SpannerExample listdatabaseoperations my-instance example-db");
21562176
System.err.println(" SpannerExample restorebackup my-instance example-db");
21572177
System.exit(1);
21582178
}
21592179

21602180
public static void main(String[] args) throws Exception {
2161-
if (args.length != 3) {
2181+
if (args.length != 3 && args.length != 4) {
21622182
printUsageAndExit();
21632183
}
21642184
// [START init_client]
@@ -2182,6 +2202,9 @@ public static void main(String[] args) throws Exception {
21822202
String.format(
21832203
"%s_%02d",
21842204
db.getDatabase(), LocalDate.now().get(ChronoField.ALIGNED_WEEK_OF_YEAR));
2205+
if( args.length == 4) {
2206+
backupName = args[3];
2207+
}
21852208
BackupId backup = BackupId.of(db.getInstanceId(), backupName);
21862209

21872210
// [START init_client]

0 commit comments

Comments
 (0)