[autotest] Add firmware repair to CrOSHost repair logic.
This is to help to revoery duts failed in FAFT.
DUT to be repaired by firmware_repair will need to be in pool:faft-test.
The board will also need to have an entry in stable_version table, e.g.
daisy_spring/firmware: daisy_spring-firmware/R41-6588.127.0
BUG=chromium:279410,chromium:535456
TEST=unititest, local run
Change-Id: I85edee5cef2093fefecfd5e9db89848d16fc839e
Reviewed-on: https://chromium-review.googlesource.com/305290
Commit-Ready: Dan Shi <dshi@chromium.org>
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Richard Barnette <jrbarnette@chromium.org>
Reviewed-by: Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/site_utils.py b/server/site_utils.py
index a4ca13c..5880c67 100644
--- a/server/site_utils.py
+++ b/server/site_utils.py
@@ -84,6 +84,26 @@
raise ParseBuildNameException('%s is a malformed build name.' % name)
+def get_labels_from_afe(hostname, label_prefix, afe):
+ """Retrieve a host's specific labels from the AFE.
+
+ Looks for the host labels that have the form <label_prefix>:<value>
+ and returns the "<value>" part of the label. None is returned
+ if there is not a label matching the pattern
+
+ @param hostname: hostname of given DUT.
+ @param label_prefix: prefix of label to be matched, e.g., |board:|
+ @param afe: afe instance.
+
+ @returns A list of labels that match the prefix or 'None'
+
+ """
+ labels = afe.get_labels(name__startswith=label_prefix,
+ host__hostname__in=[hostname])
+ if labels:
+ return [l.name.split(label_prefix, 1)[1] for l in labels]
+
+
def get_label_from_afe(hostname, label_prefix, afe):
"""Retrieve a host's specific label from the AFE.
@@ -97,10 +117,9 @@
@returns the label that matches the prefix or 'None'
"""
- labels = afe.get_labels(name__startswith=label_prefix,
- host__hostname__in=[hostname])
+ labels = get_labels_from_afe(hostname, label_prefix, afe)
if labels and len(labels) == 1:
- return labels[0].name.split(label_prefix, 1)[1]
+ return labels[0]
def get_board_from_afe(hostname, afe):