Merge branch 'senslab2' of ssh://git.f-lab.fr/git/sfa into senslab2
[sfa.git] / sfa / openstack / osaggregate.py
index 0b3ab54..def366f 100644 (file)
@@ -17,7 +17,7 @@ from sfa.rspecs.elements.disk_image import DiskImage
 from sfa.rspecs.elements.services import Services
 from sfa.rspecs.elements.interface import Interface
 from sfa.util.xrn import Xrn
-from sfa.util.plxrn import PlXrn
+from sfa.util.plxrn import PlXrn, hrn_to_pl_slicename
 from sfa.util.osxrn import OSXrn
 from sfa.rspecs.version_manager import VersionManager
 from sfa.openstack.image import ImageManager
@@ -93,7 +93,7 @@ class OSAggregate:
         image_manager = ImageManager(self.driver)
 
         zones = self.get_availability_zones()
-        name = OSXrn(xrn = slice_xrn).name
+        name = hrn_to_pl_slicename(slice_xrn)
         instances = self.driver.shell.db.instance_get_all_by_project(name)
         rspec_nodes = []
         for instance in instances:
@@ -119,7 +119,20 @@ class OSAggregate:
             disk_image = image_manager.get_disk_image(instance.image_ref)
             sliver['disk_image'] = [disk_image.to_rspec_object()]
             rspec_node['slivers'] = [sliver]
-            rspec_node['interfaces'] = interfaces 
+            rspec_node['interfaces'] = interfaces
+            # slivers always provide the ssh service
+            hostname = None
+            for interface in interfaces:
+                if 'ips' in interface and interface['ips'] and \
+                isinstance(interface['ips'], list):
+                    if interface['ips'][0].get('address'):
+                        hostname = interface['ips'][0].get('address')
+                        break 
+            login = Login({'authentication': 'ssh-keys', 
+                           'hostname': hostname, 
+                           'port':'22', 'username': 'root'})
+            service = Services({'login': login})
+            rspec_node['services'] = [service] 
             rspec_nodes.append(rspec_node)
         return rspec_nodes