PL Driver: 1st shot rebase of PL operations around the HRN tags of Slice/Person/Site
[sfa.git] / sfa / planetlab / plxrn.py
index 22e9418..c9fa5ca 100644 (file)
@@ -1,6 +1,6 @@
 # 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):
@@ -21,6 +21,22 @@ def hrn_to_pl_authname (hrn):
 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