# specialized Xrn class for PlanetLab
import re
-from sfa.util.xrn import Xrn
+from sfa.util.xrn import Xrn, get_authority
# temporary helper functions to use this module instead of namespace
def hostname_to_hrn (auth, login_base, hostname):
def xrn_to_hostname(hrn):
return Xrn.unescape(PlXrn(xrn=hrn, type='node').get_leaf())
+# helpers to handle external objects created via fedaration
+def top_auth (hrn):
+ return hrn.split('.')[0]
+
+def hash_loginbase(site_hrn):
+ if len(site_hrn) <= 12:
+ return site_hrn.replace('.','8')
+ ratio = float(12) / len(site_hrn)
+ auths_tab = site_hrn.split('.')
+ auths_tab2 = []
+ for auth in auths_tab:
+ auth2 = auth[:int(len(auth)*ratio)]
+ auths_tab2.append(auth2)
+
+ return '8'.join(auths_tab2)
+
class PlXrn (Xrn):
@staticmethod
# Fix up names of GENI Federates
base = base.lower()
- base = re.sub('\\\[^a-zA-Z0-9]', '', base)
+ base = re.sub('[\\\\]*[^a-zA-Z0-9]', '', base)
- if len(base) > 20:
- base = base[len(base)-20:]
-
return base