faft: Record some critical system info to the attr keyval

FAFT records the EC version, HwID, and FwID on setup. This info is used
by generate_test_report and local_dash. Generating this info in FAFT
avoids creating the large amount of sysinfo.

BUG=chromium-os:36326
TEST=Run a FAFT suite and check the keyval file, like
tmp.combined-control.pnB7V/firmware_TryFwB.normal/results/keyval:
fw_version{attr}=link_v1.2.111-d07166a
fwid{attr}=Google_Link.2695.1.128
hwid{attr}=X86 LINK TEST 6638

Change-Id: I593ab5c9c53e3fd075ad4cc65804099fb5e7402d
Reviewed-on: https://gerrit.chromium.org/gerrit/38899
Reviewed-by: Mike Truty <truty@chromium.org>
Commit-Ready: Tom Wai-Hong Tam <waihong@chromium.org>
Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/cros/faftsequence.py b/server/cros/faftsequence.py
index ef71c54..5047477 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -194,6 +194,7 @@
             'firmware_action': (None)
         })
         self.install_test_image(self._install_image_path, self._firmware_update)
+        self.record_system_info()
         self.setup_gbb_flags()
         self.setup_ec_write_protect(ec_wp)
 
@@ -206,6 +207,18 @@
         super(FAFTSequence, self).cleanup()
 
 
+    def record_system_info(self):
+        """Record some critical system info to the attr keyval.
+
+        This info is used by generate_test_report and local_dash later.
+        """
+        self.write_attr_keyval({
+            'fw_version': self.faft_client.get_EC_version(),
+            'hwid': self.faft_client.get_crossystem_value('hwid'),
+            'fwid': self.faft_client.get_crossystem_value('fwid'),
+        })
+
+
     def invalidate_firmware_setup(self):
         """Invalidate all firmware related setup state.