From 47ffa785279089e56fa08ec80b4c48dc025526e6 Mon Sep 17 00:00:00 2001 From: Varun Naik Date: Tue, 23 Jul 2024 21:16:00 -0700 Subject: [PATCH 1/2] feat(spanner): add samples for instance partitions --- samples/samples/snippets.py | 30 ++++++++++++++++++++++++++++ samples/samples/snippets_test.py | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/samples/samples/snippets.py b/samples/samples/snippets.py index e7c76685d3..93c8de4148 100644 --- a/samples/samples/snippets.py +++ b/samples/samples/snippets.py @@ -158,6 +158,36 @@ def list_instance_config(): # [END spanner_list_instance_configs] +# [START spanner_create_instance_partition] +def create_instance_partition(instance_id, instance_partition_id): + """Creates an instance partition.""" + from google.cloud.spanner_admin_instance_v1.types import \ + spanner_instance_admin + + spanner_client = spanner.Client() + instance_admin_api = spanner_client.instance_admin_api + + config_name = "{}/instanceConfigs/nam3".format(spanner_client.project_name) + + operation = spanner_client.instance_admin_api.create_instance_partition( + parent=instance_admin_api.instance_path(spanner_client.project, instance_id), + instance_partition_id=instance_partition_id, + instance_partition=spanner_instance_admin.InstancePartition( + config=config_name, + display_name="Test instance partition", + node_count=1, + ), + ) + + print("Waiting for operation to complete...") + operation.result(OPERATION_TIMEOUT_SECONDS) + + print("Created instance partition {}".format(instance_partition_id)) + + +# [END spanner_create_instance_partition] + + # [START spanner_list_databases] def list_databases(instance_id): """Lists databases and their leader options.""" diff --git a/samples/samples/snippets_test.py b/samples/samples/snippets_test.py index 909305a65a..94a0b65cee 100644 --- a/samples/samples/snippets_test.py +++ b/samples/samples/snippets_test.py @@ -16,6 +16,7 @@ import uuid import pytest +from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin from google.api_core import exceptions from google.cloud import spanner from google.cloud.spanner_admin_database_v1.types.common import DatabaseDialect @@ -82,6 +83,12 @@ def lci_instance_id(): return f"lci-instance-{uuid.uuid4().hex[:10]}" +@pytest.fixture(scope="module") +def instance_partition_instance_id(): + """Id for the instance that tests instance partitions.""" + return f"instance-partition-test-{uuid.uuid4().hex[:10]}" + + @pytest.fixture(scope="module") def database_id(): return f"test-db-{uuid.uuid4().hex[:10]}" @@ -188,6 +195,33 @@ def test_create_instance_with_autoscaling_config(capsys, lci_instance_id): retry_429(instance.delete)() +def test_create_instance_partition(capsys, instance_partition_instance_id): + spanner_client = spanner.Client() + operation = spanner_client.instance_admin_api.create_instance( + parent=spanner_client.project_name, + instance_id=instance_partition_instance_id, + instance=spanner_instance_admin.Instance( + config="{}/instanceConfigs/regional-us-central1".format( + spanner_client.project_name + ), + display_name="Instance partitions test.", + node_count=1, + labels={ + "cloud_spanner_samples": "true", + "created": str(int(time.time())), + }, + ), + ) + operation.result(240) + retry_429(snippets.create_instance_partition)( + instance_partition_instance_id, "my-instance-partition" + ) + out, _ = capsys.readouterr() + assert "Created instance partition my-instance-partition" in out + instance = spanner_client.instance(instance_partition_instance_id) + retry_429(instance.delete)() + + def test_update_database(capsys, instance_id, sample_database): snippets.update_database(instance_id, sample_database.database_id) out, _ = capsys.readouterr() From 488e55e4b4a336a7b15347216eef1ae9b418a309 Mon Sep 17 00:00:00 2001 From: Varun Naik Date: Mon, 29 Jul 2024 19:29:00 -0700 Subject: [PATCH 2/2] PR feedback --- samples/samples/snippets_test.py | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/samples/samples/snippets_test.py b/samples/samples/snippets_test.py index 94a0b65cee..6657703fd1 100644 --- a/samples/samples/snippets_test.py +++ b/samples/samples/snippets_test.py @@ -16,7 +16,6 @@ import uuid import pytest -from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin from google.api_core import exceptions from google.cloud import spanner from google.cloud.spanner_admin_database_v1.types.common import DatabaseDialect @@ -196,28 +195,13 @@ def test_create_instance_with_autoscaling_config(capsys, lci_instance_id): def test_create_instance_partition(capsys, instance_partition_instance_id): - spanner_client = spanner.Client() - operation = spanner_client.instance_admin_api.create_instance( - parent=spanner_client.project_name, - instance_id=instance_partition_instance_id, - instance=spanner_instance_admin.Instance( - config="{}/instanceConfigs/regional-us-central1".format( - spanner_client.project_name - ), - display_name="Instance partitions test.", - node_count=1, - labels={ - "cloud_spanner_samples": "true", - "created": str(int(time.time())), - }, - ), - ) - operation.result(240) + snippets.create_instance(instance_partition_instance_id) retry_429(snippets.create_instance_partition)( instance_partition_instance_id, "my-instance-partition" ) out, _ = capsys.readouterr() assert "Created instance partition my-instance-partition" in out + spanner_client = spanner.Client() instance = spanner_client.instance(instance_partition_instance_id) retry_429(instance.delete)()