From 201f38d02c42d0ee8539e52a4f0424fd3af36a10 Mon Sep 17 00:00:00 2001 From: Gus Class Date: Fri, 3 Nov 2017 10:54:00 -0700 Subject: [PATCH 1/2] Updates pubsub client --- iot/api-client/manager/manager.py | 30 +++++++++++-------------- iot/api-client/manager/manager_test.py | 12 +++++----- iot/api-client/manager/requirements.txt | 2 +- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/iot/api-client/manager/manager.py b/iot/api-client/manager/manager.py index 8fb3adf3cff7..96ab7f996149 100644 --- a/iot/api-client/manager/manager.py +++ b/iot/api-client/manager/manager.py @@ -42,23 +42,19 @@ from googleapiclient.errors import HttpError -def create_iot_topic(topic_name): +def create_iot_topic(project, topic_name): """Creates a PubSub Topic and grants access to Cloud IoT Core.""" - pubsub_client = pubsub.Client() - topic = pubsub_client.topic(topic_name) - topic.create() - - topic = pubsub_client.topic(topic_name) - policy = topic.get_iam_policy() - publishers = policy.get('roles/pubsub.publisher', []) - if hasattr(publishers, "append"): - publishers.append(policy.service_account( - 'cloud-iot@system.gserviceaccount.com')) - else: - publishers.add(policy.service_account( - 'cloud-iot@system.gserviceaccount.com')) - policy['roles/pubsub.publisher'] = publishers - topic.set_iam_policy(policy) + pubsub_client = pubsub.PublisherClient() + topic_path = pubsub_client.topic_path(project, topic_name) + + topic = pubsub_client.create_topic(topic_path) + policy = pubsub_client.get_iam_policy(topic_path) + + policy.bindings.add( + role='roles/pubsub.publisher', + members=['serviceAccount:cloud-iot@system.gserviceaccount.com']) + + pubsub_client.set_iam_policy(topic_path, policy) return topic @@ -476,7 +472,7 @@ def run_command(args): args.cloud_region, args.pubsub_topic, args.registry_id) elif args.command == 'create-topic': - create_iot_topic(args.pubsub_topic) + create_iot_topic(args.project_id, args.pubsub_topic) elif args.command == 'delete-device': delete_device( diff --git a/iot/api-client/manager/manager_test.py b/iot/api-client/manager/manager_test.py index ddd167504571..825f8540c3b6 100644 --- a/iot/api-client/manager/manager_test.py +++ b/iot/api-client/manager/manager_test.py @@ -15,10 +15,9 @@ import os import time -import pytest - +from google.cloud import pubsub import manager - +import pytest cloud_region = 'us-central1' device_id_template = 'test-device-{}' @@ -35,12 +34,13 @@ @pytest.fixture(scope='module') def test_topic(): - topic = manager.create_iot_topic(topic_id) + topic = manager.create_iot_topic(project_id, topic_id) yield topic - if topic.exists(): - topic.delete() + pubsub_client = pubsub.PublisherClient() + topic_path = pubsub_client.topic_path(project_id, topic_id) + pubsub_client.delete_topic(topic_path) def test_create_delete_registry(test_topic, capsys): diff --git a/iot/api-client/manager/requirements.txt b/iot/api-client/manager/requirements.txt index 17cb14751de2..7b604e1d3059 100644 --- a/iot/api-client/manager/requirements.txt +++ b/iot/api-client/manager/requirements.txt @@ -1,4 +1,4 @@ google-api-python-client==1.6.4 google-auth-httplib2==0.0.2 google-auth==1.2.0 -google-cloud==0.28.0 +google-cloud==0.29.0 From 1a7b0da6a721917f5c66f7e1e5df17bad2df8f78 Mon Sep 17 00:00:00 2001 From: Gus Class Date: Fri, 3 Nov 2017 12:30:24 -0700 Subject: [PATCH 2/2] Fixes lint error. --- iot/api-client/manager/manager_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iot/api-client/manager/manager_test.py b/iot/api-client/manager/manager_test.py index 825f8540c3b6..7565967c1d1d 100644 --- a/iot/api-client/manager/manager_test.py +++ b/iot/api-client/manager/manager_test.py @@ -16,8 +16,8 @@ import time from google.cloud import pubsub -import manager import pytest +import manager cloud_region = 'us-central1' device_id_template = 'test-device-{}'