8000 storage: add list buckets (#2149) · mikeguzman/python-docs-samples@24b2aaf · GitHub
[go: up one dir, main page]

Skip to content

Commit 24b2aaf

Browse files
authored
storage: add list buckets (GoogleCloudPlatform#2149)
* Add list_buckets sample * Allow for more if conditions
1 parent be5c52b commit 24b2aaf

File tree

3 files changed

+159
-72
lines changed

3 files changed

+159
-72
lines changed

storage/cloud-client/README.rst

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,7 @@ To run this sample:
9393
$ python snippets.py
9494
9595
usage: snippets.py [-h]
96-
bucket_name
97-
{create-bucket,delete-bucket,get-bucket-labels,add-bucket-label,remove-bucket-label,list,list-with-prefix,upload,enable-default-kms-key,upload-with-kms-key,download,delete,metadata,make-public,signed-url,rename,copy}
96+
{list-buckets,create-bucket,delete-bucket,get-bucket-labels,add-bucket-label,remove-bucket-label,list,list-with-prefix,upload,enable-default-kms-key,upload-with-kms-key,download,delete,metadata,make-public,signed-url,signed-url-download-v4,signed-url-upload-v4,rename,copy}
9897
...
9998
10099
This application demonstrates how to perform basic operations on blobs
@@ -104,8 +103,8 @@ To run this sample:
104103
at https://cloud.google.com/storage/docs.
105104
106105
positional arguments:
107-
bucket_name Your cloud storage bucket.
108-
{create-bucket,delete-bucket,get-bucket-labels,add-bucket-label,remove-bucket-label,list,list-with-prefix,upload,enable-default-kms-key,upload-with-kms-key,download,delete,metadata,make-public,signed-url,rename,copy}
106+
{list-buckets,create-bucket,delete-bucket,get-bucket-labels,add-bucket-label,remove-bucket-label,list,list-with-prefix,upload,enable-default-kms-key,upload-with-kms-key,download,delete,metadata,make-public,signed-url,signed-url-download-v4,signed-url-upload-v4,rename,copy}
107+
list-buckets Lists all buckets.
109108
create-bucket Creates a new bucket.
110109
delete-bucket Deletes a bucket. The bucket must be empty.
111110
get-bucket-labels Prints out a bucket's labels.
@@ -133,11 +132,23 @@ To run this sample:
133132
delete Deletes a blob from the bucket.
134133
metadata Prints out a blob's metadata.
135134
make-public Makes a blob publicly accessible.
136-
signed-url Generates a signed URL for a blob. Note that this
137-
method requires a service account key file. You can
138-
not use this if you are using Application Default
139-
Credentials from Google Compute Engine or from the
140-
Google Cloud SDK.
135+
signed-url Generates a v2 signed URL for downloading a blob. Note
136+
that this method requires a service account key file.
137+
You can not use this if you are using Application
138+
Default Credentials from Google Compute Engine or from
139+
the Google Cloud SDK.
140+
signed-url-download-v4
141+
Generates a v4 signed URL for downloading a blob. Note
142+
that this method requires a service account key file.
143+
You can not use this if you are using Application
144+
Default Credentials from Google Compute Engine or from
145+
the Google Cloud SDK.
146+
signed-url-upload-v4
147+
Generates a v4 signed URL for uploading a blob using
148+
HTTP PUT. Note that this method requires a service
149+
account key file. You can not use this if you are
150+
using Application Default Credentials from Google
151+
Compute Engine or from the Google Cloud SDK.
141152
rename Renames a blob.
142153
copy Renames a blob.
143154

storage/cloud-client/snippets.py

Lines changed: 133 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,17 @@ def remove_bucket_label(bucket_name):
9999
pprint.pprint(bucket.labels)
100100

101101

102+
# [START storage_list_buckets]
103+
def list_buckets():
104+
"""Lists all buckets."""
105+
storage_client = storage.Client()
106+
buckets = storage_client.list_buckets()
107+
108+
for bucket in buckets:
109+
print(bucket.name)
110+
# [END storage_list_buckets]
111+
112+
102113
def list_blobs(bucket_name):
103114
"""Lists all the blobs in the bucket."""
104115
storage_client = storage.Client()
@@ -352,58 +363,164 @@ def copy_blob(bucket_name, blob_name, new_bucket_name, new_blob_name):
352363
destination_bucket.name))
353364

354365

366+
def bucket_commands(args):
367+
if args.command == 'list-buckets':
368+
list_buckets()
369+
elif args.command == 'create-bucket':
370+
create_bucket(args.bucket_name)
371+
elif args.command == 'enable-default-kms-key':
372+
enable_default_kms_key(args.bucket_name, args.kms_key_name)
373+
elif args.command == 'delete-bucket':
374+
delete_bucket(args.bucket_name)
375+
elif args.command == 'get-bucket-labels':
376+
get_bucket_labels(args.bucket_name)
377+
elif args.command == 'add-bucket-label':
378+
add_bucket_label(args.bucket_name)
379+
elif args.command == 'remove-bucket-label':
380+
remove_bucket_label(args.bucket_name)
381+
382+
383+
def blob_commands(args):
384+
if args.command == 'list':
385+
list_blobs(args.bucket_name)
386+
elif args.command == 'list-with-prefix':
387+
list_blobs_with_prefix(args.bucket_name, args.prefix, args.delimiter)
388+
elif args.command == 'upload':
389+
upload_blob(
390+
args.bucket_name,
391+
args.source_file_name,
392+
args.destination_blob_name)
393+
elif args.command == 'upload-with-kms-key':
394+
upload_blob_with_kms(
395+
args.bucket_name,
396+
args.source_file_name,
397+
args.destination_blob_name,
398+
args.kms_key_name)
399+
elif args.command == 'download':
400+
download_blob(
401+
args.bucket_name,
402+
args.source_blob_name,
403+
args.destination_file_name)
404+
elif args.command == 'delete':
405+
delete_blob(args.bucket_name, args.blob_name)
406+
elif args.command == 'metadata':
407+
blob_metadata(args.bucket_name, args.blob_name)
408+
elif args.command == 'make-public':
409+
make_blob_public(args.bucket_name, args.blob_name)
410+
elif args.command == 'signed-url':
411+
generate_signed_url(args.bucket_name, args.blob_name)
412+
elif args.command == 'signed-url-download-v4':
413+
generate_download_signed_url_v4(args.bucket_name, args.blob_name)
414+
elif args.command == 'signed-url-upload-v4':
415+
generate_upload_signed_url_v4(args.bucket_name, args.blob_name)
416+
elif args.command == 'rename':
417+
rename_blob(args.bucket_name, args.blob_name, args.new_name)
418+
elif args.command == 'copy':
419+
copy_blob(
420+
args.bucket_name,
421+
args.blob_name,
422+
args.new_bucket_name,
423+
args.new_blob_name)
424+
425+
355426
def main():
356427
parser = argparse.ArgumentParser(
357428
description=__doc__,
358429
formatter_class=argparse.RawDescriptionHelpFormatter)
359-
parser.add_argument('bucket_name', help='Your cloud storage bucket.')
360430

