X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Ftrust%2Fhierarchy.py;h=5e76dbf3735e6e67271d5b3152b1ef2c2e4cd6b9;hb=a0ef6e7c91c3c8fa376943d28fec8c5c204a78cd;hp=598ba561378b7e1bfc716bc989212293c90ec596;hpb=3d51e29695f79b143974f5cf7b2e104d89626ba4;p=sfa.git diff --git a/sfa/trust/hierarchy.py b/sfa/trust/hierarchy.py index 598ba561..5e76dbf3 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 @@ -156,7 +160,8 @@ class Hierarchy: try: os.makedirs(directory) # if the path already exists then pass - except OSError, (errno, strerr): + except OSError as xxx_todo_changeme: + (errno, strerr) = xxx_todo_changeme.args if errno == 17: pass @@ -174,18 +179,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 +227,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