* fix a bug with restricted drone users config parsing
* display allowed users in the status server
* ensure drone users reparse correctly
* fix a bug in max_runnable_processes introduced by user restrictions (could pass empty set to max())
Signed-off-by: Steve Howard <showard@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@4121 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/scheduler/drone_manager.py b/scheduler/drone_manager.py
index ba48dcb..f9ba9ac 100644
--- a/scheduler/drone_manager.py
+++ b/scheduler/drone_manager.py
@@ -223,7 +223,8 @@
allowed_users = config.get_config_value(
section, '%s_users' % hostname, default=None)
if allowed_users is not None:
- drone.allowed_users = set(allowed_users)
+ allowed_users = set(allowed_users.split())
+ drone.allowed_users = allowed_users
self._reorder_drone_queue() # max_processes may have changed
@@ -408,12 +409,13 @@
execution) given the current load on drones.
@param username: login of user to run a process. may be None.
"""
- if not self._drone_queue:
- # all drones disabled
+ usable_drone_wrappers = [wrapper for wrapper in self._drone_queue
+ if wrapper.drone.usable_by(username)]
+ if not usable_drone_wrappers:
+ # all drones disabled or inaccessible
return 0
return max(wrapper.drone.max_processes - wrapper.drone.active_processes
- for wrapper in self._drone_queue
- if wrapper.drone.usable_by(username))
+ for wrapper in usable_drone_wrappers)
def _least_loaded_drone(self, drones):
diff --git a/scheduler/status_server.py b/scheduler/status_server.py
index 3d618dc..a35ed6b 100644
--- a/scheduler/status_server.py
+++ b/scheduler/status_server.py
@@ -50,8 +50,13 @@
def _write_drone(self, drone):
- line = '%s %s/%s processes' % (drone.hostname, drone.active_processes,
- drone.max_processes)
+ if drone.allowed_users:
+ allowed_users = ', '.join(drone.allowed_users)
+ else:
+ allowed_users = 'all'
+ line = ('%s: %s/%s processes, users: %s'
+ % (drone.hostname, drone.active_processes, drone.max_processes,
+ allowed_users))
if not drone.enabled:
line += ' (disabled)'
self._write_line(line)