import sys import socket from urllib.parse import urlparse from sfa.util.sfalogging import logger import xmlrpc.client class DummyShell: """ A simple xmlrpc shell to the dummy testbed API instance """ direct_calls = ['AddNode', 'AddSlice', 'AddUser', 'AddUserKey', 'AddUserToSlice', 'AddSliceToNodes', 'GetTestbedInfo', 'GetNodes', 'GetSlices', 'GetUsers', 'DeleteNode', 'DeleteSlice', 'DeleteUser', 'DeleteKey', 'DeleteUserFromSlice', 'DeleteSliceFromNodes', 'UpdateNode', 'UpdateSlice', 'UpdateUser', ] def __init__(self, config): url = config.SFA_DUMMY_URL self.proxy = xmlrpc.client.ServerProxy( url, verbose=False, allow_none=True) def __getattr__(self, name): def func(*args, **kwds): if not name in DummyShell.direct_calls: raise Exception( "Illegal method call %s for DUMMY driver" % (name)) result = getattr(self.proxy, name)(*args, **kwds) logger.debug('DummyShell %s returned ... ' % (name)) return result return func