2to3 -f except
[sfa.git] / sfa / trust / hierarchy.py
index 598ba56..5e76dbf 100644 (file)
@@ -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