Exemplo n.º 1
0
 def handle(self, *args, **options):
     rabbit_classes = ["queues"]
     if options["all"]:
         rabbit_classes = ["queues", "exchanges"]
     api_url = getattr(settings, "BROKER_API_URL")
     delete_rabbit_objects(api_url,
                           rabbit_classes=rabbit_classes,
                           force=options["force"])
Exemplo n.º 2
0
    def test_delete_rabbit_objects(self, mock_get_all_rabbitmq_objects):
        example_api = "https://example/api"
        example_vhost = "abcd_vhost"
        example_queues = [
            {
                "name": "queue1",
                "consumers": 0,
                "messages": 0,
                "vhost": example_vhost
            },
            {
                "name": "queue2",
                "consumers": 1,
                "messages": 1,
                "vhost": example_vhost
            },
        ]
        example_exchanges = [
            {
                "name": "exchange1",
                "vhost": example_vhost
            },
            {
                "name": "exchange2",
                "vhost": example_vhost
            },
        ]

        return_values = {
            "queues": example_queues,
            "exchanges": example_exchanges
        }

        mock_get_all_rabbitmq_objects.side_effect = lambda api, rabbit_class: return_values[
            rabbit_class]

        # Deletes only the empty queue
        with requests_mock.Mocker() as requests_mocker:
            requests_mocker.delete(
                f"{example_api}/queues/{example_vhost}/{example_queues[0]['name']}"
            )
            delete_rabbit_objects(example_api)
            mock_get_all_rabbitmq_objects.assert_called_once_with(
                example_api, "queues")
            self.assertEquals(requests_mocker.call_count, 1)
            mock_get_all_rabbitmq_objects.reset_mock()

        # Deletes only the empty queue and exchanges
        with requests_mock.Mocker() as requests_mocker:
            requests_mocker.delete(
                f"{example_api}/queues/{example_vhost}/{example_queues[0]['name']}"
            )
            requests_mocker.delete(
                f"{example_api}/exchanges/{example_vhost}/{example_exchanges[0]['name']}"
            )
            requests_mocker.delete(
                f"{example_api}/exchanges/{example_vhost}/{example_exchanges[1]['name']}"
            )
            delete_rabbit_objects(example_api,
                                  rabbit_classes=["queues", "exchanges"])
            mock_get_all_rabbitmq_objects.assert_has_calls(
                [call(example_api, "queues"),
                 call(example_api, "exchanges")])
            self.assertEquals(requests_mocker.call_count, 3)
            mock_get_all_rabbitmq_objects.reset_mock()

        # Deletes all queues
        with requests_mock.Mocker() as requests_mocker:
            requests_mocker.delete(
                f"{example_api}/queues/{example_vhost}/{example_queues[0]['name']}"
            )
            requests_mocker.delete(
                f"{example_api}/queues/{example_vhost}/{example_queues[1]['name']}"
            )
            delete_rabbit_objects(example_api, force=True)
            mock_get_all_rabbitmq_objects.assert_called_once_with(
                example_api, "queues")
            self.assertEquals(requests_mocker.call_count, 2)
            mock_get_all_rabbitmq_objects.reset_mock()
Exemplo n.º 3
0
def clean_up_queues_task():
    """Deletes all of the queues that don't have any consumers or messages"""
    api_url = getattr(settings, "BROKER_API_URL")
    delete_rabbit_objects(api_url, rabbit_classes=["queues", "exchanges"])