#!/usr/bin/python3

import re
import sys
import time
from hook_invoker_lib.service import Service
from hook_invoker_lib.hook import template_parser, print_err
from hook_invoker_lib.hook import srv_link, args_volume_type_paser


if __name__ == "__main__":
    name = template_parser()
    if name is None:
        print_err('not supported template call {}'.format(name))
        sys.exit(1)

    exist, target_path = srv_link()
    volumes, _ = args_volume_type_paser()
    need_handle = any(re.match(r'^\{}\/'.format(volume), target_path) for volume in volumes) if target_path is not None else False
    if not exist or target_path is None or not need_handle:
        print_err('only run when srv link and target exist')
        sys.exit(1)

    service = Service(name)
    if service is None:
        sys.exit(0)

    if not service.need_care:
        print('skip not enabled service {}'.format(name))
        sys.exit(0)

    print('Restart {} service'.format(name))
    try:
        if not service.mask():
            print_err('mask {} failed'.format(name))
            sys.exit(2)

        if not service.stop():
            print_err('stop {} failed'.format(name))
            sys.exit(2)
    finally:
        if not service.unmask():
            print_err('unmask {} failed'.format(name))

        if not service.start():
            print_err('start {} failed'.format(name))

    time.sleep(0.25)
    sys.exit(0)
