#!/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 sys
import os

from rapidpro_controller import (get_logger, log_success, log_failure,
                                 COMPONENTS, SERVICE_COMMAND, run_command)

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


def stop_all():
    logger.info("stopping all rapidpro components")

    failed_to_stop = []
    for component in COMPONENTS:
        logger.info(". stopping `{}`".format(component))
        args = [SERVICE_COMMAND, 'stop', component]
        success = run_command(args) == 0
        if success:
            log_success(logger)
        else:
            failed_to_stop.append(component)
            log_failure(logger)

    if not failed_to_stop:
        logger.info("All components now stopped.")
    else:
        logger.error("Could not stop all components: {}"
                     .format(",".join(failed_to_stop)))
        return 1
    return 0


if __name__ == '__main__':
    sys.exit(stop_all())
