X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmethods%2Fremove.py;h=1b1ae98940c880f02d7a85a3d9a1bf8d5ade0644;hb=b073401948a91054f0963f9b3ca0fbbb9a5b2ecc;hp=89250027778e8d842e418ff8aee6858e8d64224e;hpb=adbb6e64e6a2d772f716ffd2a648b78626c242bd;p=sfa.git diff --git a/sfa/methods/remove.py b/sfa/methods/remove.py index 89250027..1b1ae989 100644 --- a/sfa/methods/remove.py +++ b/sfa/methods/remove.py @@ -4,12 +4,8 @@ from sfa.util.faults import * from sfa.util.method import Method from sfa.util.parameter import Parameter, Mixed -from sfa.trust.auth import Auth -from sfa.util.record import GeniRecord -from sfa.util.genitable import GeniTable from sfa.util.debug import log from sfa.trust.credential import Credential -from sfa.server.registry import Registries class remove(Method): """ @@ -46,45 +42,10 @@ class remove(Method): # validate the cred self.api.auth.check(cred, "remove") self.api.auth.verify_object_permission(hrn) - - table = GeniTable() - filter = {'hrn': hrn} - if type not in ['all', '*']: - filter['type'] = type - records = table.find(filter) - if not records: - raise RecordNotFound(hrn) - record = records[0] - type = record['type'] - - credential = self.api.getCredential() - registries = Registries(self.api) - - # Try to remove the object from the PLCDB of federated agg. - # This is attempted before removing the object from the local agg's PLCDB and sfa table - if hrn.startswith(self.api.hrn) and type in ['user', 'slice', 'authority']: - for registry in registries: - if registry not in [self.api.hrn]: - result=registries[registry].remove_peer_object(credential, record, origin_hrn) - pass - if type == "user": - persons = self.api.plshell.GetPersons(self.api.plauth, record['pointer']) - # only delete this person if he has site ids. if he doesnt, it probably means - # he was just removed from a site, not actually deleted - if persons and persons[0]['site_ids']: - self.api.plshell.DeletePerson(self.api.plauth, record['pointer']) - elif type == "slice": - if self.api.plshell.GetSlices(self.api.plauth, record['pointer']): - self.api.plshell.DeleteSlice(self.api.plauth, record['pointer']) - elif type == "node": - if self.api.plshell.GetNodes(self.api.plauth, record['pointer']): - self.api.plshell.DeleteNode(self.api.plauth, record['pointer']) - elif type == "authority": - if self.api.plshell.GetSites(self.api.plauth, record['pointer']): - self.api.plshell.DeleteSite(self.api.plauth, record['pointer']) - else: - raise UnknownGeniType(type) - - table.remove(record) - - return 1 + + # send the call to the right manager + manager_base = 'sfa.managers' + mgr_type = self.api.config.SFA_REGISTRY_TYPE + manager_module = manager_base + ".registry_manager_%s" % mgr_type + manager = __import__(manager_module, fromlist=[manager_base]) + return manager.remove(self.api, hrn, type, origin_hrn)