blob: 568e7f3fa313a358aae0996a430f8d1b42df5085 [file] [log] [blame]
Aviv Keshet5ab8b692013-05-07 14:03:14 -07001#!/usr/bin/python
2# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import common
7import autotest_lib.server.frontend as frontend
8from autotest_lib.frontend.afe import site_rpc_interface
9from autotest_lib.frontend.afe import rpc_interface
10
11class directAFE(frontend.AFE):
12 """
13 A wrapper for frontend.AFE which exposes all of the AFE
14 functionality, but makes direct calls to site_rpc_interface and
15 rpc_interface rather than making RPC calls to an RPC server.
16 """
17 def run(self, call, **dargs):
18 func = None
19
20 try:
21 func = rpc_interface.__getattribute__(call)
22 except AttributeError:
23 pass
24
25 try:
26 func = site_rpc_interface.__getattribute__(call)
27 except AttributeError:
28 pass
29
30 if not func:
31 raise AttributeError('No function named %s in either '
32 'rpc_interface or site_rpc_interface' % call)
33
34 return func(**dargs)