X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmethods%2Fcreate_slice.py;h=e7dc1119956a39a176b414eb8084efcf74dd7ce0;hb=b1775bb47ea5e242d337dbd34f5d58d10a57a028;hp=9913e002a7812f82e900e454a3743aed28b0cdb8;hpb=b6d96cfe8c57bac835a6b6105a702d74ab0e64f7;p=sfa.git diff --git a/sfa/methods/create_slice.py b/sfa/methods/create_slice.py index 9913e002..e7dc1119 100644 --- a/sfa/methods/create_slice.py +++ b/sfa/methods/create_slice.py @@ -2,24 +2,18 @@ ### $URL$ from sfa.util.faults import * -from sfa.util.misc import * +from sfa.util.namespace import * from sfa.util.method import Method from sfa.util.parameter import Parameter, Mixed -from sfa.trust.auth import Auth -from sfa.plc.slices import Slices -from sfa.util.config import Config -# RSpecManager_pl is not used. It's used to make sure the module is in place. -import sfa.rspecs.aggregates.rspec_manager_pl -from sfa.trust.credential import Credential -from sfatables.runtime import SFATablesRules +from sfa.methods.CreateSliver import CreateSliver - -class create_slice(Method): +class create_slice(CreateSliver): """ + Deprecated. Use CreateSliver instead. Instantiate the specified slice according to whats defined in the specified rspec @param cred credential string specifying the rights of the caller - @param hrn human readable name of slice to instantiate + @param hrn human readable name of slice to instantiate (hrn or xrn) @param rspec resource specification @return 1 is successful, faults otherwise """ @@ -28,62 +22,14 @@ class create_slice(Method): 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 xrn)"), Parameter(str, "Resource specification"), - Mixed(Parameter(str, "Request hash"), - Parameter(None, "Request hash not specified")) + Mixed(Parameter(str, "Human readable name of the original caller"), + Parameter(None, "Origin hrn not specified")) ] returns = Parameter(int, "1 if successful") - - def call(self, cred, hrn, requested_rspec, request_hash=None, caller_cred=None): - if caller_cred==None: - caller_cred=cred - # This cred will be an slice cred, not a user, so we cant use it to - # authenticate the caller's request_hash. Let just get the caller's gid - # from the cred and authenticate using that - client_gid = Credential(string=cred).get_gid_caller() - client_gid_str = client_gid.save_to_string(save_parents=True) - self.api.auth.authenticateGid(client_gid_str, [cred, hrn, requested_rspec], request_hash) - self.api.auth.check(cred, 'createslice') - - #log the call - self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, Credential(string=caller_cred).get_gid_caller().get_hrn(), hrn, self.name)) - - sfa_aggregate_type = Config().get_aggregate_rspec_type() - rspec_manager = __import__("sfa.rspecs.aggregates.rspec_manager_"+sfa_aggregate_type, fromlist = ["sfa.rspecs.aggregates"]) - #Filter the incoming rspec using sfatables - incoming_rules = SFATablesRules('INCOMING') - - #incoming_rules.set_slice(hrn) # This is a temporary kludge. Eventually, we'd like to fetch the context requested by the match/target - - contexts = incoming_rules.contexts - request_context = rspec_manager.fetch_context(hrn, Credential(string=caller_cred).get_gid_caller().get_hrn(), contexts) - incoming_rules.set_context(request_context) - rspec = incoming_rules.apply(requested_rspec) - - # send the call to the right manager - if sfa_aggregate_type not in ['pl']: - # To clean up after July 21 - SB - rspec = rspec_manager.create_slice(self.api, hrn, rspec) - return 1 - - manager_base = 'sfa.managers' - if self.api.interface in ['component']: - man_type = self.api.config.SFA_CM_TYPE - manager_module = manger_base+= ".component_manager_%s" % man_type - manager = __import__(manager_module, manager_base) - manager.create_slice(self.api, hrn) - elif self.api.interface in ['aggregate']: - man_type = self.api.config.SFA_AGGREGATE_TYPE - manager_module = manger_base+= ".agregate_manager_%s" % man_type - manager = __import__(manager_module, manager_base) - manager.create_slice(self.api, hrn) - elif self.api.interface in ['slicemngr']: - man_type = self.api.config.SFA_SM_TYPE - manager_module = manger_base+= ".slice_manager_%s" % man_type - manager = __import__(manager_module, manager_base) - manager.create_slice(self.api, hrn) + def call(self, cred, xrn, requested_rspec, origin_hrn=None): - return 1 + return CreateSliver.call(self, xrn, cred, requested_rspec, [])