raise SliverDoesNotExist("You have not allocated any slivers here")
result = {}
- top_level_status = 'unknown'
- if instances:
- top_level_status = 'ready'
+ top_level_status = 'ready'
result['geni_urn'] = slice_urn
result['plos_login'] = 'root'
# do we need real dates here?
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
+ res['geni_urn'] = Xrn(slice_urn, type='slice', id=instance.id).get_urn()
if instance.status.lower() == 'active':
res['boot_state'] = 'ready'
res['geni_status'] = 'ready'
+ elif instance.status.lower() == 'error':
+ res['boot_state'] = 'failed'
+ res['geni_status'] = 'failed'
+ top_level_status = 'failed'
else:
- res['boot_state'] = 'unknown'
- res['geni_status'] = 'unknown'
+ res['boot_state'] = 'notready'
+ res['geni_status'] = 'notready'
+ top_level_status = 'notready'
resources.append(res)
result['geni_status'] = top_level_status
return result
def create_sliver (self, slice_urn, slice_hrn, creds, rspec_string, users, options):
-
+
aggregate = OSAggregate(self)
# assume first user is the caller and use their context
rspec = RSpec(rspec_string)
instance_name = hrn_to_os_slicename(slice_hrn)
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)
+ instances = aggregate.run_instances(instance_name, tenant_name, rspec_string, key_name, pubkeys)
+ rspec_nodes = []
+ for instance in instances:
+ rspec_nodes.append(aggregate.instance_to_rspec_node(slice_urn, instance))
+ version_manager = VersionManager()
+ manifest_version = version_manager._get_version(rspec.version.type, rspec.version.version, 'manifest')
+ manifest_rspec = RSpec(version=manifest_version, user_options=options)
+ manifest_rspec.version.add_nodes(rspec_nodes)
+
+ return manifest_rspec.toxml()
def delete_sliver (self, slice_urn, slice_hrn, creds, options):
aggregate = OSAggregate(self)