[autotest] Support selecting drone in restricted subnet

For agent task uses host in restricted subnet, only use drone in the subnet.
For agent task uses host NOT in restricted subnet, only use drones NOT in any
restricted subnet.

BUG=chromium:574872
TEST=local run, unittest

Change-Id: I3492fe14660e7629f982937d428d230ca9dcf3dc
Reviewed-on: https://chromium-review.googlesource.com/321116
Commit-Ready: Dan Shi <dshi@google.com>
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Fang Deng <fdeng@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
diff --git a/scheduler/monitor_db.py b/scheduler/monitor_db.py
index 5a311cd..ff377ff 100755
--- a/scheduler/monitor_db.py
+++ b/scheduler/monitor_db.py
@@ -31,6 +31,7 @@
 from autotest_lib.scheduler import scheduler_models
 from autotest_lib.scheduler import status_server, scheduler_config
 from autotest_lib.server import autoserv_utils
+from autotest_lib.server import system_utils
 from autotest_lib.server import utils as server_utils
 from autotest_lib.site_utils import metadata_reporter
 from autotest_lib.site_utils import server_manager_utils
@@ -231,12 +232,7 @@
     initialize_globals()
     scheduler_models.initialize()
 
-    if server_manager_utils.use_server_db():
-        drone_list = server_manager_utils.get_drones()
-    else:
-        drones = global_config.global_config.get_config_value(
-                scheduler_config.CONFIG_SECTION, 'drones', default='localhost')
-        drone_list = [hostname.strip() for hostname in drones.split(',')]
+    drone_list = system_utils.get_drones()
     results_host = global_config.global_config.get_config_value(
         scheduler_config.CONFIG_SECTION, 'results_host', default='localhost')
     _drone_manager.initialize(RESULTS_DIR, drone_list, results_host)
@@ -337,6 +333,7 @@
         of the tick time.
         """
         timer = autotest_stats.Timer('scheduler.tick')
+        system_utils.DroneCache.refresh()
         self._log_tick_msg('Calling new tick, starting garbage collection().')
         self._garbage_collection()
         self._log_tick_msg('Calling _drone_manager.trigger_refresh().')