buildbucket_v2: Add metadata_url data to Buildbucket
BUG=chromium:954408
TEST=run_tests
Change-Id: I0a1ebe3b16a44783fcc37ff97a2ffa5b859bb544
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1577585
Commit-Queue: Dhanya Ganesh <dhanyaganesh@chromium.org>
Tested-by: Dhanya Ganesh <dhanyaganesh@chromium.org>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
diff --git a/lib/buildbucket_v2.py b/lib/buildbucket_v2.py
index 4f5fbb5..c198ec7 100644
--- a/lib/buildbucket_v2.py
+++ b/lib/buildbucket_v2.py
@@ -62,7 +62,7 @@
platform_version=None, full_version=None, toolchain_url=None,
build_type=None, unibuild=None, suite_scheduling=None,
killed_child_builds=None, board=None, main_firmware_version=None,
- ec_firmware_version=None):
+ ec_firmware_version=None, metadata_url=None):
"""Update build.output.properties for the current build.
Sends the property values to buildbucket via
@@ -85,6 +85,7 @@
board: (Optional) board of the build.
main_firmware_version: (Optional) main firmware version of the build.
ec_firmware_version: (Optional) ec_firmware version of the build.
+ metadata_url: (Optional) google storage url to metadata.json of the build.
"""
if critical is not None:
critical = 1 if critical in [1, True] else 0
@@ -118,6 +119,8 @@
if ec_firmware_version is not None:
UpdateSelfBuildPropertiesNonBlocking('ec_firmware_version',
ec_firmware_version)
+ if metadata_url is not None:
+ UpdateSelfBuildPropertiesNonBlocking('metadata_url', metadata_url)
def UpdateBuildMetadata(metadata):
"""Update build.output.properties from a CBuildbotMetadata instance.
@@ -268,6 +271,7 @@
'full_version': 'full_version',
'milestone_version': 'milestone_version',
'toolchain_url': 'toolchain_url',
+ 'metadata_url': 'metadata_url',
'critical': 'important',
'build_type': 'build_type',
'summary': 'summary',
@@ -328,7 +332,6 @@
build_status['build_number'] = None
build_status['buildbot_generation'] = None
build_status['waterfall'] = None
- build_status['metadata_url'] = None
build_status['deadline'] = None
# Post-processing some properties.
if (build_status['status'] is not None and
diff --git a/lib/buildstore.py b/lib/buildstore.py
index 1458bd2..30223c4 100644
--- a/lib/buildstore.py
+++ b/lib/buildstore.py
@@ -357,16 +357,15 @@
entry ignoring the 'final' value (For example, a build was marked as
status='aborted' and final='true', a cron job to adjust the finish_time
will call this method with strict=False).
-
- Returns:
- The number of rows that were updated.
"""
if not self.InitializeClients():
raise BuildStoreException('BuildStore clients could not be initialized.')
if self._write_to_cidb:
- return self.cidb_conn.FinishBuild(
+ self.cidb_conn.FinishBuild(
build_id, status=status, summary=summary, metadata_url=metadata_url,
strict=strict)
+ if self._write_to_bb:
+ buildbucket_v2.UpdateSelfCommonBuildProperties(metadata_url=metadata_url)
def FinishChildConfig(self, build_id, child_config, status=None):
"""Marks the given child config as finished with |status|.
diff --git a/lib/buildstore_unittest.py b/lib/buildstore_unittest.py
index 9df8097..2bb2fb3 100644
--- a/lib/buildstore_unittest.py
+++ b/lib/buildstore_unittest.py
@@ -340,7 +340,8 @@
"""Tests the redirect for FinishBuild function."""
init = self.PatchObject(BuildStore, 'InitializeClients',
return_value=True)
- bs = BuildStore()
+ bs = BuildStore(_write_to_bb=True, _write_to_cidb=True)
+ buildbucket_v2.UpdateSelfCommonBuildProperties = mock.MagicMock()
bs.cidb_conn = mock.MagicMock()
status = mock.Mock()
summary = mock.Mock()
@@ -352,6 +353,8 @@
bs.cidb_conn.FinishBuild.assert_called_once_with(
constants.MOCK_BUILD_ID, status=status, summary=summary,
metadata_url=metadata_url, strict=strict)
+ buildbucket_v2.UpdateSelfCommonBuildProperties.assert_called_once_with(
+ metadata_url=metadata_url)
init.return_value = False
with self.assertRaises(buildstore.BuildStoreException):
bs.FinishBuild(constants.MOCK_BUILD_ID, status=status, summary=summary,