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