added slices call
authorTony Mack <tmack@cs.princeton.edu>
Mon, 13 Apr 2009 01:57:45 +0000 (01:57 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Mon, 13 Apr 2009 01:57:45 +0000 (01:57 +0000)
geni/methods/__init__.py
geni/methods/slices.py [new file with mode: 0644]

index 15bad5b..198dceb 100644 (file)
@@ -7,5 +7,6 @@ register
 remove
 resolve
 resources
+slices
 update
 """.split()
diff --git a/geni/methods/slices.py b/geni/methods/slices.py
new file mode 100644 (file)
index 0000000..fc569d0
--- /dev/null
@@ -0,0 +1,41 @@
+from geni.util.faults import *
+from geni.util.excep import *
+from geni.util.misc import *
+from geni.util.method import Method
+from geni.util.parameter import Parameter, Mixed
+from geni.util.auth import Auth
+from geni.aggregate import Aggregates
+
+class slices(Method):
+    """
+    Get a list of instantiated slices at this authority.      
+
+    @param cred credential string specifying the rights of the caller
+    @return list of human readable slice names (hrn).  
+    """
+
+    interfaces = ['aggregate', 'slicemgr']
+    
+    accepts = [
+        Parameter(str, "Credential string"),
+        ]
+
+    returns = [Parameter(str, "Human readable slice name (hrn)")]
+    
+    def call(self, cred):
+       
+        self.api.auth.check(cred, 'listslices')
+        slice_hrns = []
+
+        if self.api.interface in ['aggregate']:
+            slices = self.api.plshell.GetSlices(self.api.plauth, {}, ['name'])
+            slice_hrns = [slicename_to_hrn(self.api.hrn, slice['name']) for slice in slices]
+        
+        else:
+            aggregates = Aggregates()
+            credential = self.api.getCredential()
+            for aggregate in aggregates:
+                slices = aggregates[aggregate].slices(credential)
+                slice_hrns.extend(slices)    
+            
+        return slice_hrns