From 470c794b4091d7ae1c5eb49d35fa1d2cd6a039f6 Mon Sep 17 00:00:00 2001 From: Tim Swast Date: Wed, 27 Dec 2017 14:55:44 -0800 Subject: [PATCH] BigQuery: Add Data Transfer Service quickstart. [(#1295)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1295) * BigQuery: Add Data Transfer Service quickstart. Client library docs: https://googlecloudplatform.github.io/google-cloud-python/latest/bigquery_datatransfer/index.html * Enable BigQuery Data Transfer API in test project. * Remove project from quickstart test assertion. Don't depend on specific data sources being available. I believe the reason the tests are failing is that the data sources weren't allowed for the test project because the API was enabled, but the project wasn't enrolled as described in https://cloud.google.com/bigquery/docs/enable-transfer-service --- bigquery-datatransfer/snippets/quickstart.py | 41 +++++++++++++++++++ .../snippets/quickstart_test.py | 41 +++++++++++++++++++ .../snippets/requirements.txt | 1 + 3 files changed, 83 insertions(+) create mode 100644 bigquery-datatransfer/snippets/quickstart.py create mode 100644 bigquery-datatransfer/snippets/quickstart_test.py create mode 100644 bigquery-datatransfer/snippets/requirements.txt diff --git a/bigquery-datatransfer/snippets/quickstart.py b/bigquery-datatransfer/snippets/quickstart.py new file mode 100644 index 000000000000..7ae44669a090 --- /dev/null +++ b/bigquery-datatransfer/snippets/quickstart.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +# Copyright 2017 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +def run_quickstart(): + # [START bigquery_datatransfer_quickstart] + from google.cloud import bigquery_datatransfer + + client = bigquery_datatransfer.DataTransferServiceClient() + + project = 'my-project' # TODO: Update to your project ID. + + # Get the full path to your project. + parent = client.project_path(project) + + print('Supported Data Sources:') + + # Iterate over all possible data sources. + for data_source in client.list_data_sources(parent): + print('{}:'.format(data_source.display_name)) + print('\tID: {}'.format(data_source.data_source_id)) + print('\tFull path: {}'.format(data_source.name)) + print('\tDescription: {}'.format(data_source.description)) + # [END bigquery_datatransfer_quickstart] + + +if __name__ == '__main__': + run_quickstart() diff --git a/bigquery-datatransfer/snippets/quickstart_test.py b/bigquery-datatransfer/snippets/quickstart_test.py new file mode 100644 index 000000000000..0bb5ddd68110 --- /dev/null +++ b/bigquery-datatransfer/snippets/quickstart_test.py @@ -0,0 +1,41 @@ +# Copyright 2017 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +import mock +import pytest + +import quickstart + + +PROJECT = os.environ['GCLOUD_PROJECT'] + + +@pytest.fixture +def mock_project_path(): + """Mock out project and replace with project from environment.""" + project_patch = mock.patch( + 'google.cloud.bigquery_datatransfer.DataTransferServiceClient.' + 'project_path') + + with project_patch as project_mock: + project_mock.return_value = 'projects/{}'.format(PROJECT) + yield project_mock + + +def test_quickstart(capsys, mock_project_path): + quickstart.run_quickstart() + out, _ = capsys.readouterr() + assert 'Supported Data Sources:' in out diff --git a/bigquery-datatransfer/snippets/requirements.txt b/bigquery-datatransfer/snippets/requirements.txt new file mode 100644 index 000000000000..25782e4b01ed --- /dev/null +++ b/bigquery-datatransfer/snippets/requirements.txt @@ -0,0 +1 @@ +google-cloud-bigquery-datatransfer==0.1.0