From a0a6ae54254710a49eb9d5f2334551ef47bf2bc9 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Wed, 8 Feb 2012 09:46:30 -0500 Subject: [PATCH] reorganized --- sfa/openstack/osaggregate.py | 39 +++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/sfa/openstack/osaggregate.py b/sfa/openstack/osaggregate.py index 60e3d56d..12aca553 100644 --- a/sfa/openstack/osaggregate.py +++ b/sfa/openstack/osaggregate.py @@ -1,4 +1,4 @@ - +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 @@ -11,6 +11,7 @@ from sfa.util.xrn import Xrn from sfa.util.osxrn import OSXrn from sfa.rspecs.version_manager import VersionManager + class OSAggregate: def __init__(self, driver): @@ -46,6 +47,28 @@ class OSAggregate: '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) @@ -69,7 +92,8 @@ class OSAggregate: 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 @@ -85,16 +109,7 @@ class OSAggregate: # 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: -- 2.43.0