Skip to content

Commit fbab2cf

Browse files
authored
feat: add Autoclass v2.1 support (#1117)
* feat: add Autoclass v2.1 support * update tests and coverage * update samples with v2.1 additions * fix lint * update samples
1 parent def3efa commit fbab2cf

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

storage/samples/snippets/snippets_test.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -449,23 +449,27 @@ def test_get_set_autoclass(new_bucket_obj, test_bucket, capsys):
449449
out, _ = capsys.readouterr()
450450
assert "Autoclass enabled is set to False" in out
451451
assert bucket.autoclass_toggle_time is None
452+
assert bucket.autoclass_terminal_storage_class_update_time is None
452453

453454
# Test enabling Autoclass at bucket creation
454455
new_bucket_obj.autoclass_enabled = True
455456
bucket = storage.Client().create_bucket(new_bucket_obj)
456457
assert bucket.autoclass_enabled is True
458+
assert bucket.autoclass_terminal_storage_class == "NEARLINE"
457459

458-
# Test disabling Autoclass
459-
bucket = storage_set_autoclass.set_autoclass(bucket.name, False)
460+
# Test set terminal_storage_class to ARCHIVE
461+
bucket = storage_set_autoclass.set_autoclass(bucket.name)
460462
out, _ = capsys.readouterr()
461-
assert "Autoclass enabled is set to False" in out
462-
assert bucket.autoclass_enabled is False
463+
assert "Autoclass enabled is set to True" in out
464+
assert bucket.autoclass_enabled is True
465+
assert bucket.autoclass_terminal_storage_class == "ARCHIVE"
463466

464467
# Test get Autoclass
465468
bucket = storage_get_autoclass.get_autoclass(bucket.name)
466469
out, _ = capsys.readouterr()
467-
assert "Autoclass enabled is set to False" in out
470+
assert "Autoclass enabled is set to True" in out
468471
assert bucket.autoclass_toggle_time is not None
472+
assert bucket.autoclass_terminal_storage_class_update_time is not None
469473

470474

471475
def test_bucket_lifecycle_management(test_bucket, capsys):

storage/samples/snippets/storage_get_autoclass.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ def get_autoclass(bucket_name):
2929
bucket = storage_client.get_bucket(bucket_name)
3030
autoclass_enabled = bucket.autoclass_enabled
3131
autoclass_toggle_time = bucket.autoclass_toggle_time
32+
terminal_storage_class = bucket.autoclass_terminal_storage_class
33+
tsc_update_time = bucket.autoclass_terminal_storage_class_update_time
3234

3335
print(f"Autoclass enabled is set to {autoclass_enabled} for {bucket.name} at {autoclass_toggle_time}.")
36+
print(f"Autoclass terminal storage class is set to {terminal_storage_class} for {bucket.name} at {tsc_update_time}.")
3437

3538
return bucket
3639

storage/samples/snippets/storage_set_autoclass.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,32 @@
2020
from google.cloud import storage
2121

2222

23-
def set_autoclass(bucket_name, toggle):
24-
"""Disable Autoclass for a bucket.
23+
def set_autoclass(bucket_name):
24+
"""Configure the Autoclass setting for a bucket.
2525
26-
Note: Only patch requests that disable autoclass are currently supported.
27-
To enable autoclass, you must set it at bucket creation time.
26+
terminal_storage_class field is optional and defaults to NEARLINE if not otherwise specified.
27+
Valid terminal_storage_class values are NEARLINE and ARCHIVE.
2828
"""
2929
# The ID of your GCS bucket
3030
# bucket_name = "my-bucket"
31-
# Boolean toggle - if true, enables Autoclass; if false, disables Autoclass
32-
# toggle = False
31+
# Enable Autoclass for a bucket. Set enabled to false to disable Autoclass.
32+
# Set Autoclass.TerminalStorageClass, valid values are NEARLINE and ARCHIVE.
33+
enabled = True
34+
terminal_storage_class = "ARCHIVE"
3335

3436
storage_client = storage.Client()
3537
bucket = storage_client.bucket(bucket_name)
3638

37-
bucket.autoclass_enabled = toggle
39+
bucket.autoclass_enabled = enabled
40+
bucket.autoclass_terminal_storage_class = terminal_storage_class
3841
bucket.patch()
3942
print(f"Autoclass enabled is set to {bucket.autoclass_enabled} for {bucket.name} at {bucket.autoclass_toggle_time}.")
43+
print(f"Autoclass terminal storage class is {bucket.autoclass_terminal_storage_class}.")
4044

4145
return bucket
4246

4347

4448
# [END storage_set_autoclass]
4549

4650
if __name__ == "__main__":
47-
set_autoclass(bucket_name=sys.argv[1], toggle=sys.argv[2])
51+
set_autoclass(bucket_name=sys.argv[1])

0 commit comments

Comments
 (0)