[autotest] Add heartbeat AFE endpoint to shard Autotest
To improve the workload the autotest setup can handle, jobs should
be executed by multiple shards. They are sharded by type of board.
This a HTTP accessible endpoint to AFE. This assigns jobs and hosts
to moblabs and returns them as records to insert into a shard's
local database.
TEST=Ran suites and tried manually retrieving jobs
DEPLOY=scheduler,apache,host-scheduler
Change-Id: Ie1dfa7bb295f685c56bb1354675d83f82d933c65
Reviewed-on: https://chromium-review.googlesource.com/211214
Reviewed-by: Alex Miller <milleral@chromium.org>
Tested-by: Jakob Jülich <jakobjuelich@chromium.org>
Commit-Queue: Jakob Jülich <jakobjuelich@chromium.org>
diff --git a/frontend/afe/json_rpc/serviceHandler.py b/frontend/afe/json_rpc/serviceHandler.py
index b0d9e84..2481d57 100644
--- a/frontend/afe/json_rpc/serviceHandler.py
+++ b/frontend/afe/json_rpc/serviceHandler.py
@@ -21,9 +21,22 @@
import traceback
-from json import decoder, encoder
+from json import decoder
+
+try:
+ # Django JSON encoder uses the standard json encoder but can handle DateTime
+ from django.core.serializers import json as django_encoder
+ json_encoder = django_encoder.DjangoJSONEncoder()
+except ImportError:
+ from json import encoder
+ json_encoder = encoder.JSONEncoder()
+
from autotest_lib.client.common_lib.cros.graphite import stats
+
+json_decoder = decoder.JSONDecoder()
+
+
def customConvertJson(value):
"""\
Recursively process JSON values and do type conversions.
@@ -46,9 +59,6 @@
else:
return value
-json_encoder = encoder.JSONEncoder()
-json_decoder = decoder.JSONDecoder()
-
def ServiceMethod(fn):
fn.IsServiceMethod = True
diff --git a/frontend/afe/json_rpc/serviceHandler_unittest.py b/frontend/afe/json_rpc/serviceHandler_unittest.py
index b8d24be..1429f45 100755
--- a/frontend/afe/json_rpc/serviceHandler_unittest.py
+++ b/frontend/afe/json_rpc/serviceHandler_unittest.py
@@ -2,6 +2,7 @@
import unittest
import common
+from autotest_lib.frontend import setup_django_environment
import serviceHandler