From: Sandrine Avakian <sandrine.avakian@inria.fr>
Date: Fri, 27 Jul 2012 12:30:28 +0000 (+0200)
Subject: Removed module usage sfa.planetlab.plxrn from senslab files.
X-Git-Tag: sfa-2.1-24~3^2~107
X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=1c5813e5c42012fc6e644f2d032d19fa91f6f3da;p=sfa.git

Removed module usage sfa.planetlab.plxrn from senslab files.
Created slab_xrn_to_hostname and slab_xrn_object in slabaggregate to get urn
from hrn / hostnames and authorities to replace PlXrn usage.
Corrected component_manager in rspec which was including senslab's sites
as authorities.
---

diff --git a/sfa/rspecs/elements/versions/slabv1Node.py b/sfa/rspecs/elements/versions/slabv1Node.py
index d32ab1ec..e1c95362 100644
--- a/sfa/rspecs/elements/versions/slabv1Node.py
+++ b/sfa/rspecs/elements/versions/slabv1Node.py
@@ -1,4 +1,4 @@
-from sfa.planetlab.plxrn import xrn_to_hostname
+
 from sfa.util.xrn import Xrn
 from sfa.util.xml import XpathFilter
 from sfa.rspecs.elements.node import Node
@@ -72,7 +72,7 @@ class Slabv1Node:
             for attribute in node: 
             # set component name
                 if attribute is 'component_id':
-                    component_name = xrn_to_hostname(node['component_id'])
+                    component_name = node['component_name']
                     node_elem.set('component_name', component_name)
                     
             # set hardware types, extend fields to add Senslab's architecture
diff --git a/sfa/senslab/slabaggregate.py b/sfa/senslab/slabaggregate.py
index 45bccd85..40df86e0 100644
--- a/sfa/senslab/slabaggregate.py
+++ b/sfa/senslab/slabaggregate.py
@@ -5,7 +5,6 @@ import time
 
 #from sfa.util.config import Config
 from sfa.util.xrn import hrn_to_urn, urn_to_hrn, urn_to_sliver_id
-from sfa.planetlab.plxrn import PlXrn, hostname_to_urn
 
 from sfa.rspecs.rspec import RSpec
 from sfa.rspecs.elements.versions.slabv1Node import SlabPosition
@@ -23,8 +22,17 @@ from sfa.rspecs.version_manager import VersionManager
 from sfa.rspecs.elements.versions.slabv1Node import SlabNode
 from sfa.util.sfalogging import logger
 
+from sfa.util.xrn import Xrn
 
+def slab_xrn_to_hostname(xrn):
+    return Xrn.unescape(Xrn(xrn=xrn, type='node').get_leaf())
 
+def slab_xrn_object(root_auth, hostname):
+    """Attributes are urn and hrn.
+    Get the hostname using slab_xrn_to_hostname on the urn.
+    
+    """
+    return Xrn('.'.join( [root_auth, Xrn.escape(hostname)]), type='node')
 
 class SlabAggregate:
 
@@ -165,16 +173,18 @@ class SlabAggregate:
             rspec_node['mobile'] = node['mobile']
             rspec_node['archi'] = node['archi']
             rspec_node['radio'] = node['radio']
-            rspec_node['component_id'] = \
-                                        hostname_to_urn(self.driver.root_auth, \
-                                        node['site'], node['hostname'])
+
+            slab_xrn = slab_xrn_object(self.driver.root_auth, node['hostname'])
+            rspec_node['component_id'] = slab_xrn.urn
             rspec_node['component_name'] = node['hostname']  
             rspec_node['component_manager_id'] = \
                             hrn_to_urn(self.driver.root_auth, 'authority+sa')
-            #rspec_node['component_manager_id'] = Xrn(self.driver.root_auth, 'authority+sa').get_urn()
-            rspec_node['authority_id'] = \
-                hrn_to_urn(PlXrn.site_hrn(self.driver.root_auth, \
-                                                node['site']), 'authority+sa')
+            
+            # Senslab's nodes are federated : there is only one authority 
+            # for all Senslab sites, registered in SFA.
+            # Removing the part including the site in authority_id SA 27/07/12
+            rspec_node['authority_id'] = rspec_node['component_manager_id']  
+
             # do not include boot state (<available> element) in the manifest rspec
             
             #if not slice:
