1*9c5db199SXin Li#!/usr/bin/python3 -u 2*9c5db199SXin Li# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 3*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 4*9c5db199SXin Li# found in the LICENSE file. 5*9c5db199SXin Li"""Exposes the FAFTClient interface over XMLRPC. 6*9c5db199SXin Li 7*9c5db199SXin LiIt launches an XMLRPC server and exposes the functions in RPCRouter(). 8*9c5db199SXin Li""" 9*9c5db199SXin Li 10*9c5db199SXin Liimport logging 11*9c5db199SXin Liimport os 12*9c5db199SXin Lifrom optparse import OptionParser 13*9c5db199SXin Li 14*9c5db199SXin Liimport common 15*9c5db199SXin Lifrom autotest_lib.client.cros import xmlrpc_server 16*9c5db199SXin Lifrom autotest_lib.client.cros.faft.utils import os_interface 17*9c5db199SXin Lifrom autotest_lib.client.common_lib import logging_config 18*9c5db199SXin Li 19*9c5db199SXin Li 20*9c5db199SXin Lidef main(): 21*9c5db199SXin Li """The Main program, to run the XMLRPC server.""" 22*9c5db199SXin Li parser = OptionParser(usage='Usage: %prog [options]') 23*9c5db199SXin Li parser.add_option( 24*9c5db199SXin Li '--port', 25*9c5db199SXin Li type='int', 26*9c5db199SXin Li dest='port', 27*9c5db199SXin Li default=9990, 28*9c5db199SXin Li help='port number of XMLRPC server') 29*9c5db199SXin Li (options, _) = parser.parse_args() 30*9c5db199SXin Li 31*9c5db199SXin Li config = logging_config.LoggingConfig() 32*9c5db199SXin Li config.configure_logging(use_console=True, verbose=True) 33*9c5db199SXin Li 34*9c5db199SXin Li logging.debug('faft.rpc_server[%s] main...', os.getpid()) 35*9c5db199SXin Li xmlrpc_server.terminate_old(__file__) 36*9c5db199SXin Li 37*9c5db199SXin Li # Import after terminate, so old process is killed even if import fails 38*9c5db199SXin Li from autotest_lib.client.cros.faft import rpc_functions 39*9c5db199SXin Li 40*9c5db199SXin Li # Launch the XMLRPC server to provide FAFTClient commands. 41*9c5db199SXin Li os_if = os_interface.OSInterface() 42*9c5db199SXin Li os.chdir(os_if.state_dir) 43*9c5db199SXin Li 44*9c5db199SXin Li server = xmlrpc_server.XmlRpcServer('localhost', options.port) 45*9c5db199SXin Li router = rpc_functions.FaftXmlRpcDelegate(os_if) 46*9c5db199SXin Li server.register_delegate(router) 47*9c5db199SXin Li server.run() 48*9c5db199SXin Li logging.debug('faft.rpc_server[%s] done.\n', os.getpid()) 49*9c5db199SXin Li 50*9c5db199SXin Li 51*9c5db199SXin Liif __name__ == '__main__': 52*9c5db199SXin Li main() 53