X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fopenstack%2Fosaggregate.py;h=045a456b009a81f34fe7be901ebc182c2954a4aa;hb=36787fe6c406e8d8a6ad5d8705a6b447bac20bf4;hp=78b05851701bdc75cbd72e6da7d1a32f60e2c2a1;hpb=99b7f92d2fb9ba847a51c235da6cf4705b216f4d;p=sfa.git diff --git a/sfa/openstack/osaggregate.py b/sfa/openstack/osaggregate.py index 78b05851..045a456b 100644 --- a/sfa/openstack/osaggregate.py +++ b/sfa/openstack/osaggregate.py @@ -60,28 +60,42 @@ class OSAggregate: def __init__(self, driver): self.driver = driver + def get_availability_zones(self): + zones = self.driver.shell.nova_manager.dns_domains.domains() + if not zones: + zones = ['cloud'] + else: + zones = [zone.name for zone in zones] + return zones + + + def describe(self, urns, version=None, options={}): + + return {} + def get_rspec(self, slice_xrn=None, version=None, options={}): version_manager = VersionManager() version = version_manager.get_version(version) if not slice_xrn: rspec_version = version_manager._get_version(version.type, version.version, 'ad') - nodes = self.get_aggregate_nodes() + rspec = self.get_aggregate_rspec(rspec_version, options) else: rspec_version = version_manager._get_version(version.type, version.version, 'manifest') - nodes = self.get_slice_nodes(slice_xrn) - rspec = RSpec(version=rspec_version, user_options=options) + rspec = self.get_slice_rsepc(slice_xrn, rspec_version, options) + + return rspec + + def get_aggregate_rspec(self, version, options={}): + rspec = RSpec(version=version, user_options=options) + nodes = self.get_aggregate_nodes() rspec.version.add_nodes(nodes) return rspec.toxml() - def get_availability_zones(self): - # essex release - zones = self.driver.shell.nova_manager.dns_domains.domains() - - if not zones: - zones = ['cloud'] - else: - zones = [zone.name for zone in zones] - return zones + def get_slice_rspec(self, xrn, version, options={}): + rspec = RSpec(version=version, user_options=options) + nodes = self.get_slice_nodes(slice_xrn) + rspec.version.add_nodes(nodes) + return rspec.toxml() def get_slice_nodes(self, slice_xrn): # update nova connection @@ -94,7 +108,6 @@ class OSAggregate: rspec_nodes = [] for instance in instances: rspec_node = Node() - #TODO: find a way to look up an instances availability zone in essex #if instance.availability_zone: # node_xrn = OSXrn(instance.availability_zone, 'node')