fix mojito+caiprinha induced typo
[plcapi.git] / PLC / Methods / UpdateSliceAttribute.py
index 5557ad0..1fe3e93 100644 (file)
@@ -1,58 +1,13 @@
-from PLC.Faults import *
-from PLC.Method import Method
-from PLC.Parameter import Parameter, Mixed
-from PLC.SliceAttributes import SliceAttribute, SliceAttributes
-from PLC.Slices import Slice, Slices
-from PLC.Auth import Auth
 
-class UpdateSliceAttribute(Method):
-    """
-    Updates the value of an existing slice or sliver attribute.
-
-    Users may only update attributes of slices or slivers of which
-    they are members. PIs may only update attributes of slices or
-    slivers at their sites, or of which they are members. Admins may
-    update attributes of any slice or sliver.
-
-    Returns 1 if successful, faults otherwise.
-    """
-
-    roles = ['admin', 'pi', 'user']
-
-    accepts = [
-        Auth(),
-        SliceAttribute.fields['slice_attribute_id'],
-        SliceAttribute.fields['value']
-        ]
-
-    returns = Parameter(int, '1 if successful')
-
-    def call(self, auth, slice_attribute_id, value):
-        slice_attributes = SliceAttributes(self.api, [slice_attribute_id]).values()
-        if not slice_attributes:
-            raise PLCInvalidArgument, "No such slice attribute"
-        slice_attribute = slice_attributes[0]
-
-        slices = Slices(self.api, [slice_attribute['slice_id']]).values()
-        if not slices:
-            raise PLCInvalidArgument, "No such slice"
-        slice = slices[0]
-
-        assert slice_attribute['slice_attribute_id'] in slice['slice_attribute_ids']
-
-        if 'admin' not in self.caller['roles']:
-            if self.caller['person_id'] in slice['person_ids']:
-                pass
-            elif 'pi' not in self.caller['roles']:
-                raise PLCPermissionDenied, "Not a member of the specified slice"
-            elif slice['site_id'] not in self.caller['site_ids']:
-                raise PLCPermissionDenied, "Specified slice not associated with any of your sites"
-
-            if slice_attribute['min_role_id'] is not None and \
-               min(self.caller['role_ids']) > slice_attribute['min_role_id']:
-                raise PLCPermissionDenied, "Not allowed to update the specified attribute"
-
-        slice_attribute['value'] = value
-        slice_attribute.sync()
-
-        return 1
+from PLC.v42Legacy import patch
+from PLC.v42LegacySliceAttributes import v42rename, v43rename
+from PLC.Methods.UpdateSliceTag import UpdateSliceTag
+class UpdateSliceAttribute(UpdateSliceTag):
+    """ Legacy version of UpdateSliceTag. """
+    skip_typecheck = True
+    status = "deprecated"
+    def call(self, auth, *args, **kwds):
+        newargs=[patch(x,v42rename) for x in args]
+        newkwds=dict ( [ (k,patch(v,v42rename)) for (k,v) in kwds.iteritems() ] )
+        results = UpdateSliceTag.call(self,auth,*newargs,**newkwds)
+        return patch(results,v43rename)