8000 Adding · drbruddet/python-docs-samples@5339144 · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit 5339144

Browse files
committed
Adding
remove retention policy set/release temporary hold disable event based hold
1 parent 81c7905 commit 5339144

File tree

2 files changed

+109
-2
lines changed

2 files changed

+109
-2
lines changed

storage/cloud-client/bucket_lock.py

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,56 @@ def set_retention_policy(bucket_name, retention_period):
3232
# [END storage_set_retention_policy]
3333

3434

35+
def remove_retention_policy(bucket_name):
36+
"""Defines a retention policy on a given bucket"""
37+
# [START storage_remove_retention_policy]
38+
storage_client = storage.Client()
39+
bucket = storage_client.bucket(bucket_name)
40+
41+
bucket.retention_period = None
42+
print('Bucket {} retention period set for {} seconds'.format(
43+
bucket.name,
44+
bucket.retention_period))
45+
# [END storage_remove_retention_policy]
46+
47+
3548
def lock_retention_policy(bucket_name):
3649
# [START storage_lock_retention_policy]
3750
storage_client = storage.Client()
3851
bucket = storage_client.bucket(bucket_name)
3952

4053
# Warning: Once a retention policy is locked it cannot be unlocked
4154
# and retention period can only be increased.
42-
bucket.lock_retention_policy()
55+
bucket.retention_policy_locked = True
4356

4457
print('Retention policy for {} is now locked'.format(bucket_name))
4558
print('Retention policy Effective as of {}'.format(
46-
bucket.retention_effective_at))
59+
bucket.retention_policy_effective_time))
4760
# [END storage_lock_retention_policy]
4861

4962

63+
def set_temporary_hold(bucket_name, blob_name):
64+
# [START storage_set_temporary_hold]
65+
storage_client = storage.Client()
66+
bucket = storage_client.bucket(bucket_name)
67+
blob = bucket.blob(blob_name)
68+
69+
blob.temporary_hold = True
70+
print("Temporary hold was set for #{blob_name}")
71+
# [END storage_set_temporary_hold]
72+
73+
74+
def release_temporary_hold(bucket_name, blob_name):
75+
# [START storage_release_temporary_hold]
76+
storage_client = storage.Client()
77+
bucket = storage_client.bucket(bucket_name)
78+
blob = bucket.blob(blob_name)
79+
80+
blob.temporary_hold = False
81+
print("Temporary hold was release for #{blob_name}")
82+
# [END storage_release_temporary_hold]
83+
84+
5085
def enable_default_event_based_hold(bucket_name):
5186
# [START storage_enable_default_event_based_hold]
5287
storage_client = storage.Client()
@@ -58,6 +93,17 @@ def enable_default_event_based_hold(bucket_name):
5893
# [END storage_enable_default_event_based_hold]
5994

6095

96+
def disable_default_event_based_hold(bucket_name):
97+
# [START storage_disable_default_event_based_hold]
98+
storage_client = storage.Client()
99+
bucket = storage_client.bucket(bucket_name)
100+
101+
bucket.default_event_based_hold = False
102+
103+
print("Default event based hold was disabled for {}".format(bucket_name))
104+
# [END storage_disable_default_event_based_hold]
105+
106+
61107
if __name__ == '__main__':
62108

