First draft of the dummy-testbed driver
[sfa.git] / sfa / dummy / dummyshell.py
diff --git a/sfa/dummy/dummyshell.py b/sfa/dummy/dummyshell.py
new file mode 100644 (file)
index 0000000..e89d56f
--- /dev/null
@@ -0,0 +1,34 @@
+import sys
+import xmlrpclib
+import socket
+from urlparse import urlparse
+
+from sfa.util.sfalogging import logger
+
+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 = xmlrpclib.Server(url, verbose = False, allow_none = True)
+
+    def __getattr__(self, name):
+        def func(*args, **kwds):
+            if not name in direct_calls:
+                raise Exception, "Illegal method call %s for DUMMY driver"%(name)
+            result=getattr(self.proxy, actual_name)(*args, **kwds)
+            logger.debug('DummyShell %s returned ... '%(name))
+            return result
+        return func
+