X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Ftrust%2Fhierarchy.py;h=43b318ee5d3f569ae6d585be8a85dd79fbf24c88;hb=d28e3f3d52ee91c03b3a76e5ecba6edbf7412d87;hp=598ba561378b7e1bfc716bc989212293c90ec596;hpb=699667b3e734e954b0c93fbb2a6c29d82246d1dd;p=sfa.git diff --git a/sfa/trust/hierarchy.py b/sfa/trust/hierarchy.py index 598ba561..43b318ee 100644 --- a/sfa/trust/hierarchy.py +++ b/sfa/trust/hierarchy.py @@ -111,7 +111,11 @@ class Hierarchy: def get_auth_filenames(self, xrn): hrn, type = urn_to_hrn(xrn) - leaf = get_leaf(hrn) + if '\\' in hrn: + hrn = hrn.replace('\\', '') + leaf = hrn + else: + leaf = get_leaf(hrn) parent_hrn = get_authority(hrn) directory = os.path.join(self.basedir, hrn.replace(".", "/")) @@ -141,7 +145,7 @@ class Hierarchy: # @param create_parents if true, also create the parents if they do not exist def create_auth(self, xrn, create_parents=False): - hrn, type = urn_to_hrn(xrn) + hrn, type = urn_to_hrn(str(xrn)) logger.debug("Hierarchy: creating authority: %s"% hrn) # create the parent authority if necessary @@ -174,18 +178,9 @@ class Hierarchy: """ Create top level records (includes root and sub authorities (local/remote) """ - if not hrn: - hrn = self.config.SFA_INTERFACE_HRN - # make sure parent exists - parent_hrn = get_authority(hrn) - if not parent_hrn: - parent_hrn = hrn - if not parent_hrn == hrn: - self.create_top_level_auth(parent_hrn) - # create the authority if it doesnt alrady exist if not self.auth_exists(hrn): - self.create_auth(hrn) + self.create_auth(hrn, create_parents=True) def get_interface_auth_info(self, create=True): @@ -231,16 +226,16 @@ class Hierarchy: # @param uuid the unique identifier to store in the GID # @param pkey the public key to store in the GID - def create_gid(self, xrn, uuid, pkey, CA=False): + def create_gid(self, xrn, uuid, pkey, CA=False, email=None, force_parent=None): hrn, type = urn_to_hrn(xrn) if not type: type = 'authority' - parent_hrn = get_authority(hrn) + parent_hrn = force_parent if force_parent else get_authority(hrn) # Using hrn_to_urn() here to make sure the urn is in the right format # If xrn was a hrn instead of a urn, then the gid's urn will be # of type None urn = hrn_to_urn(hrn, type) - gid = GID(subject=hrn, uuid=uuid, hrn=hrn, urn=urn) + gid = GID(subject=hrn, uuid=uuid, hrn=hrn, urn=urn, email=email) # is this a CA cert if hrn == self.config.SFA_INTERFACE_HRN or not parent_hrn: # root or sub authority