361431
subparsers = parser.add_subparsers(dest='command')
362-
subparsers.add_parser('create-bucket', help=create_bucket.__doc__)
363-
subparsers.add_parser('delete-bucket', help=delete_bucket.__doc__)
364-
subparsers.add_parser('get-bucket-labels', help=get_bucket_labels.__doc__)
365-
subparsers.add_parser('add-bucket-label', help=add_bucket_label.__doc__)
366-
subparsers.add_parser(
432+
list_buckets_parser = subparsers.add_parser(
433+
'list-buckets', help=list_buckets.__doc__)
434+
list_buckets_parser.add_argument(
435+
'bucket_name', help='Your cloud storage bucket.')
436+
437+
create_bucket_parser = subparsers.add_parser(
438+
'create-bucket', help=create_bucket.__doc__)
439+
create_bucket_parser.add_argument(
440+
'bucket_name', help='Your cloud storage bucket.')
441+
442+
delete_create_parser = subparsers.add_parser(
443+
'delete-bucket', help=delete_bucket.__doc__)
444+
delete_create_parser.add_argument(
445+
'bucket_name', help='Your cloud storage bucket.')
446+
447+
get_bucket_labels_parser = subparsers.add_parser(
448+
'get-bucket-labels', help=get_bucket_labels.__doc__)
449+
get_bucket_labels_parser.add_argument(
450+
'bucket_name', help='Your cloud storage bucket.')
451+
452+
add_bucket_label_parser = subparsers.add_parser(
453+
'add-bucket-label', help=add_bucket_label.__doc__)
454+
add_bucket_label_parser.add_argument(
455+
'bucket_name', help='Your cloud storage bucket.')
456+
457+
remove_bucket_label_parser = subparsers.add_parser(
367458
'remove-bucket-label', help=remove_bucket_label.__doc__)
368-
subparsers.add_parser('list', help=list_blobs.__doc__)
459+
remove_bucket_label_parser.add_argument(
460+
'bucket_name', help='Your cloud storage bucket.')
461+
462+
list_blobs_parser = subparsers.add_parser(
463+
'list', help=list_blobs.__doc__)
464+
list_blobs_parser.add_argument(
465+
'bucket_name', help='Your cloud storage bucket.')
369466

370467
list_with_prefix_parser = subparsers.add_parser(
371468
'list-with-prefix', help=list_blobs_with_prefix.__doc__)
469+
list_with_prefix_parser.add_argument(
470+
'bucket_name', help='Your cloud storage bucket.')
372471
list_with_prefix_parser.add_argument('prefix')
373472
list_with_prefix_parser.add_argument('--delimiter', default=None)
374473

375-
upload_parser = subparsers.add_parser('upload', help=upload_blob.__doc__)
474+
upload_parser = subparsers.add_parser(
475+
'upload', help=upload_blob.__doc__)
476+
upload_parser.add_argument(
477+
'bucket_name', help='Your cloud storage bucket.')
376478
upload_parser.add_argument('source_file_name')
377479
upload_parser.add_argument('destination_blob_name')
378480

379481
enable_default_kms_parser = subparsers.add_parser(
380482
'enable-default-kms-key', help=enable_default_kms_key.__doc__)
483+
enable_default_kms_parser.add_argument(
484+
'bucket_name', help='Your cloud storage bucket.')
381485
enable_default_kms_parser.add_argument('kms_key_name')
382486

383487
upload_kms_parser = subparsers.add_parser(
384488
'upload-with-kms-key', help=upload_blob_with_kms.__doc__)
489+
upload_kms_parser.add_argument(
490+
'bucket_name', help='Your cloud storage bucket.')
385491
upload_kms_parser.add_argument('source_file_name')
386492
upload_kms_parser.add_argument('destination_blob_name')
387493
upload_kms_parser.add_argument('kms_key_name')
388494

389495
download_parser = subparsers.add_parser(
390496
'download', help=download_blob.__doc__)
497+
download_parser.add_argument(
498+
'bucket_name', help='Your cloud storage bucket.')
391499
download_parser.add_argument('source_blob_name')
392500
download_parser.add_argument('destination_file_name')
393501

394-
delete_parser = subparsers.add_parser('delete', help=delete_blob.__doc__)
502+
delete_parser = subparsers.add_parser(
503+
'delete', help=delete_blob.__doc__)
504+
delete_parser.add_argument(
505+
'bucket_name', help='Your cloud storage bucket.')
395506
delete_parser.add_argument('blob_name')
396507

397508
metadata_parser = subparsers.add_parser(
398509
'metadata', help=blob_metadata.__doc__)
510+
metadata_parser.add_argument(
511+
'bucket_name', help='Your cloud storage bucket.')
399512
metadata_parser.add_argument('blob_name')
400513

401514
make_public_parser = subparsers.add_parser(
402515
'make-public', help=make_blob_public.__doc__)
516+
make_public_parser.add_argument(
517+
'bucket_name', help='Your cloud storage bucket.')
403518
make_public_parser.add_argument('blob_name')
404519

405520
signed_url_parser = subparsers.add_parser(
406521
'signed-url', help=generate_signed_url.__doc__)
522+
signed_url_parser.add_argument(
523+
'bucket_name', help='Your cloud storage bucket.')
407524
signed_url_parser.add_argument('blob_name')
408525

409526
signed_url_download_v4_parser = subparsers.add_parser(
@@ -414,69 +531,22 @@ def main():
414531
'signed-url-upload-v4', help=generate_upload_signed_url_v4.__doc__)
415532
signed_url_upload_v4_parser.add_argument('blob_name')
416533

417-
rename_parser = subparsers.add_parser('rename', help=rename_blob.__doc__)
534+
rename_parser = subparsers.add_parser(
535+
'rename', help=rename_blob.__doc__)
536+
rename_parser.add_argument(
537+
'bucket_name', help='Your cloud storage bucket.')
418538
rename_parser.add_argument('blob_name')
419539
rename_parser.add_argument('new_name')
420540

421541
copy_parser = subparsers.add_parser('copy', help=rename_blob.__doc__)
542+
copy_parser.add_argument('bucket_name', help='Your cloud storage bucket.')
422543
copy_parser.add_argument('blob_name')
423544
copy_parser.add_argument('new_bucket_name')
424545
copy_parser.add_argument('new_blob_name')
425546

426547
args = parser.parse_args()
427-
428-
if args.command == 'create-bucket':
429-
create_bucket(args.bucket_name)
430-
elif args.command == 'enable-default-kms-key':
431-
enable_default_kms_key(args.bucket_name, args.kms_key_name)
432-
elif args.command == 'delete-bucket':
433-
delete_bucket(args.bucket_name)
434-
elif args.command == 'get-bucket-labels':
435-
get_bucket_labels(args.bucket_name)
436-
elif args.command == 'add-bucket-label':
437-
add_bucket_label(args.bucket_name)
438-
elif args.command == 'remove-bucket-label':
439-
remove_bucket_label(args.bucket_name)
440-
elif args.command == 'list':
441-
list_blobs(args.bucket_name)
442-
elif args.command == 'list-with-prefix':
443-
list_blobs_with_prefix(args.bucket_name, args.prefix, args.delimiter)
444-
elif args.command == 'upload':
445-
upload_blob(
446-
args.bucket_name,
447-
args.source_file_name,
448-
args.destination_blob_name)
449-
elif args.command == 'upload-with-kms-key':
450-
upload_blob_with_kms(
451-
args.bucket_name,
452-
args.source_file_name,
453-
args.destination_blob_name,
454-
args.kms_key_name)
455-
elif args.command == 'download':
456-
download_blob(
457-
args.bucket_name,
458-
args.source_blob_name,
459-
args.destination_file_name)
460-
elif args.command == 'delete':
461-
delete_blob(args.bucket_name, args.blob_name)
462-
elif args.command == 'metadata':
463-
blob_metadata(args.bucket_name, args.blob_name)
464-
elif args.command == 'make-public':
465-
make_blob_public(args.bucket_name, args.blob_name)
466-
elif args.command == 'signed-url':
467-
generate_signed_url(args.bucket_name, args.blob_name)
468-
elif args.command == 'signed-url-download-v4':
469-
generate_download_signed_url_v4(args.bucket_name, args.blob_name)
470-
elif args.command == 'signed-url-upload-v4':
471-
generate_upload_signed_url_v4(args.bucket_name, args.blob_name)
472-
elif args.command == 'rename':
473-
rename_blob(args.bucket_name, args.blob_name, args.new_name)
474-
elif args.command == 'copy':
475-
copy_blob(
476-
args.bucket_name,
477-
args.blob_name,
478-
args.new_bucket_name,
479-
args.new_blob_name)
548+
bucket_commands(args)
549+
blob_commands(args)
480550

481551

482552
if __name__ == '__main__':

storage/cloud-client/snippets_test.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ def test_blob():
6868
return blob
6969

7070

71+
def test_list_buckets(capsys):
72+
snippets.list_buckets()
73+
out, _ = capsys.readouterr()
74+
assert BUCKET in out
75+
76+
7177
def test_list_blobs(test_blob, capsys):
7278
snippets.list_blobs(BUCKET)
7379
out, _ = capsys.readouterr()

0 commit comments

Comments
 (0)
0