new API call for planetflow central to solve slice names from ids
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 20 Feb 2009 14:55:47 +0000 (14:55 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 20 Feb 2009 14:55:47 +0000 (14:55 +0000)
PLC/Methods/ResolveSlices.py [new file with mode: 0644]
PLC/Methods/__init__.py

diff --git a/PLC/Methods/ResolveSlices.py b/PLC/Methods/ResolveSlices.py
new file mode 100644 (file)
index 0000000..5574fed
--- /dev/null
@@ -0,0 +1,41 @@
+# $Id$
+
+from PLC.Method import Method
+from PLC.Parameter import Parameter, Mixed
+from PLC.Filter import Filter
+from PLC.Auth import Auth
+from PLC.Slices import Slice, Slices
+
+class ResolveSlices(Method):
+    """
+    This method is similar to GetSlices, except the the returned
+    columns are restricted to 'name' and 'slice_id'. This is method
+    designed to help third-party software solve slice names from their
+    slice_id (e.g. PlanetFlow Central).  For this reason it is
+    accessible with anonymous authentication (among others)
+    """
+
+    roles = ['admin', 'pi', 'user', 'tech', 'anonymous' ]
+
+    applicable_fields = { 
+        'slice_id' : Slice.fields['slice_id'],
+        'name' : Slice.fields['name'],
+        }
+
+    accepts = [
+        Auth(),
+        Mixed([Mixed(Slice.fields['slice_id'],
+                     Slice.fields['name'])],
+              Parameter(str,"name"),
+              Parameter(int,"slice_id"),
+              Filter(applicable_fields))
+        ]
+
+    returns = [applicable_fields]
+
+    def call(self, auth, slice_filter = None):
+
+        # Must query at least slice_id (see below)
+        return_fields = applicable_fields.keys()
+        slices = Slices(self.api, slice_filter, return_fields)
+        return slices
index 8e5a334..2cec615 100644 (file)
@@ -187,6 +187,7 @@ RebootNode
 RebootNodeWithPCU
 RefreshPeer
 ResetPassword
+ResolveSlices
 SetPersonPrimarySite
 SliceCreate
 SliceDelete