#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim: ai ts=4 sts=4 et sw=4 nu

from __future__ import (unicode_literals, absolute_import,
                        division, print_function)
import os
import sys

from termcolor import colored

from rapidpro_controller import (get_logger, get_color, log_success,
                                 log_failure, CLUSTER_MODES,
                                 THIS_SERVER)
from rapidpro_controller.cluster import set_cluster_mode

logger = get_logger(os.path.basename(__file__))


def main(args):
    if not len(args):
        logger.error("new mode not specified. Aborting.\n"
                     "Available modes: {}".format(",".join(CLUSTER_MODES)))
        return 1

    mode = args[0]
    peer = args[1] if len(args) > 1 else THIS_SERVER

    if mode not in CLUSTER_MODES:
        logger.error("Unable to change to mode `{}` which doesnt exist."
                     .format(mode))
        return 1

    logger.info("changing cluster mode to `{}` for `{}`".format(mode, peer))
    try:
        assert set_cluster_mode(mode, peer)
    except:
        log_failure(logger)
        return 1

    log_success(logger, msg="changed server's cluster mode to: `{}`"
                            .format(colored(mode, get_color(mode))))
    return 0


if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))
