X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmethods%2Freset_slice.py;h=15fb4a5ba2e6457905f8c2a769b41d41d5ee0021;hb=57b6a99255d4a88be9c0f910f8524677e34ff4bc;hp=e5fa11291865ba5b4250d77ce0cbd8bb06fded26;hpb=a2e21bef1545bbb68c86ec1a84a611bde7f17a45;p=sfa.git diff --git a/sfa/methods/reset_slice.py b/sfa/methods/reset_slice.py index e5fa1129..15fb4a5b 100644 --- a/sfa/methods/reset_slice.py +++ b/sfa/methods/reset_slice.py @@ -1,34 +1,46 @@ -### $Id$ -### $URL$ - -from sfa.util.faults import * -from sfa.util.misc import * +from sfa.util.xrn import urn_to_hrn from sfa.util.method import Method from sfa.util.parameter import Parameter, Mixed -from sfa.trust.auth import Auth -from sfa.util.slices import Slices -class reset_slices(Method): +class reset_slice(Method): """ Reset the specified slice @param cred credential string specifying the rights of the caller - @param hrn human readable name of slice to instantiate + @param xrn human readable name of slice to instantiate (hrn or urn) @return 1 is successful, faults otherwise """ - interfaces = ['aggregate', 'slicemgr'] + interfaces = ['aggregate', 'slicemgr', 'component'] accepts = [ Parameter(str, "Credential string"), - Parameter(str, "Human readable name of slice to instantiate"), + Parameter(str, "Human readable name of slice to instantiate (hrn or urn)"), + Mixed(Parameter(str, "Human readable name of the original caller"), + Parameter(None, "Origin hrn not specified")) ] - returns = [Parameter(int, "1 if successful")] + returns = Parameter(int, "1 if successful") - def call(self, cred, hrn): - - self.api.auth.check(cred, 'resetslice') - ## XX Not yet implemented - + def call(self, cred, xrn, origin_hrn=None): + hrn, type = urn_to_hrn(xrn) + self.api.auth.check(cred, 'resetslice', hrn) + # send the call to the right manager + manager_base = 'sfa.managers' + if self.api.interface in ['component']: + mgr_type = self.api.config.SFA_CM_TYPE + manager_module = manager_base + ".component_manager_%s" % mgr_type + manager = __import__(manager_module, fromlist=[manager_base]) + manager.reset_slice(self.api, xrn) + elif self.api.interface in ['aggregate']: + mgr_type = self.api.config.SFA_AGGREGATE_TYPE + manager_module = manager_base + ".aggregate_manager_%s" % mgr_type + manager = __import__(manager_module, fromlist=[manager_base]) + manager.reset_slice(self.api, xrn) + elif self.api.interface in ['slicemgr']: + mgr_type = self.api.config.SFA_SM_TYPE + manager_module = manager_base + ".slice_manager_%s" % mgr_type + manager = __import__(manager_module, fromlist=[manager_base]) + manager.reset_slice(self.api, xrn) + return 1