| #!/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) |