From 5e14e1294aa0d4507a5c0c84a0e7e291708e29df Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Thu, 6 Nov 2014 22:11:28 -0500 Subject: [PATCH] Re-map 'Bucket.versioning' as a boolean property, 'versioning_enabled'. --- gcloud/storage/bucket.py | 19 ++++++--------- gcloud/storage/test_bucket.py | 46 ++++++++++++----------------------- 2 files changed, 23 insertions(+), 42 deletions(-) diff --git a/gcloud/storage/bucket.py b/gcloud/storage/bucket.py index 723dfeff07ce..28a05e356aa2 100644 --- a/gcloud/storage/bucket.py +++ b/gcloud/storage/bucket.py @@ -38,7 +38,7 @@ class Bucket(_PropertyMixin): 'selfLink': 'self_link', 'storageClass': 'storage_class', 'timeCreated': 'time_created', - 'versioning': 'get_versioning()', + 'versioning': 'versioning_enabled', } """Map field name -> accessor for fields w/ custom accessors.""" @@ -544,7 +544,8 @@ def time_created(self): """ return self.properties['timeCreated'] - def get_versioning(self): + @property + def versioning_enabled(self): """Is versioning enabled for this bucket? See: https://cloud.google.com/storage/docs/object-versioning for @@ -556,21 +557,17 @@ def get_versioning(self): versioning = self.properties.get('versioning', {}) return versioning.get('enabled', False) - def enable_versioning(self): + @versioning_enabled.setter + def versioning_enabled(self, value): """Enable versioning for this bucket. See: https://cloud.google.com/storage/docs/object-versioning for details. - """ - self._patch_properties({'versioning': {'enabled': True}}) - - def disable_versioning(self): - """Disable versioning for this bucket. - See: https://cloud.google.com/storage/docs/object-versioning for - details. + :type value: convertible to bool + :param value: should versioning be anabled for the bucket? """ - self._patch_properties({'versioning': {'enabled': False}}) + self._patch_properties({'versioning': {'enabled': bool(value)}}) def configure_website(self, main_page_suffix=None, not_found_page=None): """Configure website-related properties. diff --git a/gcloud/storage/test_bucket.py b/gcloud/storage/test_bucket.py index 1898ae09c447..9868b4c55e01 100644 --- a/gcloud/storage/test_bucket.py +++ b/gcloud/storage/test_bucket.py @@ -708,55 +708,39 @@ def test_time_created(self): bucket = self._makeOne(properties=properties) self.assertEqual(bucket.time_created, TIME_CREATED) - def test_get_versioning_eager(self): + def test_versioning_enabled_getter_missing(self): NAME = 'name' - before = {'bar': 'Bar', 'versioning': {'enabled': True}} - connection = _Connection() - bucket = self._makeOne(connection, NAME, before) - self.assertEqual(bucket.get_versioning(), True) - kw = connection._requested - self.assertEqual(len(kw), 0) - - def test_get_versioning_lazy(self): - NAME = 'name' - after = {'bar': 'Bar', 'versioning': {'enabled': True}} - connection = _Connection(after) + connection = _Connection({}) bucket = self._makeOne(connection, NAME) - self.assertEqual(bucket.get_versioning(), True) + self.assertEqual(bucket.versioning_enabled, False) kw = connection._requested self.assertEqual(len(kw), 1) self.assertEqual(kw[0]['method'], 'GET') self.assertEqual(kw[0]['path'], '/b/%s' % NAME) self.assertEqual(kw[0]['query_params'], {'projection': 'noAcl'}) - def test_enable_versioning(self): + def test_versioning_enabled_getter(self): NAME = 'name' - before = {'versioning': {'enabled': False}} - after = {'versioning': {'enabled': True}} - connection = _Connection(after) + before = {'versioning': {'enabled': True}} + connection = _Connection() bucket = self._makeOne(connection, NAME, before) - self.assertFalse(bucket.get_versioning()) - bucket.enable_versioning() - self.assertTrue(bucket.get_versioning()) + self.assertEqual(bucket.versioning_enabled, True) kw = connection._requested - self.assertEqual(len(kw), 1) - self.assertEqual(kw[0]['method'], 'PATCH') - self.assertEqual(kw[0]['data'], {'versioning': {'enabled': True}}) - self.assertEqual(kw[0]['query_params'], {'projection': 'full'}) + self.assertEqual(len(kw), 0) - def test_disable_versioning(self): + def test_versioning_enabled_setter(self): NAME = 'name' - before = {'versioning': {'enabled': True}} - after = {'versioning': {'enabled': False}} + before = {'versioning': {'enabled': False}} + after = {'versioning': {'enabled': True}} connection = _Connection(after) bucket = self._makeOne(connection, NAME, before) - self.assertTrue(bucket.get_versioning()) - bucket.disable_versioning() - self.assertFalse(bucket.get_versioning()) + self.assertFalse(bucket.versioning_enabled) + bucket.versioning_enabled = True + self.assertTrue(bucket.versioning_enabled) kw = connection._requested self.assertEqual(len(kw), 1) self.assertEqual(kw[0]['method'], 'PATCH') - self.assertEqual(kw[0]['data'], after) + self.assertEqual(kw[0]['data'], {'versioning': {'enabled': True}}) self.assertEqual(kw[0]['query_params'], {'projection': 'full'}) def test_configure_website_defaults(self):