Last active
December 4, 2022 13:01
-
-
Save niedbalski/f4d9e6714af3f0fcf65d to your computer and use it in GitHub Desktop.
purge-queues.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
""" | |
Purge and delete rabbit queues by prefix and message | |
amount. | |
Usage: | |
{0} prefix 1 | |
""" | |
import sys | |
import pika | |
import subprocess | |
import re | |
import shlex | |
def run(cmd): | |
return subprocess.check_output(shlex.split(cmd)) | |
def get_stuck_queues(prefix="reply", stuck=1): | |
regex = re.compile("(%s_.*)+[\t]+([0-9]+)+$" % prefix) | |
output = run("rabbitmqctl list_queues -p openstack") | |
for queue in output.splitlines(): | |
match = re.match(regex, queue) | |
if match: | |
queue, msgs = match.groups() | |
if int(msgs) >= stuck: | |
yield queue | |
def create_user(): | |
return run("rabbitmqctl add_user drop drop") | |
def grant_permissions(): | |
return run('rabbitmqctl set_permissions -p openstack drop ".*" ".*" ".*"') | |
def drop_user(): | |
return run('rabbitmqctl delete_user drop') | |
def delete_queues(prefix, msgs): | |
credentials = pika.PlainCredentials('drop', 'drop') | |
connection = pika.BlockingConnection(pika.ConnectionParameters( | |
'localhost', 5672, "openstack", credentials)) | |
channel = connection.channel() | |
for queue in get_stuck_queues(prefix=prefix, stuck=int(msgs)): | |
print "Purging queue: %s" % queue | |
channel.queue_purge(queue=queue) | |
channel.queue_delete(queue=queue) | |
connection.close() | |
def main(): | |
if not len(sys.argv) == 3: | |
print >>sys.stderr, __doc__.format(*sys.argv) | |
sys.exit(-1) | |
try: | |
create_user() | |
grant_permissions() | |
delete_queues(*sys.argv[1:]) | |
except Exception as ex: | |
print ex | |
pass | |
finally: | |
drop_user() | |
if __name__ == "__main__": | |
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
root@juju-testing-machine-12:/home/ubuntu# python run.py | |
Purge and delete rabbit queues by prefix and message | |
amount. | |
Usage: | |
run.py prefix 1 | |
root@juju-testing-machine-12:/home/ubuntu# python run.py reply 0 | |
Purging queue: reply_1f4528e4f7da44419391bb452a3a6030 | |
Purging queue: reply_2dddfede8e4847bba87885f0b88ba007 | |
Purging queue: reply_3774514874d74500b7b76a719ea3ded9 | |
Purging queue: reply_3d6237244f3d45449f291c09931a52bf | |
Purging queue: reply_6617b0508a7f43b0a8b56784be449b12 | |
Purging queue: reply_755e25fd7e064995b66b2d73547094e1 | |
Purging queue: reply_9d2a5224a25d4b1db9d217fe038cba4c | |
Purging queue: reply_a8606063b6a746c0842041adf5691e44 | |
Purging queue: reply_b1df57b0ac414dc2af28ed57d53a33ff | |
Purging queue: reply_d17dfc8098a54812a43e0841105e56d0 | |
Purging queue: reply_d312c87d448b47699d71bdadaf714fdc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment