|
@@ -0,0 +1,49 @@
|
|
|
+import os
|
|
|
+from concert.networking.base import get_tango_device
|
|
|
+
|
|
|
+
|
|
|
+class Workspace(object):
|
|
|
+
|
|
|
+ # FIXME: we should actually get absolute paths
|
|
|
+ ROOT = os.path.expanduser('~')
|
|
|
+
|
|
|
+ def __init__(self, penny, name):
|
|
|
+ self.penny = penny
|
|
|
+ self.name = name
|
|
|
+
|
|
|
+ @property
|
|
|
+ def path(self):
|
|
|
+ return os.path.join(self.ROOT, self.penny.device.GetPath(self.name))
|
|
|
+
|
|
|
+ def close(self):
|
|
|
+ self.penny.close(self.name)
|
|
|
+
|
|
|
+ def free(self):
|
|
|
+ self.penny.free(self.name)
|
|
|
+
|
|
|
+ def delete(self):
|
|
|
+ self.penny.delete(self.name)
|
|
|
+
|
|
|
+
|
|
|
+class Penny(object):
|
|
|
+
|
|
|
+ def __init__(self, uri='anka/astor/penny'):
|
|
|
+ self.device = get_tango_device(uri)
|
|
|
+
|
|
|
+ @property
|
|
|
+ def workspaces(self):
|
|
|
+ return json.loads(self.device.WorkspaceList).keys()
|
|
|
+
|
|
|
+ def create(self, name):
|
|
|
+ self.device.Create(name)
|
|
|
+ return Workspace(self, name)
|
|
|
+
|
|
|
+ def close(self, name):
|
|
|
+ self.device.Close(name)
|
|
|
+
|
|
|
+ def free(self, name):
|
|
|
+ self.device.Free(name)
|
|
|
+
|
|
|
+ def delete(self, name):
|
|
|
+ self.device.Delete(name)
|
|
|
+
|