deeper pass on xmlrpclib vs xmlrpc.client as well as configparser
[sfa.git] / sfa / dummy / dummyshell.py
1 import sys
2 import socket
3 from urlparse import urlparse
4
5 from sfa.util.sfalogging import logger
6 from sfa.util.py23 import xmlrpc_client
7
8 class DummyShell:
9     """
10     A simple xmlrpc shell to the dummy testbed API instance
11
12     """
13     
14     direct_calls = ['AddNode', 'AddSlice', 'AddUser', 'AddUserKey', 'AddUserToSlice', 'AddSliceToNodes', 
15                     'GetTestbedInfo', 'GetNodes', 'GetSlices', 'GetUsers',
16                     'DeleteNode', 'DeleteSlice', 'DeleteUser', 'DeleteKey', 'DeleteUserFromSlice', 
17                     'DeleteSliceFromNodes',
18                     'UpdateNode', 'UpdateSlice', 'UpdateUser',
19                    ]
20
21
22     def __init__ ( self, config ) :
23         url = config.SFA_DUMMY_URL
24         self.proxy = xmlrpc_client.ServerProxy(url, verbose = False, allow_none = True)
25
26     def __getattr__(self, name):
27         def func(*args, **kwds):
28             if not name in DummyShell.direct_calls:
29                 raise Exception("Illegal method call %s for DUMMY driver"%(name))
30             result=getattr(self.proxy, name)(*args, **kwds)
31             logger.debug('DummyShell %s returned ... '%(name))
32             return result
33         return func
34