@@ -201,7 +211,6 @@ class SlabAggregate:
             for field in position :
                 try:
                     position[field] = node[field]
-                    logger.debug("SLABAGGREGATE\t get_rspecposition field %s position[field] %s "%(field, position[field]))
                 except KeyError, error :
                     logger.log_exc("SLABAGGREGATE\t get_rspec position %s "%(error))
 
@@ -236,7 +245,7 @@ class SlabAggregate:
                 #service = Services({'login': login})
                 #rspec_node['services'] = [service]
             rspec_nodes.append(rspec_node)
-        #logger.debug("SLABAGGREGATE \t get_nodes rspec_nodes %s"%(rspec_nodes))
+
         return (rspec_nodes)       
 
     def get_leases(self, slice_record = None, options = {}):
@@ -258,8 +267,10 @@ class SlabAggregate:
                 rspec_lease = Lease()
                 rspec_lease['lease_id'] = lease['lease_id']
                 site = node['site_id']
-                rspec_lease['component_id'] = hostname_to_urn(self.driver.hrn, \
-                                        site, node['hostname'])
+                slab_xrn = slab_xrn_object(self.driver.root_auth, node['hostname'])
+                rspec_lease['component_id'] = slab_xrn.urn
+                #rspec_lease['component_id'] = hostname_to_urn(self.driver.hrn, \
+                                        #site, node['hostname'])
                 rspec_lease['slice_id'] = lease['slice_id']
                 rspec_lease['start_time'] = lease['t_from']
                 rspec_lease['duration'] = (lease['t_until'] - lease['t_from']) \
@@ -329,8 +340,9 @@ class SlabAggregate:
                 tmp = ldap_username.split('.')
                 ldap_username = tmp[1].split('_')[0]
                 logger.debug("SlabAggregate \tget_rspec **** \
-                        ldap_username %s \r\n" %(ldap_username))
-                rspec.version.add_connection_information(ldap_username)
+                        ldap_username %s rspec.version %s\r\n" %(ldap_username, rspec.version))
+                if version.type == "Slab":
+                    rspec.version.add_connection_information(ldap_username)
 
             default_sliver = slivers.get(None, [])
             if default_sliver:
diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py
index f88e7439..3f06ce2e 100644
--- a/sfa/senslab/slabdriver.py
+++ b/sfa/senslab/slabdriver.py
@@ -18,7 +18,7 @@ from sfa.rspecs.version_manager import VersionManager
 from sfa.rspecs.rspec import RSpec
 
 from sfa.util.xrn import hrn_to_urn, urn_to_sliver_id, get_leaf
-from sfa.planetlab.plxrn import hostname_to_urn, xrn_to_hostname
+
 
 ## thierry: everything that is API-related (i.e. handling incoming requests) 
 # is taken care of 
@@ -29,7 +29,7 @@ from sfa.senslab.OARrestapi import  OARrestapi
 from sfa.senslab.LDAPapi import LDAPapi
 
 from sfa.senslab.slabpostgres import SlabDB, slab_dbsession, SliceSenslab
-from sfa.senslab.slabaggregate import SlabAggregate
+from sfa.senslab.slabaggregate import SlabAggregate, slab_xrn_to_hostname, slab_xrn_object
 from sfa.senslab.slabslices import SlabSlices
 
 
@@ -191,7 +191,7 @@ class SlabDriver(Driver):
             requested_lease = {}
             if not lease.get('lease_id'):
                 requested_lease['hostname'] = \
-                            xrn_to_hostname(lease.get('component_id').strip())
+                            slab_xrn_to_hostname(lease.get('component_id').strip())
                 requested_lease['start_time'] = lease.get('start_time')
                 requested_lease['duration'] = lease.get('duration')
             else:
@@ -1146,9 +1146,10 @@ class SlabDriver(Driver):
             resa['component_id_list'] = []
             #Transform the hostnames into urns (component ids)
             for node in resa['reserved_nodes']:
-                resa['component_id_list'].append(hostname_to_urn(self.hrn, \
-                         self.root_auth, node['hostname']))
-
+                #resa['component_id_list'].append(hostname_to_urn(self.hrn, \
+                         #self.root_auth, node['hostname']))
+                slab_xrn = slab_xrn_object(self.root_auth, node['hostname'])
+                resa['component_id_list'].append(slab_xrn.urn)
         
         #Filter the reservation list if necessary
         #Returns all the leases associated with a given slice