From fab6934308a826b06aead94b676fe02b2ba908fb Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Wed, 15 Aug 2012 19:44:15 -0400 Subject: [PATCH] delete an instances security groups when deleting the instance --- sfa/openstack/nova_driver.py | 7 +++++-- sfa/openstack/osaggregate.py | 28 +++++++++++++++------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/sfa/openstack/nova_driver.py b/sfa/openstack/nova_driver.py index 3ddf7830..d1d2c1a4 100644 --- a/sfa/openstack/nova_driver.py +++ b/sfa/openstack/nova_driver.py @@ -458,11 +458,13 @@ class NovaDriver(Driver): def delete_sliver (self, slice_urn, slice_hrn, creds, options): aggregate = OSAggregate(self) + tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name() project_name = hrn_to_os_slicename(slice_hrn) - return aggregate.delete_instances(project_name) + return aggregate.delete_instances(project_name, tenant_name) def update_sliver(self, slice_urn, slice_hrn, rspec, creds, options): name = hrn_to_os_slicename(slice_hrn) + tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name() aggregate = OSAggregate(self) return aggregate.update_instances(name) @@ -473,9 +475,10 @@ class NovaDriver(Driver): return 1 def stop_slice (self, slice_urn, slice_hrn, creds): + tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name() name = OSXrn(xrn=slice_urn).name aggregate = OSAggregate(self) - return aggregate.stop_instances(name) + return aggregate.stop_instances(name, tenant_name) def reset_slice (self, slice_urn, slice_hrn, creds): raise SfaNotImplemented ("reset_slice not available at this interface") diff --git a/sfa/openstack/osaggregate.py b/sfa/openstack/osaggregate.py index 9018d2fe..257edbc5 100644 --- a/sfa/openstack/osaggregate.py +++ b/sfa/openstack/osaggregate.py @@ -259,18 +259,18 @@ class OSAggregate: if not instances: continue for instance in instances: - metadata = {} - flavor_id = self.driver.shell.nova_manager.flavors.find(name=instance['name']) - image = instance.get('disk_image') - if image and isinstance(image, list): - image = image[0] - image_id = self.driver.shell.nova_manager.images.find(name=image['name']) - fw_rules = instance.get('fw_rules', []) - group_name = self.create_security_group(instance_name, fw_rules) - metadata['security_groups'] = group_name - if node.get('component_id'): - metadata['component_id'] = node['component_id'] try: + metadata = {} + flavor_id = self.driver.shell.nova_manager.flavors.find(name=instance['name']) + image = instance.get('disk_image') + if image and isinstance(image, list): + image = image[0] + image_id = self.driver.shell.nova_manager.images.find(name=image['name']) + fw_rules = instance.get('fw_rules', []) + group_name = self.create_security_group(instance_name, fw_rules) + metadata['security_groups'] = group_name + if node.get('component_id'): + metadata['component_id'] = node['component_id'] self.driver.shell.nova_manager.servers.create(flavor=flavor_id, image=image_id, key_name = key_name, @@ -283,7 +283,8 @@ class OSAggregate: - def delete_instances(self, instance_name): + def delete_instances(self, instance_name, tenant_name): + self.driver.shell.nova_manager.connect(tenant=tenant_name) instances = self.driver.shell.nova_manager.servers.findall(name=instance_name) security_group_manager = SecurityGroup(self.driver) for instance in instances: @@ -297,7 +298,8 @@ class OSAggregate: self.driver.shell.nova_manager.servers.delete(instance) return 1 - def stop_instances(self, instance_name): + def stop_instances(self, instance_name, tenant_name): + self.driver.shell.nova_manager.connect(tenant=tenant_name) instances = self.driver.shell.nova_manager.servers.findall(name=instance_name) for instance in instances: self.driver.shell.nova_manager.servers.pause(instance) -- 2.43.0