summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-02-24 22:07:39 +0000
committerGerrit Code Review <review@openstack.org>2012-02-24 22:07:39 +0000
commit48c08d048bfe8c60cf3cd03c1078e2605bbb0a18 (patch)
tree407cab140d0e60dec371a9def805e533eceef1d5 /nova
parentbfa6b0b4f44e451551c4ed910b35b2270aa65c9a (diff)
parentf006c920e0dc3d3465b0af27b0154aeee3fad373 (diff)
Merge "Don't delete security group in use from OS API."
Diffstat (limited to 'nova')
-rw-r--r--nova/api/openstack/compute/contrib/security_groups.py3
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_security_groups.py19
2 files changed, 22 insertions, 0 deletions
diff --git a/nova/api/openstack/compute/contrib/security_groups.py b/nova/api/openstack/compute/contrib/security_groups.py
index 30d3bd6b6..89ef7dc78 100644
--- a/nova/api/openstack/compute/contrib/security_groups.py
+++ b/nova/api/openstack/compute/contrib/security_groups.py
@@ -239,6 +239,9 @@ class SecurityGroupController(SecurityGroupControllerBase):
context = req.environ['nova.context']
authorize(context)
security_group = self._get_security_group(context, id)
+ if db.security_group_in_use(context, security_group.id):
+ msg = _("Security group is still in use")
+ raise exc.HTTPBadRequest(explanation=msg)
LOG.audit(_("Delete security group %s"), id, context=context)
db.security_group_destroy(context, security_group.id)
self.sgh.trigger_security_group_destroy_refresh(
diff --git a/nova/tests/api/openstack/compute/contrib/test_security_groups.py b/nova/tests/api/openstack/compute/contrib/test_security_groups.py
index 609eb9ba0..a64ec7b6f 100644
--- a/nova/tests/api/openstack/compute/contrib/test_security_groups.py
+++ b/nova/tests/api/openstack/compute/contrib/test_security_groups.py
@@ -331,6 +331,25 @@ class TestSecurityGroups(test.TestCase):
self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete,
req, '11111111')
+ def test_delete_security_group_in_use(self):
+ sg = security_group_template(id=1, rules=[])
+
+ def security_group_in_use(context, id):
+ return True
+
+ def return_security_group(context, group_id):
+ self.assertEquals(sg['id'], group_id)
+ return security_group_db(sg)
+
+ self.stubs.Set(nova.db, 'security_group_in_use',
+ security_group_in_use)
+ self.stubs.Set(nova.db, 'security_group_get',
+ return_security_group)
+
+ req = fakes.HTTPRequest.blank('/v2/fake/os-security-groups/1')
+ self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete,
+ req, '1')
+
def test_associate_by_non_existing_security_group_name(self):
body = dict(addSecurityGroup=dict(name='non-existing'))