from argparse import ArgumentParser import argparse import yaml import os # from weir import zfs, process from .image import command_image_build, \ command_image_tag, \ command_image_untag, \ command_image_list, \ command_image_prune, \ command_image_remove from .volume import command_volume_create, \ command_volume_prune, \ command_volume_list, \ command_volume_tag, \ command_volume_untag import sys from .zfs import zfs_init from .jail import command_jail_create, \ command_jail_start, \ command_jail_stop, \ command_jail_remove, \ command_jail_exec, \ command_jail_run, \ command_jail_list, \ command_jail_tag, \ command_jail_untag, \ command_jail_prune def create_parser(): parser_top = ArgumentParser() subparsers_top = parser_top.add_subparsers() # image subparsers = subparsers_top.add_parser('image').add_subparsers() parser = subparsers.add_parser('build') parser.set_defaults(func=command_image_build) parser.add_argument('focker_dir', type=str) parser.add_argument('--tags', '-t', type=str, nargs='+', default=[]) parser = subparsers.add_parser('tag') parser.set_defaults(func=command_image_tag) parser.add_argument('reference', type=str) parser.add_argument('tags', type=str, nargs='+') parser = subparsers.add_parser('untag') parser.set_defaults(func=command_image_untag) parser.add_argument('tags', type=str, nargs='+', default=[]) parser = subparsers.add_parser('list') parser.set_defaults(func=command_image_list) parser.add_argument('--full-sha256', '-f', action='store_true') parser = subparsers.add_parser('prune') parser.set_defaults(func=command_image_prune) parser = subparsers.add_parser('remove') parser.set_defaults(func=command_image_remove) parser.add_argument('reference', type=str) # parser.add_argument('--remove-children', '-r', action='store_true') parser.add_argument('--remove-dependents', '-R', action='store_true') # jail subparsers = subparsers_top.add_parser('jail').add_subparsers() parser = subparsers.add_parser('create') parser.set_defaults(func=command_jail_create) parser.add_argument('image', type=str) parser.add_argument('--command', '-c', type=str, default='/bin/sh') parser.add_argument('--tags', '-t', type=str, nargs='+', default=[]) parser.add_argument('--env', '-e', type=str, nargs='+', default=[]) parser.add_argument('--mounts', '-m', type=str, nargs='+', default=[]) parser.add_argument('--hostname', '-n', type=str) parser = subparsers.add_parser('start') parser.set_defaults(func=command_jail_start) parser.add_argument('reference', type=str) parser = subparsers.add_parser('stop') parser.set_defaults(func=command_jail_stop) parser.add_argument('reference', type=str) parser = subparsers.add_parser('remove') parser.set_defaults(func=command_jail_remove) parser.add_argument('reference', type=str) parser = subparsers.add_parser('exec') parser.set_defaults(func=command_jail_exec) parser.add_argument('reference', type=str) parser.add_argument('command', type=str, nargs=argparse.REMAINDER, default=['/bin/sh']) parser = subparsers.add_parser('run') parser.set_defaults(func=command_jail_run) parser.add_argument('image', type=str) parser.add_argument('--command', '-c', type=str, default='/bin/sh') parser.add_argument('--mounts', '-m', type=str, nargs='+', default=[]) parser = subparsers.add_parser('list') parser.set_defaults(func=command_jail_list) parser.add_argument('--full-sha256', '-f', action='store_true') parser = subparsers.add_parser('tag') parser.set_defaults(func=command_jail_tag) parser.add_argument('reference', type=str) parser.add_argument('tags', type=str, nargs='+') parser = subparsers.add_parser('untag') parser.set_defaults(func=command_jail_untag) parser.add_argument('tags', type=str, nargs='+') parser = subparsers.add_parser('prune') parser.set_defaults(func=command_jail_prune) parser.add_argument('--force', '-f', action='store_true') # volume subparsers = subparsers_top.add_parser('volume').add_subparsers() parser = subparsers.add_parser('create') parser.set_defaults(func=command_volume_create) parser.add_argument('--tags', '-t', type=str, nargs='+', default=[]) parser = subparsers.add_parser('prune') parser.set_defaults(func=command_volume_prune) parser = subparsers.add_parser('list') parser.set_defaults(func=command_volume_list) parser.add_argument('--full-sha256', '-f', action='store_true') parser = subparsers.add_parser('tag') parser.set_defaults(func=command_volume_tag) parser.add_argument('reference', type=str) parser.add_argument('tags', type=str, nargs='+') parser = subparsers.add_parser('untag') parser.set_defaults(func=command_volume_untag) parser.add_argument('tags', type=str, nargs='+') return parser_top def main(): zfs_init() parser = create_parser() args = parser.parse_args() if not hasattr(args, 'func'): sys.exit('You must choose a mode') args.func(args) if __name__ == '__main__': main()