Skip to content
Snippets Groups Projects
manage_queue.py 2.63 KiB
Newer Older
#!/bin/env python
from mailmanclient import Client
import os
# import sys
# import urllib2
import argparse
try:
    import json
except ImportError:
    import simplejson as json


def get_client(args):
    client = Client(args.core_uri, args.core_user, args.core_password)
    return client


def queue_list(args):
    client = get_client(args)
    for queue_name in args.queues:
        if queue_name not in client.queues:
            continue
        queue = client.queues[queue_name]
        print("\n".join(queue.files))


def queue_prune(args):
    """Purge queue on OS level (ignoring mailman for the most part)"""
    client = get_client(args)
    for queue_name in args.queues:
        if queue_name not in client.queues:
            continue
        queue = client.queues[queue_name]
        queue_dir = queue.rest_data['directory']
        print("\n".join(queue.files))
        for queue_file in os.listdir(queue_dir):
            name, ext = os.path.split(queue_file)
            if name in queue.files:
                os.remove(os.path.join(queue_dir, queue_file))


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description="Manage queues")

    CORE_URI = os.environ.get('MAILMAN_CORE_URI',
                              'http://mailman-core:8001/3.1')
    CORE_USER = os.environ.get('MAILMAN_REST_USER', 'restadmin')
    CORE_PASS = os.environ.get('MAILMAN_REST_PASSWORD', 'restpass')

    # parser.add_argument('--members', action='store_true', default=False)
    # parser.add_argument('--owners', action='store_true', default=False)
    # parser.add_argument('--nonmembers', action='store_true', default=False)
    # parser.add_argument('--moderators', action='store_true', default=False)
    parser.add_argument('--core-uri', dest='core_uri',
                        default=CORE_URI)
    parser.add_argument('--rest-user', dest='core_user',
                        default=CORE_USER)
    parser.add_argument('--rest-password', dest='core_password',
                        default=CORE_PASS)
    parser.add_argument('queue', dest='queues', action='append',
                        default=None)
    subparsers = parser.add_subparsers(help="Queue Operations")

    list_parser = subparsers.add_parser('list')
    list_parser.set_defaults(funct=queue_list)

    prune_parser = subparsers.add_parser('prune')
    prune_parser.set_defaults(funct=queue_prune)

    args = parser.parse_args()

    # client = Client(CORE_URI, CORE_USER, CORE_PASS)
    client = Client(args.core_uri, args.core_user, args.core_password)

    for queue_name in args.queues:
        if queue_name not in client.queues:
            continue
        queue = client.queues[queue_name]