| Index: appengine/swarming/handlers_backend.py
|
| diff --git a/appengine/swarming/handlers_backend.py b/appengine/swarming/handlers_backend.py
|
| index 313bf0d0ab06ac548d6f2f9b9c0741eeeb4f308c..ec64f1900be6e7d5c88ab7f452a7e70256b7c659 100644
|
| --- a/appengine/swarming/handlers_backend.py
|
| +++ b/appengine/swarming/handlers_backend.py
|
| @@ -23,6 +23,7 @@ from server import config
|
| from server import lease_management
|
| from server import stats
|
| from server import task_pack
|
| +from server import task_queues
|
| from server import task_result
|
| from server import task_scheduler
|
| import ts_mon_metrics
|
| @@ -52,6 +53,14 @@ class CronAbortExpiredShardToRunHandler(webapp2.RequestHandler):
|
| self.response.out.write('Success.')
|
|
|
|
|
| +class CronTaskQueues(webapp2.RequestHandler):
|
| + @decorators.require_cronjob
|
| + def get(self):
|
| + task_queues.tidy_stale()
|
| + self.response.headers['Content-Type'] = 'text/plain; charset=utf-8'
|
| + self.response.out.write('Success.')
|
| +
|
| +
|
| class CronMachineProviderBotsUtilizationHandler(webapp2.RequestHandler):
|
| """Determines Machine Provider bot utilization."""
|
|
|
| @@ -183,6 +192,21 @@ class CancelTasksHandler(webapp2.RequestHandler):
|
| task_id, ok, was_running)
|
|
|
|
|
| +class TaskDimensionsHandler(webapp2.RequestHandler):
|
| + @decorators.require_taskqueue('task-dimensions')
|
| + def post(self):
|
| + self.tidy_stale(self.request.body)
|
| + self.response.headers['Content-Type'] = 'text/plain; charset=utf-8'
|
| + self.response.out.write('Success.')
|
| +
|
| + @staticmethod
|
| + def tidy_stale(body):
|
| + payload = body.split('\n')
|
| + dimensions_hash = int(payload[0])
|
| + dimensions_flat = payload[1:]
|
| + task_queues.rebuild_task_cache(dimensions_hash, dimensions_flat)
|
| +
|
| +
|
| class TaskSendPubSubMessage(webapp2.RequestHandler):
|
| """Sends PubSub notification about task completion."""
|
|
|
| @@ -235,12 +259,11 @@ def get_routes():
|
| """Returns internal urls that should only be accessible via the backend."""
|
| routes = [
|
| # Cron jobs.
|
| - # TODO(maruel): Rename cron.yaml job url. Doing so is a bit annoying since
|
| - # the app version has to be running an already compatible version already.
|
| ('/internal/cron/abort_bot_died', CronBotDiedHandler),
|
| ('/internal/cron/handle_bot_died', CronBotDiedHandler),
|
| ('/internal/cron/abort_expired_task_to_run',
|
| CronAbortExpiredShardToRunHandler),
|
| + ('/internal/cron/task_queues_tidy', CronTaskQueues),
|
|
|
| ('/internal/cron/stats/update', stats.InternalStatsUpdateHandler),
|
| ('/internal/cron/aggregate_bots_dimensions',
|
| @@ -258,6 +281,7 @@ def get_routes():
|
|
|
| # Task queues.
|
| ('/internal/taskqueue/cancel-tasks', CancelTasksHandler),
|
| + ('/internal/taskqueue/task-dimensions', TaskDimensionsHandler),
|
| (r'/internal/taskqueue/pubsub/<task_id:[0-9a-f]+>', TaskSendPubSubMessage),
|
| ('/internal/taskqueue/machine-provider-manage',
|
| TaskMachineProviderManagementHandler),
|
|
|