This is an automated email from the ASF dual-hosted git repository.
Abacn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 8e63c0775a9 Fix cloud_build_machine_type option (#39342)
8e63c0775a9 is described below
commit 8e63c0775a92f6d0a3eb56ce7ef4a7cb2a0cf17e
Author: Yi Hu <[email protected]>
AuthorDate: Wed Jul 15 14:40:56 2026 -0400
Fix cloud_build_machine_type option (#39342)
---
.../runners/portability/sdk_container_builder.py | 2 +-
.../portability/sdk_container_builder_test.py | 41 ++++++++++++++++++++++
2 files changed, 42 insertions(+), 1 deletion(-)
diff --git
a/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
b/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
index 1e68fc305aa..66c7c9a1e91 100644
--- a/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
+++ b/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
@@ -243,7 +243,7 @@ class
_SdkContainerImageCloudBuilder(SdkContainerImageBuilder):
build = cloud_build_types.Build()
if self._cloud_build_machine_type:
build.options = cloud_build_types.BuildOptions()
- build.options.machineType = self._cloud_build_machine_type
+ build.options.machine_type = self._cloud_build_machine_type
build.steps = []
step = cloud_build_types.BuildStep()
step.name = 'quay.io/buildah/stable:latest'
diff --git
a/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
b/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
index a8cee4f127a..2b56da33762 100644
--- a/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
+++ b/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
@@ -21,12 +21,18 @@
import gc
import logging
+import tempfile
import unittest
import unittest.mock
from apache_beam.options import pipeline_options
from apache_beam.runners.portability import sdk_container_builder
+try:
+ from google.cloud.devtools import cloudbuild_v1
+except ImportError:
+ cloudbuild_v1 = None
+
class SdkContainerBuilderTest(unittest.TestCase):
def tearDown(self):
@@ -120,6 +126,41 @@ class SdkContainerBuilderTest(unittest.TestCase):
f' got: {container_image_name}'
)
+ @unittest.skipIf(
+ cloudbuild_v1 is None, 'GCP Cloud Build dependencies are not installed')
+ def test_cloud_builder_assign_machine_type(self):
+ """Verify Cloud Build machine_type is correctly set on BuildOptions."""
+ from google.cloud.devtools.cloudbuild_v1 import types as cloud_build_types
+
+ with tempfile.TemporaryDirectory() as temp_dir:
+ options = pipeline_options.PipelineOptions([
+ '--project=test-project',
+ '--temp_location=gs://test-bucket/temp',
+ '--cloud_build_machine_type=n1-highcpu-8',
+ '--no_auth', # Avoid fetching credential for unit testing
+ ])
+ builder = sdk_container_builder._SdkContainerImageCloudBuilder(options)
+ builder._temp_src_dir = temp_dir
+ builder._upload_to_gcs = unittest.mock.MagicMock()
+
+ mock_cloudbuild_client = unittest.mock.MagicMock()
+ mock_build_response = unittest.mock.MagicMock()
+ mock_build_response.metadata.build.id = 'dummy-id'
+ mock_build_response.metadata.build.log_url = 'http://dummy.url'
+ mock_cloudbuild_client.create_build.return_value = mock_build_response
+ mock_cloudbuild_client.get_build.return_value = cloud_build_types.Build(
+ status=cloud_build_types.Build.Status.SUCCESS)
+ builder._cloudbuild_client = mock_cloudbuild_client
+
+ builder._invoke_docker_build_and_push(
+ 'gcr.io/test-project/prebuilt_beam_sdk:latest')
+
+ mock_cloudbuild_client.create_build.assert_called_once()
+ create_build_request =
mock_cloudbuild_client.create_build.call_args[0][0]
+ self.assertEqual(
+ create_build_request.build.options.machine_type,
+ cloud_build_types.BuildOptions.MachineType.N1_HIGHCPU_8)
+
if __name__ == '__main__':
# Run the tests.