From 400150990c6ac7b689a43d89780c93f200af160b Mon Sep 17 00:00:00 2001 From: noerog <32459203+noerog@users.noreply.github.com> Date: Thu, 25 Jan 2018 19:18:48 -0500 Subject: [PATCH 1/3] Add sample for updating a subscription. Using ack_deadline_seconds as the example. --- pubsub/cloud-client/subscriber.py | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pubsub/cloud-client/subscriber.py b/pubsub/cloud-client/subscriber.py index f8558e39f19..7545a12da16 100644 --- a/pubsub/cloud-client/subscriber.py +++ b/pubsub/cloud-client/subscriber.py @@ -89,6 +89,35 @@ def delete_subscription(project, subscription_name): print('Subscription deleted: {}'.format(subscription_path)) +def update_subscription(project, subscription_name, ack_deadline_seconds): + """ + Updates an existing Pub/Sub subscription's ackDeadlineSeconds + from 10 seconds (default). Note that certain properties of a + subscription, such as its topic, are not modifiable. + """ + subscriber = pubsub_v1.SubscriberClient() + subscription_path = subscriber.subscription_path( + project, subscription_name) + + subscription = { + 'name': subscription_path, + 'ack_deadline_seconds': ack_deadline_seconds, + } + + update_mask = { + 'paths': { + 'ack_deadline_seconds', + } + } + + subscriber.update_subscription(subscription, update_mask) + result = subscriber.get_subscription(subscription_path) + + print('Subscription updated: {}'.format(subscription_path)) + print('New ack_deadline_seconds value is: {}'.format( + result.ack_deadline_seconds)) + + def receive_messages(project, subscription_name): """Receives messages from a pull subscription.""" subscriber = pubsub_v1.SubscriberClient() @@ -179,10 +208,16 @@ def callback(message): create_push_parser.add_argument('subscription_name') create_push_parser.add_argument('endpoint') + delete_parser = subparsers.add_parser( 'delete', help=delete_subscription.__doc__) delete_parser.add_argument('subscription_name') + update_parser = subparsers.add_parser( + 'update', help=update_subscription.__doc__) + update_parser.add_argument('subscription_name') + update_parser.add_argument('ack_deadline_seconds', type=int) + receive_parser = subparsers.add_parser( 'receive', help=receive_messages.__doc__) receive_parser.add_argument('subscription_name') @@ -214,6 +249,9 @@ def callback(message): elif args.command == 'delete': delete_subscription( args.project, args.subscription_name) + elif args.command == 'update': + update_subscription( + args.project, args.subscription_name, args.ack_deadline_seconds) elif args.command == 'receive': receive_messages(args.project, args.subscription_name) elif args.command == 'receive-flow-control': From 342dad91abfb08e66ff013f70dd20e091c3cda0e Mon Sep 17 00:00:00 2001 From: noerog <32459203+noerog@users.noreply.github.com> Date: Mon, 29 Jan 2018 12:30:59 -0500 Subject: [PATCH 2/3] Use Subscription type over dictionary. --- pubsub/cloud-client/subscriber.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pubsub/cloud-client/subscriber.py b/pubsub/cloud-client/subscriber.py index 7545a12da16..5517a5dd572 100644 --- a/pubsub/cloud-client/subscriber.py +++ b/pubsub/cloud-client/subscriber.py @@ -99,10 +99,9 @@ def update_subscription(project, subscription_name, ack_deadline_seconds): subscription_path = subscriber.subscription_path( project, subscription_name) - subscription = { - 'name': subscription_path, - 'ack_deadline_seconds': ack_deadline_seconds, - } + subscription = pubsub_v1.types.Subscription( + name = subscription_path, + ack_deadline_seconds = ack_deadline_seconds) update_mask = { 'paths': { From ab2ac947b98e8b20e8ae15f54423f6a3b794460d Mon Sep 17 00:00:00 2001 From: noerog <32459203+noerog@users.noreply.github.com> Date: Mon, 29 Jan 2018 12:59:03 -0500 Subject: [PATCH 3/3] Fix lint errors. --- pubsub/cloud-client/subscriber.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pubsub/cloud-client/subscriber.py b/pubsub/cloud-client/subscriber.py index 5517a5dd572..b1a79327242 100644 --- a/pubsub/cloud-client/subscriber.py +++ b/pubsub/cloud-client/subscriber.py @@ -100,8 +100,8 @@ def update_subscription(project, subscription_name, ack_deadline_seconds): project, subscription_name) subscription = pubsub_v1.types.Subscription( - name = subscription_path, - ack_deadline_seconds = ack_deadline_seconds) + name=subscription_path, + ack_deadline_seconds=ack_deadline_seconds) update_mask = { 'paths': { @@ -207,7 +207,6 @@ def callback(message): create_push_parser.add_argument('subscription_name') create_push_parser.add_argument('endpoint') - delete_parser = subparsers.add_parser( 'delete', help=delete_subscription.__doc__) delete_parser.add_argument('subscription_name')