Removed module usage sfa.planetlab.plxrn from senslab files.
authorSandrine Avakian <sandrine.avakian@inria.fr>
Fri, 27 Jul 2012 12:30:28 +0000 (14:30 +0200)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Fri, 27 Jul 2012 12:30:28 +0000 (14:30 +0200)
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.

sfa/rspecs/elements/versions/slabv1Node.py
sfa/senslab/slabaggregate.py
sfa/senslab/slabdriver.py

index d32ab1e..e1c9536 100644 (file)
@@ -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
index 45bccd8..40df86e 100644 (file)
@@ -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:
index f88e743..3f06ce2 100644 (file)
@@ -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