| #!/usr/bin/env python | 
 | # Copyright 2015 The Chromium Authors. All rights reserved. | 
 | # Use of this source code is governed by a BSD-style license that can be | 
 | # found in the LICENSE file. | 
 |  | 
 | """The main task entrypoint.""" | 
 |  | 
 | import argparse | 
 | import logging | 
 | import socket | 
 | import sys | 
 | import time | 
 |  | 
 | # pylint: disable=relative-import | 
 | # Import common_lib first so we can setup the environment | 
 | from lib import common_lib | 
 | common_lib.SetupEnvironment() | 
 |  | 
 | from legion.lib.rpc import rpc_server | 
 |  | 
 |  | 
 | def main(): | 
 |   print ' '.join(sys.argv) | 
 |   common_lib.InitLogging() | 
 |   logging.info('Task starting') | 
 |  | 
 |   parser = argparse.ArgumentParser() | 
 |   parser.add_argument('--otp', | 
 |                       help='One time token used to authenticate with the host') | 
 |   parser.add_argument('--controller', | 
 |                       help='The ip address of the controller machine') | 
 |   parser.add_argument('--controller-port', type=int, | 
 |                       help='The port the controllers registration server is on') | 
 |   parser.add_argument('--idle-timeout', type=int, | 
 |                       default=common_lib.DEFAULT_TIMEOUT_SECS, | 
 |                       help='The idle timeout for the rpc server in seconds') | 
 |   args, _ = parser.parse_known_args() | 
 |  | 
 |   my_port = common_lib.GetUnusedPort() | 
 |   logging.info( | 
 |       'Registering with registration server at %s:%d using OTP "%s"', | 
 |       args.controller, args.controller_port, args.otp) | 
 |   rpc_server.RpcServer.Connect( | 
 |       args.controller, args.controller_port).RegisterTask( | 
 |           args.otp, common_lib.MY_IP, my_port) | 
 |  | 
 |   server = rpc_server.RpcServer(args.controller, my_port, args.idle_timeout) | 
 |  | 
 |   server.serve_forever() | 
 |   logging.info('Server shutdown complete') | 
 |   return 0 | 
 |  | 
 |  | 
 | if __name__ == '__main__': | 
 |   sys.exit(main()) |