-
+from nova.exception import ImageNotFound
from sfa.util.faults import SfaAPIError
from sfa.rspecs.rspec import RSpec
from sfa.rspecs.elements.hardware_type import HardwareType
from sfa.util.osxrn import OSXrn
from sfa.rspecs.version_manager import VersionManager
+
class OSAggregate:
def __init__(self, driver):
'tags': []})
return sliver
+ def get_disk_images(self, image_id=None):
+ # get image records
+ if image_id:
+ try:
+ images = [self.driver.shell.image_manager.show(image_id)]
+ except ImageNotFound:
+ images = []
+ else:
+ images = self.driver.shell.image_manager.detail()
+
+ disk_images = []
+ # create disk image objects
+ for image in images:
+ if image['container_format'] == 'ami':
+ img = DiskImage()
+ img['name'] = image['name']
+ img['description'] = image['name']
+ img['os'] = image['name']
+ img['version'] = image['name']
+ disk_images.append(img)
+ return disk_images
+
def get_rspec(self, slice_xrn=None, version=None, options={}):
version_manager = VersionManager()
version = version_manager.get_version(version)
rspec_node['component_id'] = xrn.urn
rspec_node['component_name'] = xrn.name
rspec_node['component_manager_id'] = Xrn(self.driver.hrn, 'authority+cm').get_urn()
- sliver = self.instance_to_sliver(instance)
+ sliver = self.instance_to_sliver(instance)
+ sliver['disk_images'] = self.get_disk_images(instance.image_ref)
rspec_node['slivers'] = [sliver]
rspec_nodes.append(rspec_node)
return rspec_nodes
# available sliver/instance/vm types
instances = self.driver.shell.db.instance_type_get_all().values()
# available images
- images = self.driver.shell.image_manager.detail()
- disk_images = []
- for image in images:
- if image['container_format'] == 'ami':
- img = DiskImage()
- img['name'] = image['name']
- img['description'] = image['name']
- img['os'] = image['name']
- img['version'] = image['name']
- disk_images.append(img)
+ disk_images = self.get_disk_images()
rspec_nodes = []
for zone in zones: