X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fopenstack%2Fnova_driver.py;h=af9ce4dfa24013a711671437e55fe2a9d03597fa;hb=c9084e2d6a9484293c0cee431784afc342ab4403;hp=d110194f7e889e7962a4fe87ece35891647c40f7;hpb=cdb2156adc15147639db8831eb027ab9c3b9d475;p=sfa.git diff --git a/sfa/openstack/nova_driver.py b/sfa/openstack/nova_driver.py index d110194f..af9ce4df 100644 --- a/sfa/openstack/nova_driver.py +++ b/sfa/openstack/nova_driver.py @@ -2,13 +2,12 @@ import time import datetime from sfa.util.faults import MissingSfaInfo, UnknownSfaType, \ - RecordNotFound, SfaNotImplemented, SliverDoesNotExist, \ - SfaInvalidArgument + RecordNotFound, SfaNotImplemented, SfaInvalidArgument from sfa.util.sfalogging import logger from sfa.util.defaultdict import defaultdict from sfa.util.sfatime import utcparse, datetime_to_string, datetime_to_epoch -from sfa.util.xrn import Xrn, hrn_to_urn, get_leaf, urn_to_sliver_id +from sfa.util.xrn import Xrn, hrn_to_urn, get_leaf from sfa.openstack.osxrn import OSXrn, hrn_to_os_slicename, hrn_to_os_tenant_name from sfa.util.cache import Cache from sfa.trust.credential import Credential @@ -331,55 +330,17 @@ class NovaDriver(Driver): # first 2 args are None in case of resource discovery def list_resources (self, creds, version, options): aggregate = OSAggregate(self) - rspec = aggregate.get_rspec(version=version, options=options) + rspec = aggregate.list_resources(version=version, options=options) return rspec def describe(self, creds, urns, version, options): aggregate = OSAggregate(self) return aggregate.describe(urns, version=version, options=options) - def sliver_status (self, slice_urn, slice_hrn): - # update nova connection - tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name() - self.shell.nova_manager.connect(tenant=tenant_name) - - # find out where this slice is currently running - project_name = hrn_to_os_slicename(slice_hrn) - instances = self.shell.nova_manager.servers.findall(name=project_name) - if len(instances) == 0: - raise SliverDoesNotExist("You have not allocated any slivers here") - - result = {} - result['geni_urn'] = slice_urn - result['plos_login'] = 'root' - # do we need real dates here? - result['plos_expires'] = None - result['geni_expires'] = None - - resources = [] - for instance in instances: - res = {} - # instances are accessed by ip, not hostname. We need to report the ip - # somewhere so users know where to ssh to. - res['geni_expires'] = None - #res['plos_hostname'] = instance.hostname - res['plos_created_at'] = datetime_to_string(utcparse(instance.created)) - res['plos_boot_state'] = instance.status - res['plos_sliver_type'] = self.shell.nova_manager.flavors.find(id=instance.flavor['id']).name - sliver_id = Xrn(slice_urn).get_sliver_id(instance.id) - res['geni_urn'] = sliver_id - - if instance.status.lower() == 'active': - res['boot_state'] = 'ready' - res['geni_status'] = 'ready' - else: - res['boot_state'] = 'unknown' - res['geni_status'] = 'unknown' - res['geni_allocation_status'] = 'geni_provisioned' - resources.append(res) - - result['geni_resources'] = resources - return result + def status (self, urns, options={}): + aggregate = OSAggregate(self) + desc = aggregate.describe(urns) + return desc['geni_slivers'] def create_sliver (self, slice_urn, slice_hrn, creds, rspec_string, users, options): @@ -402,7 +363,7 @@ class NovaDriver(Driver): tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name() aggregate.run_instances(instance_name, tenant_name, rspec_string, key_name, pubkeys) - return aggregate.get_rspec(slice_xrn=slice_urn, version=rspec.version) + return aggregate.describe(slice_xrn=slice_urn, version=rspec.version) def delete_sliver (self, slice_urn, slice_hrn, creds, options): aggregate = OSAggregate(self)