summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorAnthony Young <sleepsonthefloor@gmail.com>2011-01-27 22:51:36 -0800
committerAnthony Young <sleepsonthefloor@gmail.com>2011-01-27 22:51:36 -0800
commit7b34f59ef8d2f6a752dcd94be3f5d14f0f93d3b2 (patch)
tree5a9ffd06faa572e29640129472e43553593d72bf /nova/db
parent2a64ccb8139eb30aab394391cf137d4cb83ce55e (diff)
downloadnova-7b34f59ef8d2f6a752dcd94be3f5d14f0f93d3b2.tar.gz
nova-7b34f59ef8d2f6a752dcd94be3f5d14f0f93d3b2.tar.xz
nova-7b34f59ef8d2f6a752dcd94be3f5d14f0f93d3b2.zip
fixes for bug #709057
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/sqlalchemy/api.py6
-rw-r--r--nova/db/sqlalchemy/models.py6
2 files changed, 11 insertions, 1 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 895e7eabe..50c4b2189 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -672,6 +672,9 @@ def instance_destroy(context, instance_id):
with session.begin():
instance_ref = instance_get(context, instance_id, session=session)
instance_ref.delete(session=session)
+ session.execute('update security_group_instance_association'
+ ' set deleted=1 where instance_id=:id',
+ {'id': instance_id})
@require_context
@@ -1583,6 +1586,9 @@ def security_group_destroy(context, security_group_id):
# TODO(vish): do we have to use sql here?
session.execute('update security_groups set deleted=1 where id=:id',
{'id': security_group_id})
+ session.execute('update security_group_instance_association'
+ ' set deleted=1 where security_group_id=:id',
+ {'id': security_group_id})
session.execute('update security_group_rules set deleted=1 '
'where group_id=:id',
{'id': security_group_id})
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index c54ebe3ba..1399e29ad 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -311,10 +311,14 @@ class SecurityGroup(BASE, NovaBase):
secondary="security_group_instance_association",
primaryjoin='and_('
'SecurityGroup.id == '
- 'SecurityGroupInstanceAssociation.security_group_id,'
+ 'SecurityGroupInstanceAssociation.security_group_id,'
+ 'SecurityGroupInstanceAssociation.deleted == False,'
'SecurityGroup.deleted == False)',
secondaryjoin='and_('
'SecurityGroupInstanceAssociation.instance_id == Instance.id,'
+ # (anthony) the condition below shouldn't be necessary now that the
+ # association is being marked as deleted. However, removing this
+ # may cause existing deployments to choke, so I'm leaving it
'Instance.deleted == False)',
backref='security_groups')