@@ -35,23 +35,25 @@ def create_backup(instance_id, database_id, backup_id, version_time):
35
35
backup as backup_pb
36
36
37
37
spanner_client = spanner .Client ()
38
- instance = spanner_client .instance ( instance_id )
39
- database = instance . database ( database_id )
38
+ instance_admin_api = spanner_client .instance_admin_api
39
+ database_admin_api = spanner_client . database_admin_api
40
40
41
41
# Create a backup
42
42
expire_time = datetime .utcnow () + timedelta (days = 14 )
43
43
44
44
request = backup_pb .CreateBackupRequest (
45
- parent = instance . name ,
45
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
46
46
backup_id = backup_id ,
47
47
backup = backup_pb .Backup (
48
- database = database .name ,
48
+ database = database_admin_api .database_path (
49
+ spanner_client .project , instance_id , database_id
50
+ ),
49
51
expire_time = expire_time ,
50
52
version_time = version_time ,
51
53
),
52
54
)
53
55
54
- operation = spanner_client . database_admin_api .create_backup (request )
56
+ operation = database_admin_api .create_backup (request )
55
57
56
58
# Wait for backup operation to complete.
57
59
backup = operation .result (2100 )
@@ -81,8 +83,8 @@ def create_backup_with_encryption_key(
81
83
backup as backup_pb
82
84
83
85
spanner_client = spanner .Client ()
84
- instance = spanner_client .instance ( instance_id )
85
- database = instance . database ( database_id )
86
+ instance_admin_api = spanner_client .instance_admin_api
87
+ database_admin_api = spanner_client . database_admin_api
86
88
87
89
# Create a backup
88
90
expire_time = datetime .utcnow () + timedelta (days = 14 )
@@ -91,15 +93,17 @@ def create_backup_with_encryption_key(
91
93
"kms_key_name" : kms_key_name ,
92
94
}
93
95
request = backup_pb .CreateBackupRequest (
94
- parent = instance . name ,
96
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
95
97
backup_id = backup_id ,
96
98
backup = backup_pb .Backup (
97
- database = database .name ,
99
+ database = database_admin_api .database_path (
100
+ spanner_client .project , instance_id , database_id
101
+ ),
98
102
expire_time = expire_time ,
99
103
),
100
104
encryption_config = encryption_config ,
101
105
)
102
- operation = spanner_client . database_admin_api .create_backup (request )
106
+ operation = database_admin_api .create_backup (request )
103
107
104
108
# Wait for backup operation to complete.
105
109
backup = operation .result (2100 )
@@ -124,13 +128,16 @@ def restore_database(instance_id, new_database_id, backup_id):
124
128
from google .cloud .spanner_admin_database_v1 import RestoreDatabaseRequest
125
129
126
130
spanner_client = spanner .Client ()
127
- instance = spanner_client .instance ( instance_id )
131
+ instance_admin_api = spanner_client .instance_admin_api
128
132
129
133
# Start restoring an existing backup to a new database.
130
134
request = RestoreDatabaseRequest (
131
- parent = instance . name ,
135
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
132
136
database_id = new_database_id ,
133
- backup = "{}/backups/{}" .format (instance .name , backup_id ),
137
+ backup = "{}/backups/{}" .format (
138
+ instance_admin_api .instance_path (spanner_client .project , instance_id ),
139
+ backup_id ,
140
+ ),
134
141
)
135
142
operation = spanner_client .database_admin_api .restore_database (request )
136
143
@@ -161,7 +168,7 @@ def restore_database_with_encryption_key(
161
168
RestoreDatabaseEncryptionConfig , RestoreDatabaseRequest )
162
169
163
170
spanner_client = spanner .Client ()
164
- instance = spanner_client .instance ( instance_id )
171
+ instance_admin_api = spanner_client .instance_admin_api
165
172
166
173
# Start restoring an existing backup to a new database.
167
174
encryption_config = {
@@ -170,9 +177,12 @@ def restore_database_with_encryption_key(
170
177
}
171
178
172
179
request = RestoreDatabaseRequest (
173
- parent = instance . name ,
180
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
174
181
database_id = new_database_id ,
175
- backup = "{}/backups/{}" .format (instance .name , backup_id ),
182
+ backup = "{}/backups/{}" .format (
183
+ instance_admin_api .instance_path (spanner_client .project , instance_id ),
184
+ backup_id ,
185
+ ),
176
186
encryption_config = encryption_config ,
177
187
)
178
188
operation = spanner_client .database_admin_api .restore_database (request )
@@ -201,43 +211,53 @@ def cancel_backup(instance_id, database_id, backup_id):
201
211
backup as backup_pb
202
212
203
213
spanner_client = spanner .Client ()
204
- instance = spanner_client .instance ( instance_id )
205
- database = instance . database ( database_id )
214
+ instance_admin_api = spanner_client .instance_admin_api
215
+ database_admin_api = spanner_client . database_admin_api
206
216
207
217
expire_time = datetime .utcnow () + timedelta (days = 30 )
208
218
209
219
# Create a backup.
210
220
request = backup_pb .CreateBackupRequest (
211
- parent = instance . name ,
221
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
212
222
backup_id = backup_id ,
213
223
backup = backup_pb .Backup (
214
- database = database .name ,
224
+ database = database_admin_api .database_path (
225
+ spanner_client .project , instance_id , database_id
226
+ ),
215
227
expire_time = expire_time ,
216
228
),
217
229
)
218
230
219
- operation = spanner_client . database_admin_api .create_backup (request )
231
+ operation = database_admin_api .create_backup (request )
220
232
# Cancel backup creation.
221
233
operation .cancel ()
222
234
223
- # Cancel operations are best effort so either it will complete or
235
+ # Cancel operations are the best effort so either it will complete or
224
236
# be cancelled.
225
237
while not operation .done ():
226
238
time .sleep (300 ) # 5 mins
227
239
228
240
try :
229
- spanner_client . database_admin_api .get_backup (
241
+ database_admin_api .get_backup (
230
242
backup_pb .GetBackupRequest (
231
- name = "{}/backups/{}" .format (instance .name , backup_id )
243
+ name = "{}/backups/{}" .format (
244
+ instance_admin_api .instance_path (
245
+ spanner_client .project , instance_id
246
+ ),
247
+ backup_id ,
248
+ )
232
249
)
233
250
)
234
251
except NotFound :
235
252
print ("Backup creation was successfully cancelled." )
236
253
return
237
254
print ("Backup was created before the cancel completed." )
238
- spanner_client . database_admin_api .delete_backup (
255
+ database_admin_api .delete_backup (
239
256
backup_pb .DeleteBackupRequest (
240
- name = "{}/backups/{}" .format (instance .name , backup_id )
257
+ name = "{}/backups/{}" .format (
258
+ instance_admin_api .instance_path (spanner_client .project , instance_id ),
259
+ backup_id ,
260
+ )
241
261
)
242
262
)
243
263
print ("Backup deleted." )
@@ -252,7 +272,7 @@ def list_backup_operations(instance_id, database_id, backup_id):
252
272
backup as backup_pb
253
273
254
274
spanner_client = spanner .Client ()
255
- instance = spanner_client .instance ( instance_id )
275
+ instance_admin_api = spanner_client .instance_admin_api
256
276
257
277
# List the CreateBackup operations.
258
278
filter_ = (
@@ -261,7 +281,8 @@ def list_backup_operations(instance_id, database_id, backup_id):
261
281
"AND (metadata.database:{})"
262
282
).format (database_id )
263
283
request = backup_pb .ListBackupOperationsRequest (
264
- parent = instance .name , filter = filter_
284
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
285
+ filter = filter_ ,
265
286
)
266
287
operations = spanner_client .database_admin_api .list_backup_operations (request )
267
288
for op in operations :
@@ -280,7 +301,8 @@ def list_backup_operations(instance_id, database_id, backup_id):
280
301
"AND (metadata.source_backup:{})"
281
302
).format (backup_id )
282
303
request = backup_pb .ListBackupOperationsRequest (
283
- parent = instance .name , filter = filter_
304
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
305
+ filter = filter_ ,
284
306
)
285
307
operations = spanner_client .database_admin_api .list_backup_operations (request )
286
308
for op in operations :
@@ -305,15 +327,16 @@ def list_database_operations(instance_id):
305
327
spanner_database_admin
306
328
307
329
spanner_client = spanner .Client ()
308
- instance = spanner_client .instance ( instance_id )
330
+ instance_admin_api = spanner_client .instance_admin_api
309
331
310
332
# List the progress of restore.
311
333
filter_ = (
312
334
"(metadata.@type:type.googleapis.com/"
313
335
"google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata)"
314
336
)
315
337
request = spanner_database_admin .ListDatabaseOperationsRequest (
316
- parent = instance .name , filter = filter_
338
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
339
+ filter = filter_ ,
317
340
)
318
341
operations = spanner_client .database_admin_api .list_database_operations (request )
319
342
for op in operations :
@@ -336,19 +359,23 @@ def list_backups(instance_id, database_id, backup_id):
336
359
backup as backup_pb
337
360
338
361
spanner_client = spanner .Client ()
339
- instance = spanner_client .instance ( instance_id )
362
+ instance_admin_api = spanner_client .instance_admin_api
340
363
341
364
# List all backups.
342
365
print ("All backups:" )
343
- request = backup_pb .ListBackupsRequest (parent = instance .name , filter = "" )
366
+ request = backup_pb .ListBackupsRequest (
367
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
368
+ filter = "" ,
369
+ )
344
370
operations = spanner_client .database_admin_api .list_backups (request )
345
371
for backup in operations :
346
372
print (backup .name )
347
373
348
374
# List all backups that contain a name.
349
375
print ('All backups with backup name containing "{}":' .format (backup_id ))
350
376
request = backup_pb .ListBackupsRequest (
351
- parent = instance .name , filter = "name:{}" .format (backup_id )
377
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
378
+ filter = "name:{}" .format (backup_id ),
352
379
)
353
380
operations = spanner_client .database_admin_api .list_backups (request )
354
381
for backup in operations :
@@ -357,7 +384,8 @@ def list_backups(instance_id, database_id, backup_id):
357
384
# List all backups for a database that contains a name.
358
385
print ('All backups with database name containing "{}":' .format (database_id ))
359
386
request = backup_pb .ListBackupsRequest (
360
- parent = instance .name , filter = "database:{}" .format (database_id )
387
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
388
+ filter = "database:{}" .format (database_id ),
361
389
)
362
390
operations = spanner_client .database_admin_api .list_backups (request )
363
391
for backup in operations :
@@ -371,7 +399,7 @@ def list_backups(instance_id, database_id, backup_id):
371
399
)
372
400
)
373
401
request = backup_pb .ListBackupsRequest (
374
- parent = instance . name ,
402
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
375
403
filter = 'expire_time < "{}-{}-{}T{}:{}:{}Z"' .format (* expire_time .timetuple ()),
376
404
)
377
405
operations = spanner_client .database_admin_api .list_backups (request )
@@ -381,7 +409,8 @@ def list_backups(instance_id, database_id, backup_id):
381
409
# List all backups with a size greater than some bytes.
382
410
print ("All backups with backup size more than 100 bytes:" )
383
411
request = backup_pb .ListBackupsRequest (
384
- parent = instance .name , filter = "size_bytes > 100"
412
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
413
+ filter = "size_bytes > 100" ,
385
414
)
386
415
operations = spanner_client .database_admin_api .list_backups (request )
387
416
for backup in operations :
@@ -395,7 +424,7 @@ def list_backups(instance_id, database_id, backup_id):
395
424
)
396
425
)
397
426
request = backup_pb .ListBackupsRequest (
398
- parent = instance . name ,
427
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
399
428
filter = 'create_time >= "{}-{}-{}T{}:{}:{}Z" AND state:READY' .format (
400
429
* create_time .timetuple ()
401
430
),
@@ -408,7 +437,10 @@ def list_backups(instance_id, database_id, backup_id):
408
437
# If there are multiple pages, additional ``ListBackup``
409
438
# requests will be made as needed while iterating.
410
439
paged_backups = set ()
411
- request = backup_pb .ListBackupsRequest (parent = instance .name , page_size = 2 )
440
+ request = backup_pb .ListBackupsRequest (
441
+ parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
442
+ page_size = 2 ,
443
+ )
412
444
operations = spanner_client .database_admin_api .list_backups (request )
413
445
for backup in operations :
414
446
paged_backups .add (backup .name )
@@ -425,10 +457,13 @@ def delete_backup(instance_id, backup_id):
425
457
backup as backup_pb
426
458
427
459
spanner_client = spanner .Client ()
428
- instance = spanner_client .instance ( instance_id )
460
+ instance_admin_api = spanner_client .instance_admin_api
429
461
backup = spanner_client .database_admin_api .get_backup (
430
462
backup_pb .GetBackupRequest (
431
- name = "{}/backups/{}" .format (instance .name , backup_id )
463
+ name = "{}/backups/{}" .format (
464
+ instance_admin_api .instance_path (spanner_client .project , instance_id ),
465
+ backup_id ,
466
+ )
432
467
)
433
468
)
434
469
@@ -437,7 +472,12 @@ def delete_backup(instance_id, backup_id):
437
472
time .sleep (30 )
438
473
backup = spanner_client .database_admin_api .get_backup (
439
474
backup_pb .GetBackupRequest (
440
- name = "{}/backups/{}" .format (instance .name , backup_id )
475
+ name = "{}/backups/{}" .format (
476
+ instance_admin_api .instance_path (
477
+ spanner_client .project , instance_id
478
+ ),
479
+ backup_id ,
480
+ )
441
481
)
442
482
)
443
483
@@ -465,11 +505,14 @@ def update_backup(instance_id, backup_id):
465
505
backup as backup_pb
466
506
467
507
spanner_client = spanner .Client ()
468
- instance = spanner_client .instance ( instance_id )
508
+ instance_admin_api = spanner_client .instance_admin_api
469
509
470
510
backup = spanner_client .database_admin_api .get_backup (
471
511
backup_pb .GetBackupRequest (
472
- name = "{}/backups/{}" .format (instance .name , backup_id )
512
+ name = "{}/backups/{}" .format (
513
+ instance_admin_api .instance_path (spanner_client .project , instance_id ),
514
+ backup_id ,
515
+ )
473
516
)
474
517
)
475
518
@@ -503,7 +546,7 @@ def create_database_with_version_retention_period(
503
546
spanner_database_admin
504
547
505
548
spanner_client = spanner .Client ()
506
- instance = spanner_client .instance ( instance_id )
549
+ instance_admin_api = spanner_client .instance_admin_api
507
550
ddl_statements = [
508
551
"CREATE TABLE Singers ("
509
552
+ " SingerId INT64 NOT NULL,"
@@ -524,7 +567,9 @@ def create_database_with_version_retention_period(
524
567
]
525
568
operation = spanner_client .database_admin_api .create_database (
526
569
request = spanner_database_admin .CreateDatabaseRequest (
527
- parent = instance .name ,
570
+ parent = instance_admin_api .instance_path (
571
+ spanner_client .project , instance_id
572
+ ),
528
573
create_statement = "CREATE DATABASE `{}`" .format (database_id ),
529
574
extra_statements = ddl_statements ,
530
575
)
@@ -553,12 +598,12 @@ def copy_backup(instance_id, backup_id, source_backup_path):
553
598
backup as backup_pb
554
599
555
600
spanner_client = spanner .Client ()
556
- instance = spanner_client .instance ( instance_id )
601
+ instance_admin_api = spanner_client .instance_admin_api
557
602
558
603
# Create a backup object and wait for copy backup operation to complete.
559
604
expire_time = datetime .utcnow () + timedelta (days = 14 )
560
605
request = backup_pb .CopyBackupRequest (
561
- parent = instance . name ,
606
+ parent = instance_admin_api . instance_path ( spanner_client . project , instance_id ) ,
562
607
backup_id = backup_id ,
563
608
source_backup = source_backup_path ,
564
609
expire_time = expire_time ,
0 commit comments