63109
parser = argparse.ArgumentParser(
@@ -70,20 +116,48 @@ def enable_default_event_based_hold(bucket_name):
70116
set_retention_policy_parser.add_argument('bucket_name')
71117
set_retention_policy_parser.add_argument('retention_period')
72118

119+
remove_retention_policy_parser = subparsers.add_parser(
120+
'remove-retention-policy', help=remove_retention_policy.__doc__)
121+
remove_retention_policy_parser.add_argument('bucket_name')
122+
remove_retention_policy_parser.add_argument('retention_period')
123+
73124
lock_retention_policy_parser = subparsers.add_parser(
74125
'lock-retention-policy', help=lock_retention_policy.__doc__)
75126
lock_retention_policy_parser.add_argument('bucket_name')
76127

128+
set_temporary_hold_parser = subparsers.add_parser(
129+
'set-temporary-hold', help=set_temporary_hold.__doc__)
130+
set_temporary_hold_parser.add_argument('bucket_name')
131+
set_temporary_hold_parser.add_argument('retention_period')
132+
133+
release_temporary_hold_parser = subparsers.add_parser(
134+
'release-temporary-hold', help=release_temporary_hold.__doc__)
135+
release_temporary_hold_parser.add_argument('bucket_name')
136+
release_temporary_hold_parser.add_argument('retention_period')
137+
77138
enable_default_event_based_hold_parser = subparsers.add_parser(
78139
'enable-default-event-based-hold',
79140
help=enable_default_event_based_hold.__doc__)
80141
enable_default_event_based_hold_parser.add_argument('bucket_name')
81142

143+
disable_default_event_based_hold_parser = subparsers.add_parser(
144+
'disable-default-event-based-hold',
145+
help=disable_default_event_based_hold.__doc__)
146+
disable_default_event_based_hold_parser.add_argument('bucket_name')
147+
82148
args = parser.parse_args()
83149

84150
if args.command == 'set-retention-policy':
85151
set_retention_policy(args.bucket_name, args.retention_period)
152+
elif args.command == 'remove-retention-policy':
153+
remove_retention_policy(args.bucket_name)
86154
elif args.command == 'lock-retention-policy':
87155
lock_retention_policy(args.bucket_name)
156+
elif args.command == 'set-temporary-hold':
157+
set_temporary_hold(args.bucket_name)
158+
elif args.command == 'release-temporary-hold':
159+
release_temporary_hold(args.bucket_name)
88160
elif args.command == 'enable-default-event-based-hold':
89161
enable_default_event_based_hold(args.bucket_name)
162+
elif args.command == 'disable-default-event-based-hold':
163+
disable_default_event_based_hold(args.bucket_name)

storage/cloud-client/bucket_lock_test.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,60 @@
1313
# limitations under the License.
1414

1515
import os
16+
import pytest
1617

1718
import bucket_lock
1819

1920
BUCKET = os.environ['CLOUD_STORAGE_BUCKET']
2021
# Retention policy for one week
2122
RETENTION_POLICY = 60 * 60 * 24 * 7
2223

24+
@pytest.fixture
25+
def test_blob():
26+
"""Provides a pre-existing blob in the test bucket."""
27+
bucket = storage.Client().bucket(BUCKET)
28+
blob = bucket.blob('storage_snippets_test_sigil')
29+
blob.upload_from_string('Hello, is it me you\'re looking for?')
30+
return blob
31+
2332

2433
def test_set_retention_policy(capsys):
2534
bucket_lock.set_retention_policy(BUCKET, RETENTION_POLICY)
2635
out, _ = capsys.readouterr()
2736
assert out
2837

2938

39+
def test_remove_retention_policy(capsys):
40+
bucket_lock.remove_retention_policy(BUCKET)
41+
out, _ = capsys.readouterr()
42+
assert out
43+
44+
3045
def test_lock_retention_policy(capsys):
3146
bucket_lock.lock_retention_policy(BUCKET)
3247
out, _ = capsys.readouterr()
3348
assert out
3449

3550

51+
def test_set_temporary_hold(capsys):
52+
bucket_lock.set_temporary_hold(BUCKET, 'storage_snippets_test_sigil')
53+
out, _ = capsys.readouterr()
54+
assert out
55+
56+
57+
def test_release_temporary_hold(capsys):
58+
bucket_lock.release_temporary_hold(BUCKET, 'storage_snippets_test_sigil')
59+
out, _ = capsys.readouterr()
60+
assert out
61+
62+
3663
def test_enable_default_event_based_hold(capsys):
3764
bucket_lock.enable_default_event_based_hold(BUCKET)
3865
out, _ = capsys.readouterr()
3966
assert out
67+
68+
69+
def test_disable_default_event_based_hold(capsys):
70+
bucket_lock.disable_default_event_based_hold(BUCKET)
71+
out, _ = capsys.readouterr()
72+
assert out

0 commit comments

Comments
 (0)
0