Write acloud version and zone into report for acloud create.
Bug: 149841073
Test: acloud-dev create
Change-Id: I47f5ede1cba76b83d910c8312727ad0810401743
diff --git a/internal/constants.py b/internal/constants.py
index 1c1a80e..367b39b 100755
--- a/internal/constants.py
+++ b/internal/constants.py
@@ -191,3 +191,6 @@
# Cheeps specific stuff.
CHEEPS_BETTY_IMAGE = "betty_image"
+
+# Key name in report
+ERROR_LOG_FOLDER = "error_log_folder"
diff --git a/internal/lib/android_compute_client.py b/internal/lib/android_compute_client.py
index fbcb6a0..fac23a7 100755
--- a/internal/lib/android_compute_client.py
+++ b/internal/lib/android_compute_client.py
@@ -41,9 +41,12 @@
from acloud.internal import constants
from acloud.internal.lib import gcompute_client
from acloud.internal.lib import utils
+from acloud.public import config
logger = logging.getLogger(__name__)
+_ZONE = "zone"
+_VERSION = "version"
class AndroidComputeClient(gcompute_client.ComputeClient):
@@ -78,9 +81,9 @@
self._ssh_public_key_path = acloud_config.ssh_public_key_path
self._launch_args = acloud_config.launch_args
self._instance_name_pattern = acloud_config.instance_name_pattern
- # Store error log folder to pass to the end.
- self._error_log_folder = None
self._AddPerInstanceSshkey()
+ self._dict_report = {_ZONE: self._zone,
+ _VERSION: config.GetVersion()}
# TODO(147047953): New args to contorl zone metrics check.
def _VerifyZoneByQuota(self):
@@ -412,7 +415,16 @@
return super(AndroidComputeClient, self).GetSerialPortOutput(
instance, zone or self._zone, port)
+ def ExtendReportData(self, key, value):
+ """Extend the report data.
+
+ Args:
+ key: string of key name.
+ value: string of data value.
+ """
+ self._dict_report.update({key: value})
+
@property
- def error_log_folder(self):
- """Return error log folder"""
- return self._error_log_folder
+ def dict_report(self):
+ """Return dict_report"""
+ return self._dict_report
diff --git a/internal/lib/cvd_compute_client_multi_stage.py b/internal/lib/cvd_compute_client_multi_stage.py
index 811b568..46bf2ed 100644
--- a/internal/lib/cvd_compute_client_multi_stage.py
+++ b/internal/lib/cvd_compute_client_multi_stage.py
@@ -408,8 +408,9 @@
instance: String, instance name.
"""
log_files = pull.GetAllLogFilePaths(self._ssh)
- self._error_log_folder = pull.GetDownloadLogFolder(instance)
- pull.PullLogs(self._ssh, log_files, self._error_log_folder)
+ error_log_folder = pull.GetDownloadLogFolder(instance)
+ pull.PullLogs(self._ssh, log_files, error_log_folder)
+ self.ExtendReportData(constants.ERROR_LOG_FOLDER, error_log_folder)
@utils.TimeExecute(function_description="Reusing GCE instance")
def _ReusingGceInstance(self, avd_spec):
diff --git a/public/acloud_main.py b/public/acloud_main.py
index 4fa1644..ea71f5d 100644
--- a/public/acloud_main.py
+++ b/public/acloud_main.py
@@ -434,8 +434,8 @@
if report and report.errors:
error_msg = "\n".join(report.errors)
help_msg = _CONTACT_INFO
- if report.data.get("error_log_folder"):
- help_msg += _LOG_INFO % report.data.get("error_log_folder")
+ if report.data.get(constants.ERROR_LOG_FOLDER):
+ help_msg += _LOG_INFO % report.data.get(constants.ERROR_LOG_FOLDER)
sys.stderr.write("Encountered the following errors:\n%s\n\n%s.\n" %
(error_msg, help_msg))
return constants.EXIT_BY_FAIL_REPORT, error_msg
diff --git a/public/actions/common_operations.py b/public/actions/common_operations.py
index a11677f..1a299b1 100644
--- a/public/actions/common_operations.py
+++ b/public/actions/common_operations.py
@@ -126,15 +126,14 @@
failures[device.instance_name] = e
return failures
- def SetErrorLogFolder(self, reporter):
- """Set error log folder.
+ def UpdateReport(self, reporter):
+ """Update report from compute client.
Args:
reporter: Report object.
"""
- if self._compute_client.error_log_folder:
- reporter.AddData(key="error_log_folder",
- value=self._compute_client.error_log_folder)
+ for key, value in self._compute_client.dict_report.items():
+ reporter.AddData(key=key, value=value)
def CollectSerialPortLogs(self, output_file,
port=constants.DEFAULT_SERIAL_PORT):
@@ -221,7 +220,6 @@
failures = device_factory.GetFailures()
if failures:
- device_pool.SetErrorLogFolder(reporter)
reporter.SetStatus(report.Status.BOOT_FAIL)
else:
reporter.SetStatus(report.Status.SUCCESS)
@@ -231,6 +229,7 @@
device_pool.CollectSerialPortLogs(
serial_log_file, port=constants.DEFAULT_SERIAL_PORT)
+ device_pool.UpdateReport(reporter)
# Write result to report.
for device in device_pool.devices:
ip = (device.ip.internal if report_internal_ip