Added upload command to campaign/vts.

Test: > upload --src={result_zip} --dest=<>
Bug: 72474046
Change-Id: I60249735b4bdebeeb82e9dd1d3682bdf1ab6aab5
diff --git a/harnesses/host_controller/campaigns/vts.py b/harnesses/host_controller/campaigns/vts.py
index 9aac9f6..3ce4446 100644
--- a/harnesses/host_controller/campaigns/vts.py
+++ b/harnesses/host_controller/campaigns/vts.py
@@ -15,23 +15,21 @@
 #
 
 # The list of the kwargs key. can retrieve informations on the leased job.
-_JOB_ADDITIONAL_ATTR_LIST = [
+_JOB_ATTR_LIST = [
+    "build_id",
+    "test_name",
+    "shards",
+    "serial",
     "build_target",
     "manifest_branch",
     "gsi_branch",
     "gsi_build_target",
-    "gsi_pab_account_id",
     "test_branch",
     "test_build_target",
-    "test_pab_account_id",
 ]
 
 
-def EmitConsoleCommands(_build_id="latest",
-                        _test_name="vts/vts",
-                        _shards=1,
-                        _serials=None,
-                        **kwargs):
+def EmitConsoleCommands(**kwargs):
     """Runs a common VTS-on-GSI or CTS-on-GSI test.
 
     This uses a given device branch information and automatically
@@ -39,9 +37,9 @@
     """
     result = []
 
-    if not set(_JOB_ADDITIONAL_ATTR_LIST).issubset(kwargs):
+    if not set(_JOB_ATTR_LIST).issubset(kwargs):
         missing_keys = [
-            key for key in _JOB_ADDITIONAL_ATTR_LIST if key not in kwargs
+            key for key in _JOB_ATTR_LIST if key not in kwargs
         ]
         print("Leased job missing attribute(s): {}".format(
             ", ".join(missing_keys)))
@@ -52,54 +50,64 @@
     else:
         build_target = kwargs["build_target"]
 
+    manifest_branch = kwargs["manifest_branch"]
+    build_id = kwargs["build_id"]
     result.append(
         "fetch --type=pab --branch=%s --target=%s --artifact_name=%s-img-%s.zip "
         "--build_id=%s --account_id=541462473" %
-        (kwargs["manifest_branch"], build_target, build_target.split("-")[0],
-         _build_id if _build_id != "latest" else "{build_id}", _build_id), )
+        (manifest_branch, build_target, build_target.split("-")[0], build_id
+         if build_id != "latest" else "{build_id}", build_id), )
     result.append(
         "fetch --type=pab --branch=%s --target=%s --artifact_name=bootloader.img "
-        "--build_id=%s --account_id=541462473" % (kwargs["manifest_branch"],
-                                                  build_target, _build_id), )
+        "--build_id=%s --account_id=541462473" % (manifest_branch,
+                                                  build_target, build_id), )
     result.append(
         "fetch --type=pab --branch=%s --target=%s --artifact_name=radio.img "
-        "--build_id=%s --account_id=541462473" % (kwargs["manifest_branch"],
-                                                  build_target, _build_id), )
+        "--build_id=%s --account_id=541462473" % (manifest_branch,
+                                                  build_target, build_id), )
 
-    result.append("fetch --type=pab --branch=%s --target=%s "
-                  "--artifact_name=aosp_arm64_ab-img-{build_id}.zip "
-                  "--build_id=latest --account_id=%s" %
-                  (kwargs["gsi_branch"], kwargs["gsi_build_target"],
-                   kwargs["gsi_pab_account_id"]), )
-    result.append("fetch --type=pab --branch=%s --target=%s "
-                  "--artifact_name=android-vts.zip "
-                  "--build_id=latest --account_id=%s" %
-                  (kwargs["test_branch"], kwargs["test_build_target"],
-                   kwargs["test_pab_account_id"]), )
+    result.append(
+        "fetch --type=pab --branch=%s --target=%s "
+        "--artifact_name=aosp_arm64_ab-img-{build_id}.zip --build_id=latest"
+        % (kwargs["gsi_branch"], kwargs["gsi_build_target"]))
+    if "gsi_pab_account_id" in kwargs and kwargs["gsi_pab_account_id"] != "":
+        result[-1] += " --account_id=%s" % kwargs["gsi_pab_account_id"]
 
