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
zones = ['cloud']
else:
zones = [zone.name for zone in zones]
+ return zones
def get_slice_nodes(self, slice_xrn):
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:
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
username = Xrn(user['urn']).get_leaf()
try:
self.driver.shell.auth_manager.get_user(username)
- except nova.exception.UserNotFound:
+ except UserNotFound:
self.driver.shell.auth_manager.create_user(username)
self.verify_user_keys(username, user['keys'], options)