76 lines
2.4 KiB
Python
Executable File
76 lines
2.4 KiB
Python
Executable File
#!/usr/bin/python2
|
|
|
|
# Copyright 2014 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import logging
|
|
import logging.handlers
|
|
|
|
import common
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.client.cros import constants
|
|
from autotest_lib.client.cros import xmlrpc_server
|
|
from autotest_lib.client.cros.networking import apmanager_proxy
|
|
|
|
|
|
class ApmanagerXmlRpcDelegate(xmlrpc_server.XmlRpcDelegate):
|
|
"""Exposes methods called remotely during APManager autotests.
|
|
|
|
All instance methods of this object without a preceding '_' are exposed via
|
|
an XMLRPC server. This is not a stateless handler object, which means that
|
|
if you store state inside the delegate, that state will remain around for
|
|
future calls.
|
|
|
|
"""
|
|
|
|
|
|
def __init__(self):
|
|
self._apmanager_proxy = apmanager_proxy.ApmanagerProxy()
|
|
|
|
|
|
def __enter__(self):
|
|
super(ApmanagerXmlRpcDelegate, self).__enter__()
|
|
|
|
|
|
def __exit__(self, exception, value, traceback):
|
|
super(ApmanagerXmlRpcDelegate, self).__exit__(exception, value, traceback)
|
|
|
|
|
|
@xmlrpc_server.dbus_safe(None)
|
|
def start_service(self, config_params):
|
|
"""Create/start an AP service.
|
|
|
|
@param config_params dictionary of configuration parameters.
|
|
@return string object path for the AP service.
|
|
|
|
"""
|
|
return self._apmanager_proxy.start_service(config_params)
|
|
|
|
|
|
def terminate_service(self, service):
|
|
"""Remove/terminate an AP service.
|
|
|
|
@param service string object path of the AP service.
|
|
|
|
"""
|
|
self._apmanager_proxy.terminate_service(service)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
handler = logging.handlers.SysLogHandler(address='/dev/log')
|
|
formatter = logging.Formatter(
|
|
'apmanager_xmlrpc_server: [%(levelname)s] %(message)s')
|
|
handler.setFormatter(formatter)
|
|
logging.getLogger().addHandler(handler)
|
|
logging.debug('apmanager_xmlrpc_server main...')
|
|
server = xmlrpc_server.XmlRpcServer('localhost',
|
|
constants.APMANAGER_XMLRPC_SERVER_PORT)
|
|
if server is None:
|
|
raise error.TestFail('Failed to setup xmlrpc server for apmanager')
|
|
else:
|
|
logging.debug('Server setup')
|
|
server.register_delegate(ApmanagerXmlRpcDelegate())
|
|
server.run()
|