Skip to content

Commit 5e14e12

Browse files
committed
Re-map 'Bucket.versioning' as a boolean property, 'versioning_enabled'.
1 parent 7c7745f commit 5e14e12

File tree

2 files changed

+23
-42
lines changed

2 files changed

+23
-42
lines changed

gcloud/storage/bucket.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class Bucket(_PropertyMixin):
3838
'selfLink': 'self_link',
3939
'storageClass': 'storage_class',
4040
'timeCreated': 'time_created',
41-
'versioning': 'get_versioning()',
41+
'versioning': 'versioning_enabled',
4242
}
4343
"""Map field name -> accessor for fields w/ custom accessors."""
4444

@@ -544,7 +544,8 @@ def time_created(self):
544544
"""
545545
return self.properties['timeCreated']
546546

547-
def get_versioning(self):
547+
@property
548+
def versioning_enabled(self):
548549
"""Is versioning enabled for this bucket?
549550
550551
See: https://cloud.google.com/storage/docs/object-versioning for
@@ -556,21 +557,17 @@ def get_versioning(self):
556557
versioning = self.properties.get('versioning', {})
557558
return versioning.get('enabled', False)
558559

559-
def enable_versioning(self):
560+
@versioning_enabled.setter
561+
def versioning_enabled(self, value):
560562
"""Enable versioning for this bucket.
561563
562564
See: https://cloud.google.com/storage/docs/object-versioning for
563565
details.
564-
"""
565-
self._patch_properties({'versioning': {'enabled': True}})
566-
567-
def disable_versioning(self):
568-
"""Disable versioning for this bucket.
569566
570-
See: https://cloud.google.com/storage/docs/object-versioning for
571-
details.
567+
:type value: convertible to bool
568+
:param value: should versioning be anabled for the bucket?
572569
"""
573-
self._patch_properties({'versioning': {'enabled': False}})
570+
self._patch_properties({'versioning': {'enabled': bool(value)}})
574571

575572
def configure_website(self, main_page_suffix=None, not_found_page=None):
576573
"""Configure website-related properties.

gcloud/storage/test_bucket.py

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -708,55 +708,39 @@ def test_time_created(self):
708708
bucket = self._makeOne(properties=properties)
709709
self.assertEqual(bucket.time_created, TIME_CREATED)
710710

711-
def test_get_versioning_eager(self):
711+
def test_versioning_enabled_getter_missing(self):
712712
NAME = 'name'
713-
before = {'bar': 'Bar', 'versioning': {'enabled': True}}
714-
connection = _Connection()
715-
bucket = self._makeOne(connection, NAME, before)
716-
self.assertEqual(bucket.get_versioning(), True)
717-
kw = connection._requested
718-
self.assertEqual(len(kw), 0)
719-
720-
def test_get_versioning_lazy(self):
721-
NAME = 'name'
722-
after = {'bar': 'Bar', 'versioning': {'enabled': True}}
723-
connection = _Connection(after)
713+
connection = _Connection({})
724714
bucket = self._makeOne(connection, NAME)
725-
self.assertEqual(bucket.get_versioning(), True)
715+
self.assertEqual(bucket.versioning_enabled, False)
726716
kw = connection._requested
727717
self.assertEqual(len(kw), 1)
728718
self.assertEqual(kw[0]['method'], 'GET')
729719
self.assertEqual(kw[0]['path'], '/b/%s' % NAME)
730720
self.assertEqual(kw[0]['query_params'], {'projection': 'noAcl'})
731721

732-
def test_enable_versioning(self):
722+
def test_versioning_enabled_getter(self):
733723
NAME = 'name'
734-
before = {'versioning': {'enabled': False}}
735-
after = {'versioning': {'enabled': True}}
736-
connection = _Connection(after)
724+
before = {'versioning': {'enabled': True}}
725+
connection = _Connection()
737726
bucket = self._makeOne(connection, NAME, before)
738-
self.assertFalse(bucket.get_versioning())
739-
bucket.enable_versioning()
740-
self.assertTrue(bucket.get_versioning())
727+
self.assertEqual(bucket.versioning_enabled, True)
741728
kw = connection._requested
742-
self.assertEqual(len(kw), 1)
743-
self.assertEqual(kw[0]['method'], 'PATCH')
744-
self.assertEqual(kw[0]['data'], {'versioning': {'enabled': True}})
745-
self.assertEqual(kw[0]['query_params'], {'projection': 'full'})
729+
self.assertEqual(len(kw), 0)
746730

747-
def test_disable_versioning(self):
731+
def test_versioning_enabled_setter(self):
748732
NAME = 'name'
749-
before = {'versioning': {'enabled': True}}
750-
after = {'versioning': {'enabled': False}}
733+
before = {'versioning': {'enabled': False}}
734+
after = {'versioning': {'enabled': True}}
751735
connection = _Connection(after)
752736
bucket = self._makeOne(connection, NAME, before)
753-
self.assertTrue(bucket.get_versioning())
754-
bucket.disable_versioning()
755-
self.assertFalse(bucket.get_versioning())
737+
self.assertFalse(bucket.versioning_enabled)
738+
bucket.versioning_enabled = True
739+
self.assertTrue(bucket.versioning_enabled)
756740
kw = connection._requested
757741
self.assertEqual(len(kw), 1)
758742
self.assertEqual(kw[0]['method'], 'PATCH')
759-
self.assertEqual(kw[0]['data'], after)
743+
self.assertEqual(kw[0]['data'], {'versioning': {'enabled': True}})
760744
self.assertEqual(kw[0]['query_params'], {'projection': 'full'})
761745

762746
def test_configure_website_defaults(self):

0 commit comments

Comments
 (0)