예제 #1
0
    def test_delete_exeption_HTTPNotFound_db_securitygroup_id_not_found(self):
        self.mox.StubOutWithMock(db, "securitygroup_get_by_securitygroup_id")
        db.securitygroup_get_by_securitygroup_id(
            IsA(context.RequestContext),
            GID,
            SECURITYGROUP_ID)\
            .AndReturn({"processes": [],
                        "neutron_securitygroup_id": "fake_id"})

        self.mox.StubOutWithMock(manager.ResourceOperator,
                                 "securitygroup_delete")
        manager.ResourceOperator.securitygroup_delete(
            IsA(context.RequestContext), "fake_id")

        self.mox.StubOutWithMock(db, "securitygroup_delete")
        db.securitygroup_delete(IsA(context.RequestContext),
                                GID,
                                SECURITYGROUP_ID)\
            .AndRaise(exception.SecuritygroupNotFound(
                securitygroup_id=SECURITYGROUP_ID))
        self.mox.ReplayAll()

        url = get_base_url(GID) + "/" + SECURITYGROUP_ID
        req = get_request(url, "DELETE")
        res = req.get_response(self.app)
        self.assertEqual(res.status_code, 404)
예제 #2
0
 def test_delete_securitygroup_not_found(self):
     self.mox.StubOutWithMock(db, "securitygroup_get_by_securitygroup_id")
     db.securitygroup_get_by_securitygroup_id(IsA(context.RequestContext), GID, SECURITYGROUP_ID).AndReturn(
         {"processes": []}
     )
     self.mox.StubOutWithMock(db, "securitygroup_delete")
     db.securitygroup_delete(IsA(context.RequestContext), GID, SECURITYGROUP_ID).AndRaise(
         exception.SecuritygroupNotFound(securitygroup_id=SECURITYGROUP_ID)
     )
     self.mox.ReplayAll()
     url = get_base_url(GID) + "/" + SECURITYGROUP_ID
     req = get_request(url, "DELETE")
     res = req.get_response(self.app)
     self.assertEqual(res.status_code, 404)
예제 #3
0
 def test_securitygroup_delete(self):
     gid = "12345678-1234-5678-9123-123456789012"
     self._create_group(gid)
     values_before = self._get_base_values(gid)
     securitygroup = db.securitygroup_create(self.user_ctxt, values_before)
     securitygroup_after = db.securitygroup_delete(
         self.user_ctxt, gid, securitygroup["securitygroup_id"])
     self.assertEqual("DELETING", securitygroup_after["status"])
     self.assertEqual(1, securitygroup_after["deleted"])
     self.assertIsNotNone(securitygroup_after.get("deleted_at"))
예제 #4
0
    def delete(self, req, gid, securitygroup_id):

        def _validate(gid, securitygroup_id):

            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if not uuidutils.is_uuid_like(securitygroup_id):
                raise exception.SecuritygroupNotFound(
                    securitygroup_id=securitygroup_id)

        try:
            _validate(gid, securitygroup_id)
            context = req.environ['rack.context']
            securitygroup = db.securitygroup_get_by_securitygroup_id(
                context, gid, securitygroup_id)
            if securitygroup["processes"]:
                raise exception.SecuritygroupInUse(
                    securitygroup_id=securitygroup_id)
            securitygroup = db.securitygroup_delete(
                context, gid, securitygroup_id)
        except exception.SecuritygroupInUse as exc:
            raise webob.exc.HTTPConflict(explanation=exc.format_message())
        except exception.NotFound as exc:
            raise webob.exc.HTTPNotFound(explanation=exc.format_message())

        try:
            host = self.scheduler_rpcapi.select_destinations(
                context,
                request_spec={},
                filter_properties={})
            self.operator_rpcapi.securitygroup_delete(
                context,
                host["host"],
                neutron_securitygroup_id=securitygroup["neutron_securitygroup"
                                                       "_id"])
        except Exception:
            raise exception.SecuritygroupDeleteFailed()