Merge autotest upstream from @5337 ~ @5360

Change-Id: I2052380f1fb1ff952977914cb6f516a31c076aba
Reviewed-on: http://gerrit.chromium.org/gerrit/1031
Tested-by: Eric Li <ericli@chromium.org>
Reviewed-by: Eric Li <ericli@chromium.org>
diff --git a/frontend/afe/models.py b/frontend/afe/models.py
index 8cf42fa..f560837 100644
--- a/frontend/afe/models.py
+++ b/frontend/afe/models.py
@@ -561,7 +561,7 @@
         unique_together = ('test', 'name')
 
     def __unicode__(self):
-        return u'%s (%s)' % (self.name, test.name)
+        return u'%s (%s)' % (self.name, self.test.name)
 
 
 class Profiler(dbmodels.Model, model_logic.ModelExtensions):
diff --git a/frontend/afe/resources.py b/frontend/afe/resources.py
index eaeeea0..b783115 100644
--- a/frontend/afe/resources.py
+++ b/frontend/afe/resources.py
@@ -1,10 +1,11 @@
 from django import http
-from autotest_lib.frontend.shared import query_lib, resource_lib
+from autotest_lib.frontend.shared import query_lib, resource_lib, exceptions
 from autotest_lib.frontend.afe import control_file, models, rpc_utils
 from autotest_lib.frontend.afe import model_attributes
 from autotest_lib.frontend import thread_local
 from autotest_lib.client.common_lib import host_protections
 
+
 class EntryWithInvalid(resource_lib.InstanceEntry):
     def put(self):
         if self.instance.invalid:
@@ -319,7 +320,7 @@
         if 'platform' in input_dict:
             label = self.resolve_link(input_dict['platform']) .instance
             if not label.platform:
-                raise BadRequest('Label %s is not a platform' % label.name)
+                raise exceptions.BadRequest('Label %s is not a platform' % label.name)
             for label in self.instance.labels.filter(platform=True):
                 self.instance.labels.remove(label)
             self.instance.labels.add(label)
@@ -779,7 +780,7 @@
     def update(self, input_dict):
         if 'aborted' in input_dict:
             if input_dict['aborted'] != True:
-                raise BadRequest('"aborted" can only be set to true')
+                raise exceptions.BadRequest('"aborted" can only be set to true')
             query = models.HostQueueEntry.objects.filter(pk=self.instance.pk)
             models.AclGroup.check_abort_permissions(query)
             rpc_utils.check_abort_synchronous_jobs(query)
diff --git a/frontend/shared/rest_client.py b/frontend/shared/rest_client.py
index 9c4f5d5..7294e40 100644
--- a/frontend/shared/rest_client.py
+++ b/frontend/shared/rest_client.py
@@ -143,7 +143,7 @@
             logging.debug('Response verification failed, clearing headers and '
                           'trying again:\n%s', response_body)
             _clear_request_headers(uri)
-            headers, response_body = _http.request(
+            headers, response_body = self._http.request(
                 full_uri, method, body=entity_body,
                 headers=_get_request_headers(uri))