• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/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)