|
34 | 34 | import java.util.concurrent.TimeUnit;
|
35 | 35 |
|
36 | 36 | public class CopyBackupSample {
|
37 |
| - |
38 |
| - public static void main(String[] args) { |
39 |
| - if (args.length != 4) { |
40 |
| - throw new IllegalArgumentException( |
41 |
| - "Invalid number of arguments. " |
42 |
| - + "Usage: CopyBackupSample " |
43 |
| - + "<project-id> <instance-id> <source-backup-id> <destination-backup-id>"); |
44 |
| - } |
45 |
| - String projectId = args[0]; |
46 |
| - String instanceId = args[1]; |
47 |
| - String sourceBackupId = args[2]; |
48 |
| - String destinationBackupId = args[3]; |
49 |
| - |
50 |
| - try (Spanner spanner = |
51 |
| - SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { |
52 |
| - DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); |
53 |
| - copyBackup(databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId); |
54 |
| - } |
| 37 | + public static void main(String[] args) { |
| 38 | + if (args.length != 4) { |
| 39 | + throw new IllegalArgumentException( |
| 40 | + "Invalid number of arguments. " |
| 41 | + + "Usage: CopyBackupSample " |
| 42 | + + "<project-id> <instance-id> <source-backup-id> <destination-backup-id>"); |
55 | 43 | }
|
| 44 | + String projectId = args[0]; |
| 45 | + String instanceId = args[1]; |
| 46 | + String sourceBackupId = args[2]; |
| 47 | + String destinationBackupId = args[3]; |
56 | 48 |
|
57 |
| - static void copyBackup() { |
58 |
| - // TODO(developer): Replace these variables before running the sample. |
59 |
| - String projectId = "my-project"; |
60 |
| - String instanceId = "my-instance"; |
61 |
| - String sourceBackupId = "my-backup"; |
62 |
| - String destinationBackupId = "my-destination-backup"; |
63 |
| - |
64 |
| - try (Spanner spanner = |
65 |
| - SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { |
66 |
| - DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); |
67 |
| - copyBackup(databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId); |
68 |
| - } |
| 49 | + try (Spanner spanner = |
| 50 | + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { |
| 51 | + DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); |
| 52 | + copyBackup(databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId); |
69 | 53 | }
|
| 54 | + } |
70 | 55 |
|
71 |
| - static Void copyBackup( |
72 |
| - DatabaseAdminClient databaseAdminClient, |
73 |
| - String projectId, |
74 |
| - String instanceId, |
75 |
| - String sourceBackupId, |
76 |
| - String destinationBackupId) { |
77 |
| - |
78 |
| - Timestamp expireTime = |
79 |
| - Timestamp.ofTimeMicroseconds( |
80 |
| - TimeUnit.MICROSECONDS.convert( |
81 |
| - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); |
82 |
| - // Creates a copy of an existing backup. |
83 |
| - Backup destinationBackup = |
84 |
| - databaseAdminClient |
85 |
| - .newBackupBuilder(BackupId.of(projectId, instanceId, destinationBackupId)) |
86 |
| - .setExpireTime(expireTime) |
87 |
| - .build(); |
| 56 | + static void copyBackup() { |
| 57 | + // TODO(developer): Replace these variables before running the sample. |
| 58 | + String projectId = "my-project"; |
| 59 | + String instanceId = "my-instance"; |
| 60 | + String sourceBackupId = "my-backup"; |
| 61 | + String destinationBackupId = "my-destination-backup"; |
| 62 | + try (Spanner spanner = |
| 63 | + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { |
| 64 | + DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); |
| 65 | + copyBackup(databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId); |
| 66 | + } |
| 67 | + } |
88 | 68 |
|
89 |
| - // Initiate the request which returns an OperationFuture. |
90 |
| - System.out.println("Copying backup [" + destinationBackup.getId() + "]..."); |
91 |
| - OperationFuture<Backup, CopyBackupMetadata> op = |
92 |
| - databaseAdminClient.copyBackup( |
93 |
| - BackupId.of(projectId, instanceId, sourceBackupId), destinationBackup); |
94 |
| - try { |
95 |
| - // Wait for the backup operation to complete. |
96 |
| - destinationBackup = op.get(); |
97 |
| - System.out.println("Copied backup [" + destinationBackup.getId() + "]"); |
98 |
| - } catch (ExecutionException e) { |
99 |
| - throw (SpannerException) e.getCause(); |
100 |
| - } catch (InterruptedException e) { |
101 |
| - throw SpannerExceptionFactory.propagateInterrupt(e); |
102 |
| - } |
| 69 | + static Void copyBackup( |
| 70 | + DatabaseAdminClient databaseAdminClient, |
| 71 | + String projectId, |
| 72 | + String instanceId, |
| 73 | + String sourceBackupId, |
| 74 | + String destinationBackupId) { |
103 | 75 |
|
104 |
| - // Reload the metadata of the backup from the server. |
105 |
| - destinationBackup = destinationBackup.reload(); |
106 |
| - System.out.println( |
107 |
| - String.format( |
108 |
| - "Backup %s of size %d bytes was copied at %s for version of database at %s", |
109 |
| - destinationBackup.getId().getName(), |
110 |
| - destinationBackup.getSize(), |
111 |
| - LocalDateTime.ofEpochSecond( |
112 |
| - destinationBackup.getProto().getCreateTime().getSeconds(), |
113 |
| - destinationBackup.getProto().getCreateTime().getNanos(), |
114 |
| - OffsetDateTime.now().getOffset()), |
115 |
| - LocalDateTime.ofEpochSecond( |
116 |
| - destinationBackup.getProto().getVersionTime().getSeconds(), |
117 |
| - destinationBackup.getProto().getVersionTime().getNanos(), |
118 |
| - OffsetDateTime.now().getOffset()))); |
| 76 | + Timestamp expireTime = |
| 77 | + Timestamp.ofTimeMicroseconds( |
| 78 | + TimeUnit.MICROSECONDS.convert( |
| 79 | + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), |
| 80 | + TimeUnit.MILLISECONDS)); |
| 81 | + // Creates a copy of an existing backup. |
| 82 | + Backup destinationBackup = |
| 83 | + databaseAdminClient |
| 84 | + .newBackupBuilder(BackupId.of(projectId, instanceId, destinationBackupId)) |
| 85 | + .setExpireTime(expireTime) |
| 86 | + .build(); |
119 | 87 |
|
120 |
| - return null; |
| 88 | + // Initiate the request which returns an OperationFuture. |
| 89 | + System.out.println("Copying backup [" + destinationBackup.getId() + "]..."); |
| 90 | + OperationFuture<Backup, CopyBackupMetadata> op = |
| 91 | + databaseAdminClient.copyBackup( |
| 92 | + BackupId.of(projectId, instanceId, sourceBackupId), destinationBackup); |
| 93 | + try { |
| 94 | + // Wait for the backup operation to complete. |
| 95 | + destinationBackup = op.get(); |
| 96 | + System.out.println("Copied backup [" + destinationBackup.getId() + "]"); |
| 97 | + } catch (ExecutionException e) { |
| 98 | + throw (SpannerException) e.getCause(); |
| 99 | + } catch (InterruptedException e) { |
| 100 | + throw SpannerExceptionFactory.propagateInterrupt(e); |
121 | 101 | }
|
| 102 | + // Reload the metadata of the backup from the server. |
| 103 | + destinationBackup = destinationBackup.reload(); |
| 104 | + System.out.println( |
| 105 | + String.format( |
| 106 | + "Backup %s of size %d bytes was copied at %s for version of database at %s", |
| 107 | + destinationBackup.getId().getName(), |
| 108 | + destinationBackup.getSize(), |
| 109 | + LocalDateTime.ofEpochSecond( |
| 110 | + destinationBackup.getProto().getCreateTime().getSeconds(), |
| 111 | + destinationBackup.getProto().getCreateTime().getNanos(), |
| 112 | + OffsetDateTime.now().getOffset()), |
| 113 | + LocalDateTime.ofEpochSecond( |
| 114 | + destinationBackup.getProto().getVersionTime().getSeconds(), |
| 115 | + destinationBackup.getProto().getVersionTime().getNanos(), |
| 116 | + OffsetDateTime.now().getOffset()))); |
| 117 | + return null; |
| 118 | + } |
122 | 119 | }
|
123 | 120 | // [END spanner_copy_backup]
|
0 commit comments