2to3 -f raise
[sfa.git] / sfa / dummy / dummyshell.py
1 import sys
2 import xmlrpclib
3 import socket
4 from urlparse import urlparse
5
6 from sfa.util.sfalogging import logger
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 = xmlrpclib.Server(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