X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fplxrn.py;h=17d0c15b5ae905a76308819b0bf484347e5372a2;hb=5dd712d2c54e90dcdff9bcacef7a12cb817aad44;hp=12e32d0264870c225a59feb54f30099e827b6c25;hpb=fab3cc86ac9cbaae58b99863b64589a2f9d74cdb;p=sfa.git diff --git a/sfa/util/plxrn.py b/sfa/util/plxrn.py index 12e32d02..17d0c15b 100644 --- a/sfa/util/plxrn.py +++ b/sfa/util/plxrn.py @@ -17,20 +17,23 @@ def hrn_to_pl_login_base (hrn): return PlXrn(xrn=hrn,type='slice').pl_login_base() def hrn_to_pl_authname (hrn): return PlXrn(xrn=hrn,type='any').pl_authname() - +def xrn_to_hostname(hrn): + return Xrn.unescape(PlXrn(xrn=hrn, type='node').get_leaf()) class PlXrn (Xrn): @staticmethod def site_hrn (auth, login_base): - return '.'.join(auth,login_base) + return '.'.join([auth,login_base]) - def __init__ (self, auth=None, hostname=None, slicename=None, email=None, **kwargs): + def __init__ (self, auth=None, hostname=None, slicename=None, email=None, interface=None, **kwargs): #def hostname_to_hrn(auth_hrn, login_base, hostname): if hostname is not None: self.type='node' # keep only the first part of the DNS name - self.hrn='.'.join( [auth,hostname.split(".")[0] ] ) + #self.hrn='.'.join( [auth,hostname.split(".")[0] ] ) + # escape the '.' in the hostname + self.hrn='.'.join( [auth,Xrn.escape(hostname)] ) self.hrn_to_urn() #def slicename_to_hrn(auth_hrn, slicename): elif slicename is not None: @@ -45,6 +48,10 @@ class PlXrn (Xrn): # keep only the part before '@' and replace special chars into _ self.hrn='.'.join([auth,email.split('@')[0].replace(".", "_").replace("+", "_")]) self.hrn_to_urn() + elif interface is not None: + self.type = 'interface' + self.hrn = auth + '.' + interface + self.hrn_to_urn() else: Xrn.__init__ (self,**kwargs) @@ -52,14 +59,20 @@ class PlXrn (Xrn): def pl_slicename (self): self._normalize() leaf = self.leaf - leaf = re.sub('[^a-zA-Z0-9]', '', leaf) - return self.pl_login_base() + '_' + leaf + sliver_id_parts = leaf.split(':') + name = sliver_id_parts[0] + name = re.sub('[^a-zA-Z0-9_]', '', name) + return self.pl_login_base() + '_' + name #def hrn_to_pl_authname(hrn): def pl_authname (self): self._normalize() return self.authority[-1] + def interface_name(self): + self._normalize() + return self.leaf + #def hrn_to_pl_login_base(hrn): def pl_login_base (self): self._normalize()