diff --git a/tko/models.py b/tko/models.py
index e1226bb..dea6534 100644
--- a/tko/models.py
+++ b/tko/models.py
@@ -1,6 +1,7 @@
 import json
 import os
 
+from autotest_lib.server.hosts import file_store
 from autotest_lib.client.common_lib import utils
 from autotest_lib.tko import tast
 from autotest_lib.tko import utils as tko_utils
@@ -292,9 +293,17 @@
         @return A dictionary representing the host keyvals.
 
         """
+        keyval_path = os.path.join('host_keyvals', hostname)
         # The host keyval is <job_dir>/host_keyvals/<hostname> if it exists.
-        return test._parse_keyval(job_dir,
-                                  os.path.join('host_keyvals', hostname))
+        # Otherwise we're running on Skylab which uses hostinfo.
+        if not os.path.exists(os.path.join(job_dir, keyval_path)):
+            tko_utils.dprint("trying to use hostinfo")
+            try:
+                return _parse_hostinfo_keyval(job_dir, hostname)
+            except Exception as e:
+                # If anything goes wrong, log it and just use the old flow.
+                tko_utils.dprint("tried using hostinfo: %s" % e)
+        return test._parse_keyval(job_dir, keyval_path)
 
 
     @staticmethod
@@ -311,6 +320,30 @@
         return test._parse_keyval(job_dir, 'keyval')
 
 
+def _parse_hostinfo_keyval(job_dir, hostname):
+    """
+    Parse host keyvals from hostinfo.
+
+    @param job_dir: The string directory name of the associated job.
+    @param hostname: The string hostname.
+
+    @return A dictionary representing the host keyvals.
+
+    """
+    # The hostinfo path looks like:
+    # host_info_store/chromeos6-row4-rack11-host6.store
+    #
+    # TODO(ayatane): We should pass hostinfo path explicitly.
+    subdir = 'host_info_store'
+    hostinfo_path = os.path.join(job_dir, subdir, hostname + '.store')
+    store = file_store.FileStore(hostinfo_path)
+    hostinfo = store.get()
+    # TODO(ayatane): Investigate if urllib.quote is better.
+    label_string = ','.join(label.replace(':', '%3A')
+                            for label in hostinfo.labels)
+    return {'labels': label_string, 'platform': hostinfo.model}
+
+
 class patch(object):
     """Represents a patch."""
 
diff --git a/tko/parse.py b/tko/parse.py
index 2425cb5..28db6d2 100755
--- a/tko/parse.py
+++ b/tko/parse.py
@@ -1,7 +1,6 @@
 #!/usr/bin/python -u
 
 import collections
-import datetime
 import errno
 import fcntl
 import json