-    shards = int(_shards)
+    result.append(
+        "fetch --type=pab --branch=%s --target=%s "
+        "--artifact_name=android-vts.zip --build_id=latest"
+        % (kwargs["test_branch"], kwargs["test_build_target"]))
+    if "test_pab_account_id" in kwargs and kwargs["test_pab_account_id"] != "":
+        result[-1] += " --account_id=%s" % kwargs["test_pab_account_id"]
+
     result.append("info")
     result.append("gsispl --version_from_path=boot.img")
-    test_name = _test_name.split("/")[-1]
+
+    shards = int(kwargs["shards"])
+    test_name = kwargs["test_name"].split("/")[-1]
+    serials = kwargs["serial"]
     if shards > 1:
         sub_commands = []
-        if shards <= len(_serials):
+        if shards <= len(serials):
             for shard_index in range(shards):
                 new_cmd_list = []
                 new_cmd_list.append(
-                    "flash --current --serial %s" % _serials[shard_index])
+                    "flash --current --serial %s" % serials[shard_index])
                 new_cmd_list.append("test -- %s --serial %s --shard-count %d "
                                     "--shard-index %d" %
-                                    (test_name, _serials[shard_index], shards,
+                                    (test_name, serials[shard_index], shards,
                                      shard_index))
                 sub_commands.append(new_cmd_list)
         result.append(sub_commands)
     else:
-        result.append("flash --current --serial %s" % _serials[0])
-        if _serials:
-            result.append("test %s -- --serial %s --shards %s" %
-                          (test_name, ",".join(_serials), shards))
+        result.append("flash --current --serial %s" % serials[0])
+        if serials:
+            result.append("test --keep-result -- %s --serial %s --shards %s" %
+                          (test_name, ",".join(serials), shards))
         else:
-            result.append("test %s -- --shards %s" % (test_name, shards))
+            result.append("test --keep-result -- %s --shards %s" % (test_name,
+                                                                    shards))
+
+        result.append("upload --src={result_zip} --dest=gs://vts-report/")
 
     return result
diff --git a/harnesses/host_controller/console.py b/harnesses/host_controller/console.py
index 90379c8..0e6fd8c 100644
--- a/harnesses/host_controller/console.py
+++ b/harnesses/host_controller/console.py
@@ -325,12 +325,7 @@
 
         script_module = imp.load_source('script_module', script_file_path)
 
-        commands = script_module.EmitConsoleCommands(
-            _build_id=kwargs["build_id"],
-            _test_name=kwargs["test_name"].split("/")[0],
-            _shards=int(kwargs["shards"]),
-            _serials=kwargs["serial"],
-            **kwargs)
+        commands = script_module.EmitConsoleCommands(**kwargs)
         if commands:
             for command in commands:
                 self.onecmd(command)
@@ -1321,7 +1316,11 @@
                         "fastboot -s %s getvar product" % device["serial"])
                     if retcode == 0:
                         res = stderr.splitlines()[0].rstrip()
-                        device["product"] = res.split(":")[1].strip()
+                        print(res)
+                        if ":" in res:
+                            device["product"] = res.split(":")[1].strip()
+                        else:
+                            device["product"] = "error"
                     else:
                         device["product"] = "error"
                     device["status"] = DEVICE_STATUS_DICT["fastboot"]
@@ -1333,6 +1332,7 @@
             if lease:
                 filepath, kwargs = self._vti_endpoint_client.LeaseJob(
                     socket.gethostname(), False)
+
                 if filepath is not None:
                     self.leased_job_queue.put(kwargs)