From 3121e40c890cd1af98251955c12145522aed9a87 Mon Sep 17 00:00:00 2001 From: philibuster Date: Tue, 9 Jun 2015 00:12:32 +0100 Subject: [PATCH 1/2] Adding the ability to set Subscription path --- gcloud/pubsub/subscription.py | 12 +++++++++++- gcloud/pubsub/test_subscription.py | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/gcloud/pubsub/subscription.py b/gcloud/pubsub/subscription.py index 51154f5bb239..83131eec4842 100644 --- a/gcloud/pubsub/subscription.py +++ b/gcloud/pubsub/subscription.py @@ -75,7 +75,17 @@ def from_api_repr(cls, resource, topics=None): def path(self): """URL path for the subscription's APIs""" project = self.topic.project - return '/projects/%s/subscriptions/%s' % (project, self.name) + path = '/projects/%s/subscriptions/%s' % (project, self.name) + if hasattr(self,"_path"): + path = '/projects/%s/subscriptions/%s' % (project, self.name) + return path + + + @path.setter + def path(self, project): + """URL path setter""" + self._path = '/projects/%s/subscriptions/%s' % (project, self.name) + def create(self, connection=None): """API call: create the subscription via a PUT request diff --git a/gcloud/pubsub/test_subscription.py b/gcloud/pubsub/test_subscription.py index 45d2a97ead34..4878c1c281b4 100644 --- a/gcloud/pubsub/test_subscription.py +++ b/gcloud/pubsub/test_subscription.py @@ -456,6 +456,20 @@ def test_delete_w_explicit_connection(self): self.assertEqual(req['method'], 'DELETE') self.assertEqual(req['path'], '/%s' % SUB_PATH) + def test_set_path_property(self): + PROJECT = 'PROJECT' + NEW_PROJECT = 'NEW_PROJECT' + SUB_NAME = 'sub_name' + SUB_PATH = '/projects/%s/subscriptions/%s' % (PROJECT, SUB_NAME) + NEW_SUB_PATH = '/projects/%s/subscriptions/%s' % (NEW_PROJECT, SUB_NAME) + TOPIC_NAME = 'topic_name' + conn = _Connection({}) + topic = _Topic(TOPIC_NAME, project=PROJECT) + subscription = self._makeOne(SUB_NAME, topic) + self.assertEqual(SUB_PATH ,subscription.path) + subscription.path = NEW_PROJECT + self.assertEqual(NEW_SUB_PATH, subscription.path) + class _Connection(object): From 70d9787ef52d06dbd557a31eac926833ce20320d Mon Sep 17 00:00:00 2001 From: philibuster Date: Wed, 10 Jun 2015 20:59:52 +0100 Subject: [PATCH 2/2] pep8 fixes, and tests changes, adding attribute _path --- gcloud/pubsub/subscription.py | 7 +++---- gcloud/pubsub/test_subscription.py | 11 +++++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/gcloud/pubsub/subscription.py b/gcloud/pubsub/subscription.py index 83131eec4842..a6915a19d03e 100644 --- a/gcloud/pubsub/subscription.py +++ b/gcloud/pubsub/subscription.py @@ -45,6 +45,7 @@ def __init__(self, name, topic, ack_deadline=None, push_endpoint=None): self.topic = topic self.ack_deadline = ack_deadline self.push_endpoint = push_endpoint + self._path = None @classmethod def from_api_repr(cls, resource, topics=None): @@ -76,17 +77,15 @@ def path(self): """URL path for the subscription's APIs""" project = self.topic.project path = '/projects/%s/subscriptions/%s' % (project, self.name) - if hasattr(self,"_path"): - path = '/projects/%s/subscriptions/%s' % (project, self.name) + if self._path is not None: + path = self._path return path - @path.setter def path(self, project): """URL path setter""" self._path = '/projects/%s/subscriptions/%s' % (project, self.name) - def create(self, connection=None): """API call: create the subscription via a PUT request diff --git a/gcloud/pubsub/test_subscription.py b/gcloud/pubsub/test_subscription.py index 4878c1c281b4..989a0fff0c7d 100644 --- a/gcloud/pubsub/test_subscription.py +++ b/gcloud/pubsub/test_subscription.py @@ -458,17 +458,16 @@ def test_delete_w_explicit_connection(self): def test_set_path_property(self): PROJECT = 'PROJECT' - NEW_PROJECT = 'NEW_PROJECT' + PROJECT2 = 'PROJECT2' SUB_NAME = 'sub_name' SUB_PATH = '/projects/%s/subscriptions/%s' % (PROJECT, SUB_NAME) - NEW_SUB_PATH = '/projects/%s/subscriptions/%s' % (NEW_PROJECT, SUB_NAME) + SUB_PATH2 = '/projects/%s/subscriptions/%s' % (PROJECT2, SUB_NAME) TOPIC_NAME = 'topic_name' - conn = _Connection({}) topic = _Topic(TOPIC_NAME, project=PROJECT) subscription = self._makeOne(SUB_NAME, topic) - self.assertEqual(SUB_PATH ,subscription.path) - subscription.path = NEW_PROJECT - self.assertEqual(NEW_SUB_PATH, subscription.path) + self.assertEqual(SUB_PATH, subscription.path) + subscription.path = PROJECT2 + self.assertEqual(SUB_PATH2, subscription.path) class _Connection(object):