xref: /aosp_15_r20/external/autotest/client/cros/faft/rpc_server.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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