@@ -126,18 +126,17 @@ def restore_database(instance_id, new_database_id, backup_id):
126
126
from google .cloud .spanner_admin_database_v1 import RestoreDatabaseRequest
127
127
128
128
spanner_client = spanner .Client ()
129
- instance_admin_api = spanner_client .instance_admin_api
129
+ database_admin_api = spanner_client .database_admin_api
130
130
131
131
# Start restoring an existing backup to a new database.
132
132
request = RestoreDatabaseRequest (
133
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
133
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
134
134
database_id = new_database_id ,
135
- backup = "{}/backups/{}" .format (
136
- instance_admin_api .instance_path (spanner_client .project , instance_id ),
137
- backup_id ,
135
+ backup = database_admin_api .backup_path (
136
+ spanner_client .project , instance_id , backup_id
138
137
),
139
138
)
140
- operation = spanner_client . database_admin_api .restore_database (request )
139
+ operation = database_admin_api .restore_database (request )
141
140
142
141
# Wait for restore operation to complete.
143
142
db = operation .result (1600 )
@@ -166,7 +165,7 @@ def restore_database_with_encryption_key(
166
165
RestoreDatabaseEncryptionConfig , RestoreDatabaseRequest )
167
166
168
167
spanner_client = spanner .Client ()
169
- instance_admin_api = spanner_client .instance_admin_api
168
+ database_admin_api = spanner_client .database_admin_api
170
169
171
170
# Start restoring an existing backup to a new database.
172
171
encryption_config = {
@@ -175,15 +174,14 @@ def restore_database_with_encryption_key(
175
174
}
176
175
177
176
request = RestoreDatabaseRequest (
178
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
177
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
179
178
database_id = new_database_id ,
180
- backup = "{}/backups/{}" .format (
181
- instance_admin_api .instance_path (spanner_client .project , instance_id ),
182
- backup_id ,
179
+ backup = database_admin_api .backup_path (
180
+ spanner_client .project , instance_id , backup_id
183
181
),
184
182
encryption_config = encryption_config ,
185
183
)
186
- operation = spanner_client . database_admin_api .restore_database (request )
184
+ operation = database_admin_api .restore_database (request )
187
185
188
186
# Wait for restore operation to complete.
189
187
db = operation .result (1600 )
@@ -237,12 +235,9 @@ def cancel_backup(instance_id, database_id, backup_id):
237
235
try :
238
236
database_admin_api .get_backup (
239
237
backup_pb .GetBackupRequest (
240
- name = "{}/backups/{}" .format (
241
- database_admin_api .instance_path (
242
- spanner_client .project , instance_id
243
- ),
244
- backup_id ,
245
- )
238
+ name = database_admin_api .backup_path (
239
+ spanner_client .project , instance_id , backup_id
240
+ ),
246
241
)
247
242
)
248
243
except NotFound :
@@ -251,10 +246,9 @@ def cancel_backup(instance_id, database_id, backup_id):
251
246
print ("Backup was created before the cancel completed." )
252
247
database_admin_api .delete_backup (
253
248
backup_pb .DeleteBackupRequest (
254
- name = "{}/backups/{}" .format (
255
- database_admin_api .instance_path (spanner_client .project , instance_id ),
256
- backup_id ,
257
- )
249
+ name = database_admin_api .backup_path (
250
+ spanner_client .project , instance_id , backup_id
251
+ ),
258
252
)
259
253
)
260
254
print ("Backup deleted." )
@@ -269,7 +263,7 @@ def list_backup_operations(instance_id, database_id, backup_id):
269
263
backup as backup_pb
270
264
271
265
spanner_client = spanner .Client ()
272
- instance_admin_api = spanner_client .instance_admin_api
266
+ database_admin_api = spanner_client .database_admin_api
273
267
274
268
# List the CreateBackup operations.
275
269
filter_ = (
@@ -278,10 +272,10 @@ def list_backup_operations(instance_id, database_id, backup_id):
278
272
"AND (metadata.database:{})"
279
273
).format (database_id )
280
274
request = backup_pb .ListBackupOperationsRequest (
281
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
275
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
282
276
filter = filter_ ,
283
277
)
284
- operations = spanner_client . database_admin_api .list_backup_operations (request )
278
+ operations = database_admin_api .list_backup_operations (request )
285
279
for op in operations :
286
280
metadata = protobuf_helpers .from_any_pb (
287
281
backup_pb .CreateBackupMetadata , op .metadata
@@ -298,10 +292,10 @@ def list_backup_operations(instance_id, database_id, backup_id):
298
292
"AND (metadata.source_backup:{})"
299
293
).format (backup_id )
300
294
request = backup_pb .ListBackupOperationsRequest (
301
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
295
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
302
296
filter = filter_ ,
303
297
)
304
- operations = spanner_client . database_admin_api .list_backup_operations (request )
298
+ operations = database_admin_api .list_backup_operations (request )
305
299
for op in operations :
306
300
metadata = protobuf_helpers .from_any_pb (
307
301
backup_pb .CopyBackupMetadata , op .metadata
@@ -324,18 +318,18 @@ def list_database_operations(instance_id):
324
318
spanner_database_admin
325
319
326
320
spanner_client = spanner .Client ()
327
- instance_admin_api = spanner_client .instance_admin_api
321
+ database_admin_api = spanner_client .database_admin_api
328
322
329
323
# List the progress of restore.
330
324
filter_ = (
331
325
"(metadata.@type:type.googleapis.com/"
332
326
"google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata)"
333
327
)
334
328
request = spanner_database_admin .ListDatabaseOperationsRequest (
335
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
329
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
336
330
filter = filter_ ,
337
331
)
338
- operations = spanner_client . database_admin_api .list_database_operations (request )
332
+ operations = database_admin_api .list_database_operations (request )
339
333
for op in operations :
340
334
metadata = protobuf_helpers .from_any_pb (
341
335
spanner_database_admin .OptimizeRestoredDatabaseMetadata , op .metadata
@@ -356,35 +350,35 @@ def list_backups(instance_id, database_id, backup_id):
356
350
backup as backup_pb
357
351
358
352
spanner_client = spanner .Client ()
359
- instance_admin_api = spanner_client .instance_admin_api
353
+ database_admin_api = spanner_client .database_admin_api
360
354
361
355
# List all backups.
362
356
print ("All backups:" )
363
357
request = backup_pb .ListBackupsRequest (
364
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
358
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
365
359
filter = "" ,
366
360
)
367
- operations = spanner_client . database_admin_api .list_backups (request )
361
+ operations = database_admin_api .list_backups (request )
368
362
for backup in operations :
369
363
print (backup .name )
370
364
371
365
# List all backups that contain a name.
372
366
print ('All backups with backup name containing "{}":' .format (backup_id ))
373
367
request = backup_pb .ListBackupsRequest (
374
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
368
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
375
369
filter = "name:{}" .format (backup_id ),
376
370
)
377
- operations = spanner_client . database_admin_api .list_backups (request )
371
+ operations = database_admin_api .list_backups (request )
378
372
for backup in operations :
379
373
print (backup .name )
380
374
381
375
# List all backups for a database that contains a name.
382
376
print ('All backups with database name containing "{}":' .format (database_id ))
383
377
request = backup_pb .ListBackupsRequest (
384
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
378
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
385
379
filter = "database:{}" .format (database_id ),
386
380
)
387
- operations = spanner_client . database_admin_api .list_backups (request )
381
+ operations = database_admin_api .list_backups (request )
388
382
for backup in operations :
389
383
print (backup .name )
390
384
@@ -396,20 +390,20 @@ def list_backups(instance_id, database_id, backup_id):
396
390
)
397
391
)
398
392
request = backup_pb .ListBackupsRequest (
399
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
393
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
400
394
filter = 'expire_time < "{}-{}-{}T{}:{}:{}Z"' .format (* expire_time .timetuple ()),
401
395
)
402
- operations = spanner_client . database_admin_api .list_backups (request )
396
+ operations = database_admin_api .list_backups (request )
403
397
for backup in operations :
404
398
print (backup .name )
405
399
406
400
# List all backups with a size greater than some bytes.
407
401
print ("All backups with backup size more than 100 bytes:" )
408
402
request = backup_pb .ListBackupsRequest (
409
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
403
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
410
404
filter = "size_bytes > 100" ,
411
405
)
412
- operations = spanner_client . database_admin_api .list_backups (request )
406
+ operations = database_admin_api .list_backups (request )
413
407
for backup in operations :
414
408
print (backup .name )
415
409
@@ -421,12 +415,12 @@ def list_backups(instance_id, database_id, backup_id):
421
415
)
422
416
)
423
417
request = backup_pb .ListBackupsRequest (
424
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
418
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
425
419
filter = 'create_time >= "{}-{}-{}T{}:{}:{}Z" AND state:READY' .format (
426
420
* create_time .timetuple ()
427
421
),
428
422
)
429
- operations = spanner_client . database_admin_api .list_backups (request )
423
+ operations = database_admin_api .list_backups (request )
430
424
for backup in operations :
431
425
print (backup .name )
432
426
@@ -435,10 +429,10 @@ def list_backups(instance_id, database_id, backup_id):
435
429
# requests will be made as needed while iterating.
436
430
paged_backups = set ()
437
431
request = backup_pb .ListBackupsRequest (
438
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
432
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
439
433
page_size = 2 ,
440
434
)
441
- operations = spanner_client . database_admin_api .list_backups (request )
435
+ operations = database_admin_api .list_backups (request )
442
436
for backup in operations :
443
437
paged_backups .add (backup .name )
444
438
for backup in paged_backups :
@@ -454,38 +448,32 @@ def delete_backup(instance_id, backup_id):
454
448
backup as backup_pb
455
449
456
450
spanner_client = spanner .Client ()
457
- instance_admin_api = spanner_client .instance_admin_api
458
- backup = spanner_client . database_admin_api .get_backup (
451
+ database_admin_api = spanner_client .database_admin_api
452
+ backup = database_admin_api .get_backup (
459
453
backup_pb .GetBackupRequest (
460
- name = "{}/backups/{}" .format (
461
- instance_admin_api .instance_path (spanner_client .project , instance_id ),
462
- backup_id ,
463
- )
454
+ name = database_admin_api .backup_path (
455
+ spanner_client .project , instance_id , backup_id
456
+ ),
464
457
)
465
458
)
466
459
467
460
# Wait for databases that reference this backup to finish optimizing.
468
461
while backup .referencing_databases :
469
462
time .sleep (30 )
470
- backup = spanner_client . database_admin_api .get_backup (
463
+ backup = database_admin_api .get_backup (
471
464
backup_pb .GetBackupRequest (
472
- name = "{}/backups/{}" .format (
473
- instance_admin_api .instance_path (
474
- spanner_client .project , instance_id
475
- ),
476
- backup_id ,
477
- )
465
+ name = database_admin_api .backup_path (
466
+ spanner_client .project , instance_id , backup_id
467
+ ),
478
468
)
479
469
)
480
470
481
471
# Delete the backup.
482
- spanner_client .database_admin_api .delete_backup (
483
- backup_pb .DeleteBackupRequest (name = backup .name )
484
- )
472
+ database_admin_api .delete_backup (backup_pb .DeleteBackupRequest (name = backup .name ))
485
473
486
474
# Verify that the backup is deleted.
487
475
try :
488
- backup = spanner_client . database_admin_api .get_backup (
476
+ backup = database_admin_api .get_backup (
489
477
backup_pb .GetBackupRequest (name = backup .name )
490
478
)
491
479
except NotFound :
@@ -502,22 +490,21 @@ def update_backup(instance_id, backup_id):
502
490
backup as backup_pb
503
491
504
492
spanner_client = spanner .Client ()
505
- instance_admin_api = spanner_client .instance_admin_api
493
+ database_admin_api = spanner_client .database_admin_api
506
494
507
- backup = spanner_client . database_admin_api .get_backup (
495
+ backup = database_admin_api .get_backup (
508
496
backup_pb .GetBackupRequest (
509
- name = "{}/backups/{}" .format (
510
- instance_admin_api .instance_path (spanner_client .project , instance_id ),
511
- backup_id ,
512
- )
497
+ name = database_admin_api .backup_path (
498
+ spanner_client .project , instance_id , backup_id
499
+ ),
513
500
)
514
501
)
515
502
516
503
# Expire time must be within 366 days of the create time of the backup.
517
504
old_expire_time = backup .expire_time
518
505
# New expire time should be less than the max expire time
519
506
new_expire_time = min (backup .max_expire_time , old_expire_time + timedelta (days = 30 ))
520
- spanner_client . database_admin_api .update_backup (
507
+ database_admin_api .update_backup (
521
508
backup_pb .UpdateBackupRequest (
522
509
backup = backup_pb .Backup (name = backup .name , expire_time = new_expire_time ),
523
510
update_mask = {"paths" : ["expire_time" ]},
@@ -543,7 +530,7 @@ def create_database_with_version_retention_period(
543
530
spanner_database_admin
544
531
545
532
spanner_client = spanner .Client ()
546
- instance_admin_api = spanner_client .instance_admin_api
533
+ database_admin_api = spanner_client .database_admin_api
547
534
ddl_statements = [
548
535
"CREATE TABLE Singers ("
549
536
+ " SingerId INT64 NOT NULL,"
@@ -562,9 +549,9 @@ def create_database_with_version_retention_period(
562
549
database_id , retention_period
563
550
),
564
551
]
565
- operation = spanner_client . database_admin_api .create_database (
552
+ operation = database_admin_api .create_database (
566
553
request = spanner_database_admin .CreateDatabaseRequest (
567
- parent = instance_admin_api .instance_path (
554
+ parent = database_admin_api .instance_path (
568
555
spanner_client .project , instance_id
569
556
),
570
557
create_statement = "CREATE DATABASE `{}`" .format (database_id ),
@@ -579,7 +566,7 @@ def create_database_with_version_retention_period(
579
566
)
580
567
)
581
568
582
- spanner_client . database_admin_api .drop_database (
569
+ database_admin_api .drop_database (
583
570
spanner_database_admin .DropDatabaseRequest (database = db .name )
584
571
)
585
572
@@ -595,18 +582,18 @@ def copy_backup(instance_id, backup_id, source_backup_path):
595
582
backup as backup_pb
596
583
597
584
spanner_client = spanner .Client ()
598
- instance_admin_api = spanner_client .instance_admin_api
585
+ database_admin_api = spanner_client .database_admin_api
599
586
600
587
# Create a backup object and wait for copy backup operation to complete.
601
588
expire_time = datetime .utcnow () + timedelta (days = 14 )
602
589
request = backup_pb .CopyBackupRequest (
603
- parent = instance_admin_api .instance_path (spanner_client .project , instance_id ),
590
+ parent = database_admin_api .instance_path (spanner_client .project , instance_id ),
604
591
backup_id = backup_id ,
605
592
source_backup = source_backup_path ,
606
593
expire_time = expire_time ,
607
594
)
608
595
609
- operation = spanner_client . database_admin_api .copy_backup (request )
596
+ operation = database_admin_api .copy_backup (request )
610
597
611
598
# Wait for backup operation to complete.
612
599
copy_backup = operation .result (2100 )
0 commit comments