From 700402485d8cfb43f3ffd525412b85bf7b19df73 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 9 Jun 2021 07:12:34 +0200 Subject: [PATCH 1/4] chore(deps): update dependency google-cloud-compute to v0.4.0 (#62) --- samples/snippets/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/requirements.txt b/samples/snippets/requirements.txt index 8a2294e1e..d562c687b 100644 --- a/samples/snippets/requirements.txt +++ b/samples/snippets/requirements.txt @@ -1 +1 @@ -google-cloud-compute==0.3.0 \ No newline at end of file +google-cloud-compute==0.4.0 \ No newline at end of file From aa5491c9247674d4b61f16fc9ca77ebeae46098e Mon Sep 17 00:00:00 2001 From: georgiyekkert Date: Mon, 14 Jun 2021 11:42:31 -0700 Subject: [PATCH 2/4] tests: add more tests required for alpha (#57) --- tests/system/base.py | 11 ++ ...query_params.py => test_instance_group.py} | 111 +++++++++++------- tests/system/test_smoke.py | 106 +++++++++++------ 3 files changed, 146 insertions(+), 82 deletions(-) rename tests/system/{test_query_params.py => test_instance_group.py} (53%) diff --git a/tests/system/base.py b/tests/system/base.py index 8c7e8f93c..8967c491c 100644 --- a/tests/system/base.py +++ b/tests/system/base.py @@ -23,6 +23,7 @@ from google.cloud.compute_v1.services.global_operations.client import ( GlobalOperationsClient, ) +from google.cloud.compute_v1.types import Operation class TestBase(unittest.TestCase): @@ -51,6 +52,16 @@ def wait_for_zonal_operation(self, operation): ) if result.error: self.fail("Zonal operation {} has errors".format(operation)) + op = client.get( + operation=operation, zone=self.DEFAULT_ZONE, project=self.DEFAULT_PROJECT + ) + # this is a workaround, some operations take up to 3 min, currently we cant set timeout for wait() + if op.status != Operation.Status.DONE: + client.wait( + operation=operation, + zone=self.DEFAULT_ZONE, + project=self.DEFAULT_PROJECT, + ) def wait_for_regional_operation(self, operation): client = RegionOperationsClient() diff --git a/tests/system/test_query_params.py b/tests/system/test_instance_group.py similarity index 53% rename from tests/system/test_query_params.py rename to tests/system/test_instance_group.py index 8f07410eb..3e6a37226 100644 --- a/tests/system/test_query_params.py +++ b/tests/system/test_instance_group.py @@ -21,6 +21,8 @@ ) from google.cloud.compute_v1.types import ( InsertInstanceRequest, + InstanceGroupManager, + InstanceTemplate, Instance, AttachedDisk, NetworkInterface, @@ -57,19 +59,42 @@ def tearDown(self) -> None: project=self.DEFAULT_PROJECT, instance_template=template ) - """ Resize fails due to def test_instance_group_resize(self): - template_name = self.get_unique_name('template') - igm_name = self.get_unique_name('igm') + initialize_params = AttachedDiskInitializeParams(source_image=self.DISK_IMAGE) + disk = AttachedDisk( + auto_delete=True, + boot=True, + type_=AttachedDisk.Type.PERSISTENT, + initialize_params=initialize_params, + ) + network_interface = NetworkInterface(name="default") + instance = Instance( + name=self.name, + description="test", + disks=[disk], + machine_type=self.MACHINE_TYPE, + network_interfaces=[network_interface], + ) + request = InsertInstanceRequest( + zone=self.DEFAULT_ZONE, + project=self.DEFAULT_PROJECT, + instance_resource=instance, + ) + operation = self.inst_client.insert(request=request) + self.wait_for_zonal_operation(operation.name) + self.instances.append(self.name) - instance = self.insert_instance().target_link + template_name = self.get_unique_name("template") + igm_name = self.get_unique_name("igm") + + instance = operation.target_link template_resource = InstanceTemplate( - name=template_name, - source_instance=instance + name=template_name, source_instance=instance + ) + operation = self.template_client.insert( + project=self.DEFAULT_PROJECT, instance_template_resource=template_resource ) - operation = self.template_client.insert(project=self.DEFAULT_PROJECT, - instance_template_resource=template_resource) self.wait_for_global_operation(operation.name) self.templates.append(template_name) template = operation.target_link @@ -78,46 +103,42 @@ def test_instance_group_resize(self): base_instance_name="gapicinst", instance_template=template, name=igm_name, - target_size=1) - operation = self.igm_client.insert(project=self.DEFAULT_PROJECT, zone=self.DEFAULT_ZONE, - instance_group_manager_resource=igm_resource) + target_size=0, + ) + operation = self.igm_client.insert( + project=self.DEFAULT_PROJECT, + zone=self.DEFAULT_ZONE, + instance_group_manager_resource=igm_resource, + ) self.wait_for_zonal_operation(operation.name) self.igms.append(igm_name) - instance_group = self.igm_client.get(project=self.DEFAULT_PROJECT, - zone=self.DEFAULT_ZONE, instance_group_manager=igm_name) - self.assertEqual(instance_group.target_size, 1) - resize_op = self.igm_client.resize(project=self.DEFAULT_PROJECT, - zone=self.DEFAULT_ZONE, size=0, instance_group_manager=igm_name) - self.wait_for_zonal_operation(resize_op.name) - igm = self.igm_client.get(project=self.DEFAULT_PROJECT, zone=self.DEFAULT_ZONE, - instance_group_manager=igm_name) - self.assertEqual(igm.target_size, 0) - """ - - def insert_instance(self): - disk = AttachedDisk() - initialize_params = AttachedDiskInitializeParams() - initialize_params.source_image = self.DISK_IMAGE - disk.initialize_params = initialize_params - disk.auto_delete = True - disk.boot = True - disk.type_ = AttachedDisk.Type.PERSISTENT + instance_group = self.igm_client.get( + project=self.DEFAULT_PROJECT, + zone=self.DEFAULT_ZONE, + instance_group_manager=igm_name, + ) + self.assertEqual(instance_group.target_size, 0) - network_interface = NetworkInterface() - network_interface.name = "default" + resize_op = self.igm_client.resize( + project=self.DEFAULT_PROJECT, + zone=self.DEFAULT_ZONE, + size=1, + instance_group_manager=igm_name, + ) + self.wait_for_zonal_operation(resize_op.name) - instance = Instance() - instance.name = self.name - instance.disks = [disk] - instance.machine_type = self.MACHINE_TYPE - instance.network_interfaces = [network_interface] + instance_group = self.igm_client.get( + project=self.DEFAULT_PROJECT, + zone=self.DEFAULT_ZONE, + instance_group_manager=igm_name, + ) + self.assertEqual(instance_group.target_size, 1) - request = InsertInstanceRequest() - request.zone = self.DEFAULT_ZONE - request.project = self.DEFAULT_PROJECT - request.instance_resource = instance - operation = self.inst_client.insert(request=request) - self.wait_for_zonal_operation(operation.name) - self.instances.append(self.name) - return operation + # Resize to zero fails, uncomment once fixed b/189145532. + # resize_0_op = self.igm_client.resize(project=self.DEFAULT_PROJECT, + # zone=self.DEFAULT_ZONE, size=0, instance_group_manager=igm_name) + # self.wait_for_zonal_operation(resize_0_op.name) + # igm = self.igm_client.get(project=self.DEFAULT_PROJECT, zone=self.DEFAULT_ZONE, + # instance_group_manager=igm_name) + # self.assertEqual(igm.target_size, 0) diff --git a/tests/system/test_smoke.py b/tests/system/test_smoke.py index 926937c7d..36c6fbddf 100644 --- a/tests/system/test_smoke.py +++ b/tests/system/test_smoke.py @@ -45,32 +45,6 @@ def test_insert_instance(self): self.insert_instance() self.assert_instance() - def insert_instance(self): - disk = AttachedDisk() - initialize_params = AttachedDiskInitializeParams() - initialize_params.source_image = self.DISK_IMAGE - disk.initialize_params = initialize_params - disk.auto_delete = True - disk.boot = True - disk.type_ = AttachedDisk.Type.PERSISTENT - - network_interface = NetworkInterface() - network_interface.name = "default" - - instance = Instance() - instance.name = self.name - instance.disks = [disk] - instance.machine_type = self.MACHINE_TYPE - instance.network_interfaces = [network_interface] - - request = InsertInstanceRequest() - request.zone = self.DEFAULT_ZONE - request.project = self.DEFAULT_PROJECT - request.instance_resource = instance - operation = self.client.insert(request=request) - self.wait_for_zonal_operation(operation.name) - self.instances.append(self.name) - def test_aggregated_list(self): presented = False self.insert_instance() @@ -104,17 +78,6 @@ def test_zero_values(self): str(ex.exception.args), ) - def get_instance(self): - return self.client.get( - project=self.DEFAULT_PROJECT, zone=self.DEFAULT_ZONE, instance=self.name - ) - - def assert_instance(self): - instance = self.get_instance() - self.assertEqual(getattr(instance, "name"), self.name) - self.assertEqual(len(getattr(instance, "network_interfaces")), 1) - self.assertEqual(len(getattr(instance, "disks")), 1) - def test_patch(self): self.insert_instance() instance = self.get_instance() @@ -157,3 +120,72 @@ def test_list(self): presented = True break self.assertTrue(presented) + + def test_update_description_empty(self): + self.insert_instance() + instance = self.get_instance() + self.assertEqual(instance.description, "test") + self.assertEqual(instance.scheduling.min_node_cpus, 0) + instance.description = "" + update_op = self.client.update( + project=self.DEFAULT_PROJECT, + zone=self.DEFAULT_ZONE, + instance=self.name, + instance_resource=instance, + ) + self.wait_for_zonal_operation(update_op.name) + fetched = self.get_instance() + self.assertEqual(fetched.description, "") + self.assertEqual(fetched.scheduling.min_node_cpus, 0) + + def test_update_description_non_ascii(self): + self.insert_instance() + instance = self.get_instance() + self.assertEqual(instance.description, "test") + instance.description = "тест" + update_op = self.client.update( + project=self.DEFAULT_PROJECT, + zone=self.DEFAULT_ZONE, + instance=self.name, + instance_resource=instance, + ) + self.wait_for_zonal_operation(update_op.name) + fetched = self.get_instance() + self.assertEqual(fetched.description, "тест") + + def get_instance(self): + return self.client.get( + project=self.DEFAULT_PROJECT, zone=self.DEFAULT_ZONE, instance=self.name + ) + + def assert_instance(self): + instance = self.get_instance() + self.assertEqual(getattr(instance, "name"), self.name) + self.assertEqual(len(getattr(instance, "network_interfaces")), 1) + self.assertEqual(len(getattr(instance, "disks")), 1) + + def insert_instance(self): + initialize_params = AttachedDiskInitializeParams(source_image=self.DISK_IMAGE) + disk = AttachedDisk( + auto_delete=True, + boot=True, + type_=AttachedDisk.Type.PERSISTENT, + initialize_params=initialize_params, + ) + network_interface = NetworkInterface(name="default") + instance = Instance( + name=self.name, + description="test", + disks=[disk], + machine_type=self.MACHINE_TYPE, + network_interfaces=[network_interface], + ) + + request = InsertInstanceRequest( + zone=self.DEFAULT_ZONE, + project=self.DEFAULT_PROJECT, + instance_resource=instance, + ) + operation = self.client.insert(request=request) + self.wait_for_zonal_operation(operation.name) + self.instances.append(self.name) From c157bf507227d7c1c815d5e236e4d710e12fbdec Mon Sep 17 00:00:00 2001 From: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com> Date: Tue, 15 Jun 2021 19:10:07 -0600 Subject: [PATCH 3/4] fix: exclude docs and tests from package (#65) Only include packages that start with google in the published artifact --- setup.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2cf84a291..14ffa04a7 100644 --- a/setup.py +++ b/setup.py @@ -35,7 +35,11 @@ author_email="googleapis-packages@google.com", license="Apache 2.0", url="https://github.com/googleapis/python-compute", - packages=setuptools.PEP420PackageFinder.find(), + packages=[ + package + for package in setuptools.PEP420PackageFinder.find() + if package.startswith("google") + ], namespace_packages=("google", "google.cloud"), platforms="Posix; MacOS X; Windows", include_package_data=True, From 80aba0119d3001a913b30b903cb34ee29558dab2 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 16 Jun 2021 11:40:02 +0000 Subject: [PATCH 4/4] chore: release 0.4.1 (#66) :robot: I have created a release \*beep\* \*boop\* --- ### [0.4.1](https://www.github.com/googleapis/python-compute/compare/v0.4.0...v0.4.1) (2021-06-16) ### Bug Fixes * exclude docs and tests from package ([#65](https://www.github.com/googleapis/python-compute/issues/65)) ([c157bf5](https://www.github.com/googleapis/python-compute/commit/c157bf507227d7c1c815d5e236e4d710e12fbdec)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ setup.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9dc6e18a..9e18799b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +### [0.4.1](https://www.github.com/googleapis/python-compute/compare/v0.4.0...v0.4.1) (2021-06-16) + + +### Bug Fixes + +* exclude docs and tests from package ([#65](https://www.github.com/googleapis/python-compute/issues/65)) ([c157bf5](https://www.github.com/googleapis/python-compute/commit/c157bf507227d7c1c815d5e236e4d710e12fbdec)) + ## [0.4.0](https://www.github.com/googleapis/python-compute/compare/v0.3.0...v0.4.0) (2021-06-07) diff --git a/setup.py b/setup.py index 14ffa04a7..cfbf5591c 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ import os import setuptools # type: ignore -version = "0.4.0" +version = "0.4.1" package_root = os.path.abspath(os.path.dirname(__file__))