普通文本  |  34行  |  1.07 KB

#!/usr/bin/python
# Copyright (c) 2013 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 common
import autotest_lib.server.frontend as frontend
from autotest_lib.frontend.afe import site_rpc_interface
from autotest_lib.frontend.afe import rpc_interface

class directAFE(frontend.AFE):
    """
    A wrapper for frontend.AFE which exposes all of the AFE
    functionality, but makes direct calls to site_rpc_interface and
    rpc_interface rather than making RPC calls to an RPC server.
    """
    def run(self, call, **dargs):
        func = None

        try:
            func = rpc_interface.__getattribute__(call)
        except AttributeError:
            pass

        try:
            func = site_rpc_interface.__getattribute__(call)
        except AttributeError:
            pass

        if not func:
            raise AttributeError('No function named %s in either '
                                 'rpc_interface or site_rpc_interface' % call)

        return func(**dargs)