diff --git a/bigquery-reservation/snippets/__init__.py b/bigquery-reservation/snippets/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/bigquery-reservation/snippets/noxfile_config.py b/bigquery-reservation/snippets/noxfile_config.py new file mode 100644 index 000000000000..32f8b4351c77 --- /dev/null +++ b/bigquery-reservation/snippets/noxfile_config.py @@ -0,0 +1,38 @@ +# Copyright 2020 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. + +# Default TEST_CONFIG_OVERRIDE for python repos. + +# You can copy this file into your directory, then it will be inported from +# the noxfile.py. + +# The source of truth: +# https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/noxfile_config.py + +TEST_CONFIG_OVERRIDE = { + # You can opt out from the test for specific Python versions. + "ignored_versions": ["2.7"], + # Old samples are opted out of enforcing Python type hints + # All new samples should feature them + "enforce_type_hints": True, + # An envvar key for determining the project id to use. Change it + # to 'BUILD_SPECIFIC_GCLOUD_PROJECT' if you want to opt in using a + # build specific Cloud project. You can also use your own string + # to use your own Cloud project. + "gcloud_project_env": "GOOGLE_CLOUD_PROJECT", + # 'gcloud_project_env': 'BUILD_SPECIFIC_GCLOUD_PROJECT', + # A dictionary you want to inject into your test. Don't put any + # secrets here. These values will override predefined values. + "envs": {}, +} diff --git a/bigquery-reservation/snippets/quickstart.py b/bigquery-reservation/snippets/quickstart.py new file mode 100644 index 000000000000..eb1227ca2dbb --- /dev/null +++ b/bigquery-reservation/snippets/quickstart.py @@ -0,0 +1,77 @@ +# Copyright 2020 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 +# +# https://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. + +# [START bigqueryreservation_quickstart] +import argparse + +from google.cloud import bigquery_reservation_v1 + + +def main(project_id: str = "your-project-id", location: str = "US") -> None: + # Constructs the client for interacting with the service. + client = bigquery_reservation_v1.ReservationServiceClient() + + report_capacity_commitments(client, project_id, location) + report_reservations(client, project_id, location) + + +def report_capacity_commitments( + client: bigquery_reservation_v1.ReservationServiceClient, + project_id: str, + location: str, +) -> None: + """Prints details and summary information about capacity commitments for + a given admin project and location. + """ + print(f"Capacity commitments in project {project_id} in location {location}") + req = bigquery_reservation_v1.ListCapacityCommitmentsRequest( + parent=client.common_location_path(project_id, location) + ) + total_commitments = 0 + for commitment in client.list_capacity_commitments(request=req): + print(f"\tCommitment {commitment.name} in state {commitment.state}") + total_commitments = total_commitments + 1 + print(f"\n{total_commitments} commitments processed.") + + +def report_reservations( + client: bigquery_reservation_v1.ReservationServiceClient, + project_id: str, + location: str, +) -> None: + """Prints details and summary information about reservations defined within + a given admin project and location. + """ + print("Reservations in project {} in location {}".format(project_id, location)) + req = bigquery_reservation_v1.ListReservationsRequest( + parent=client.common_location_path(project_id, location) + ) + total_reservations = 0 + for reservation in client.list_reservations(request=req): + print( + f"\tReservation {reservation.name} " + f"has {reservation.slot_capacity} slot capacity." + ) + total_reservations = total_reservations + 1 + print(f"\n{total_reservations} reservations processed.") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--project_id", type=str) + parser.add_argument("--location", default="US", type=str) + args = parser.parse_args() + main(project_id=args.project_id, location=args.location) + +# [END bigqueryreservation_quickstart] diff --git a/bigquery-reservation/snippets/quickstart_test.py b/bigquery-reservation/snippets/quickstart_test.py new file mode 100644 index 000000000000..66dd3cd87bac --- /dev/null +++ b/bigquery-reservation/snippets/quickstart_test.py @@ -0,0 +1,30 @@ +# Copyright 2020 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 +# +# https://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 pytest + +from . import quickstart + + +@pytest.fixture() +def project_id() -> str: + return os.environ["GOOGLE_CLOUD_PROJECT"] + + +def test_quickstart(capsys: pytest.CaptureFixture, project_id: str) -> None: + quickstart.main(project_id) + out, _ = capsys.readouterr() + assert " reservations processed." in out diff --git a/bigquery-reservation/snippets/requirements-test.txt b/bigquery-reservation/snippets/requirements-test.txt new file mode 100644 index 000000000000..d5bd56fd179f --- /dev/null +++ b/bigquery-reservation/snippets/requirements-test.txt @@ -0,0 +1 @@ +pytest==6.2.1 diff --git a/bigquery-reservation/snippets/requirements.txt b/bigquery-reservation/snippets/requirements.txt new file mode 100644 index 000000000000..03a18e53473d --- /dev/null +++ b/bigquery-reservation/snippets/requirements.txt @@ -0,0 +1 @@ +google-cloud-bigquery-reservation==1.0.0