~ttx/nova/bexar-lp713430

« back to all changes in this revision

Viewing changes to nova/db/sqlalchemy/models.py

  • Committer: Tarmac
  • Author(s): Anthony Young
  • Date: 2011-02-01 19:14:29 UTC
  • mfrom: (635.1.6 nova)
  • Revision ID: tarmac-20110201191429-nz13bhtvgotu94to
Fixes bug #709057

* Mark security_group_instance_associations as deleted when instance deleted
* Mark security_group_instance_associations as deleted when security_group deleted
* Make SecurityGroup.instances mapping properly ignore deleted security_group_instance_associations
* Add tests

IMO, this is important to merge.  Nebula has monitoring projects that continually launch and destroy instances, and I imagine other real-world deployments may have similar health checkers.  After a few weeks such health checkers choke due to the inefficient queries related to #709057.

Show diffs side-by-side

added added

removed removed

Lines of Context:
311
311
                             secondary="security_group_instance_association",
312
312
                             primaryjoin='and_('
313
313
        'SecurityGroup.id == '
314
 
            'SecurityGroupInstanceAssociation.security_group_id,'
 
314
        'SecurityGroupInstanceAssociation.security_group_id,'
 
315
        'SecurityGroupInstanceAssociation.deleted == False,'
315
316
        'SecurityGroup.deleted == False)',
316
317
                             secondaryjoin='and_('
317
318
        'SecurityGroupInstanceAssociation.instance_id == Instance.id,'
 
319
        # (anthony) the condition below shouldn't be necessary now that the
 
320
        # association is being marked as deleted.  However, removing this
 
321
        # may cause existing deployments to choke, so I'm leaving it
318
322
        'Instance.deleted == False)',
319
323
                             backref='security_groups')
320
324