added resources method
authorTony Mack <tmack@cs.princeton.edu>
Sun, 12 Apr 2009 22:56:01 +0000 (22:56 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Sun, 12 Apr 2009 22:56:01 +0000 (22:56 +0000)
geni/methods/__init__.py
geni/methods/resources.py [new file with mode: 0644]

index d6e2da9..15bad5b 100644 (file)
@@ -6,5 +6,6 @@ list
 register
 remove
 resolve
+resources
 update
 """.split()
diff --git a/geni/methods/resources.py b/geni/methods/resources.py
new file mode 100644 (file)
index 0000000..03ab6ae
--- /dev/null
@@ -0,0 +1,38 @@
+from geni.util.faults import *
+from geni.util.excep import *
+from geni.util.method import Method
+from geni.util.parameter import Parameter, Mixed
+from geni.util.auth import Auth
+from geni.util.nodes import Nodes
+
+class resources(Method):
+    """
+    Get an resource specification (rspec). The rspec may describe the resources
+    available at an authority or the resources being used by a slice.      
+
+    @param cred credential string specifying the rights of the caller
+    @param hrn human readable name of the slice we are interesed in or None 
+           for an authority.  
+    """
+
+    interfaces = ['aggregate', 'slicemgr']
+    
+    accepts = [
+        Parameter(str, "Credential string"),
+        Mixed(Parameter(str, "Human readable name (hrn)"),
+              Parameter(None, "hrn not specified"))
+        ]
+
+    returns = Parameter(str, "String representatin of an rspec")
+    
+    def call(self, cred, hrn=None):
+        
+        self.api.auth.check(cred, 'listnodes')
+        nodes = Nodes(self.api)
+        if hrn:
+            rspec = nodes.get_rspec(hrn)
+        else:
+            nodes.refresh()
+            rspec = nodes['rspec']
+        
+        return rspec