aboutsummaryrefslogtreecommitdiff
path: root/deprecated/automation/server/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/automation/server/server.py')
-rwxr-xr-xdeprecated/automation/server/server.py125
1 files changed, 0 insertions, 125 deletions
diff --git a/deprecated/automation/server/server.py b/deprecated/automation/server/server.py
deleted file mode 100755
index c8f22521..00000000
--- a/deprecated/automation/server/server.py
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/usr/bin/python2
-#
-# Copyright 2010 Google Inc. All Rights Reserved.
-
-import logging
-import optparse
-import pickle
-import signal
-from SimpleXMLRPCServer import SimpleXMLRPCServer
-import sys
-
-from automation.common import logger
-from automation.common.command_executer import CommandExecuter
-from automation.server import machine_manager
-from automation.server.job_group_manager import JobGroupManager
-from automation.server.job_manager import JobManager
-
-
-class Server(object):
- """Plays a role of external interface accessible over XMLRPC."""
-
- def __init__(self, machines_file=None, dry_run=False):
- """Default constructor.
-
- Args:
- machines_file: Path to file storing a list of machines.
- dry_run: If True, the server only simulates command execution.
- """
- CommandExecuter.Configure(dry_run)
-
- self.job_manager = JobManager(
- machine_manager.MachineManager.FromMachineListFile(
- machines_file or machine_manager.DEFAULT_MACHINES_FILE))
-
- self.job_group_manager = JobGroupManager(self.job_manager)
-
- self._logger = logging.getLogger(self.__class__.__name__)
-
- def ExecuteJobGroup(self, job_group, dry_run=False):
- job_group = pickle.loads(job_group)
- self._logger.info('Received ExecuteJobGroup(%r, dry_run=%s) request.',
- job_group, dry_run)
-
- for job in job_group.jobs:
- job.dry_run = dry_run
- return self.job_group_manager.AddJobGroup(job_group)
-
- def GetAllJobGroups(self):
- self._logger.info('Received GetAllJobGroups() request.')
- return pickle.dumps(self.job_group_manager.GetAllJobGroups())
-
- def KillJobGroup(self, job_group_id):
- self._logger.info('Received KillJobGroup(%d) request.', job_group_id)
- self.job_group_manager.KillJobGroup(pickle.loads(job_group_id))
-
- def GetJobGroup(self, job_group_id):
- self._logger.info('Received GetJobGroup(%d) request.', job_group_id)
-
- return pickle.dumps(self.job_group_manager.GetJobGroup(job_group_id))
-
- def GetJob(self, job_id):
- self._logger.info('Received GetJob(%d) request.', job_id)
-
- return pickle.dumps(self.job_manager.GetJob(job_id))
-
- def GetMachineList(self):
- self._logger.info('Received GetMachineList() request.')
-
- return pickle.dumps(self.job_manager.machine_manager.GetMachineList())
-
- def StartServer(self):
- self.job_manager.StartJobManager()
-
- def StopServer(self):
- self.job_manager.StopJobManager()
- self.job_manager.join()
-
-
-def GetServerOptions():
- """Get server's settings from command line options."""
- parser = optparse.OptionParser()
- parser.add_option('-m',
- '--machines-file',
- dest='machines_file',
- help='The location of the file '
- 'containing the machines database',
- default=machine_manager.DEFAULT_MACHINES_FILE)
- parser.add_option('-n',
- '--dry-run',
- dest='dry_run',
- help='Start the server in dry-run mode, where jobs will '
- 'not actually be executed.',
- action='store_true',
- default=False)
- return parser.parse_args()[0]
-
-
-def Main():
- logger.SetUpRootLogger(filename='server.log', level=logging.DEBUG)
-
- options = GetServerOptions()
- server = Server(options.machines_file, options.dry_run)
- server.StartServer()
-
- def _HandleKeyboardInterrupt(*_):
- server.StopServer()
- sys.exit(1)
-
- signal.signal(signal.SIGINT, _HandleKeyboardInterrupt)
-
- try:
- xmlserver = SimpleXMLRPCServer(
- ('localhost', 8000),
- allow_none=True,
- logRequests=False)
- xmlserver.register_instance(server)
- xmlserver.serve_forever()
- except Exception as ex:
- logging.error(ex)
- server.StopServer()
- sys.exit(1)
-
-
-if __name__ == '__main__':
- Main()