forked from caoXF/curve
116 lines
6.9 KiB
Python
116 lines
6.9 KiB
Python
#!/usr/bin/env python
|
|
# coding=utf-8
|
|
|
|
import argparse
|
|
|
|
def get_parser():
|
|
parser = argparse.ArgumentParser(
|
|
prog='snaptool',
|
|
description='snapshot tool\n\n',
|
|
)
|
|
parser.add_argument("--confpath", help='config file path of snaptool', type=str, default='/etc/curve/snapshot_tools.conf')
|
|
subparsers = parser.add_subparsers(dest='optype')
|
|
|
|
# query-snapshot option
|
|
subparser = subparsers.add_parser("query-snapshot", help="query snapshot by condition")
|
|
subparser.add_argument("--uuid", help='query snapshot by uuid', type=str)
|
|
subparser.add_argument("--user", help='query snapshot by user', type=str)
|
|
subparser.add_argument("--filename", help='query snapshot by filename', type=str)
|
|
subparser.add_argument("--status", help='query snapshot by status', type=str, choices=['done', 'in-progress', 'deleting', 'errorDeleting', 'canceling', 'error'])
|
|
|
|
# query-clone-recover option
|
|
subparser = subparsers.add_parser("query-clone-recover", help="query clone and recover task by condition")
|
|
group =subparser.add_mutually_exclusive_group(required=True)
|
|
group.add_argument("--src", help='query clone and recover task by source', type=str)
|
|
group.add_argument("--dest", help='query clone and recover task by destinition', type=str)
|
|
group.add_argument("--user", help='query clone and recover task by user', type=str)
|
|
group.add_argument("--taskid", help='query clone and recover task by taskid', type=str)
|
|
group.add_argument("--status", help='query clone and recover task by status', type=str, choices=['done', 'cloning', 'recovering', 'cleaning', 'errorCleaning', 'error', 'retrying', 'metaInstalled'])
|
|
group.add_argument("--all", help='query clone and recover task all', action='store_true')
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--clone", help='only query clone task', action='store_true')
|
|
group.add_argument("--recover", help='only query recover task', action='store_true')
|
|
|
|
# snapshot-status option
|
|
subparser = subparsers.add_parser("snapshot-status", help="show the snapshot status")
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--user", help='show the snapshot status by user', type=str)
|
|
group.add_argument("--filename", help='show the snapshot status by filename', type=str)
|
|
|
|
# clone-recover-status option
|
|
subparser = subparsers.add_parser("clone-recover-status", help="query clone and recover task by condition")
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--src", help='show the clone recover status by source', type=str)
|
|
group.add_argument("--dest", help='show the clone recover status by destinition', type=str)
|
|
group.add_argument("--user", help='show the clone recover status by user', type=str)
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--clone", help='only query clone task', action='store_true')
|
|
group.add_argument("--recover", help='only query recover task', action='store_true')
|
|
|
|
# delete-snapshot option
|
|
subparser = subparsers.add_parser("delete-snapshot", help="delete snapshot by condition")
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--uuid", help='delete snapshot by uuid', type=str)
|
|
group.add_argument("--user", help='delete snapshot by user', type=str)
|
|
group.add_argument("--filename", help='delete snapshot by filename', type=str)
|
|
group.add_argument("--all", help='delete all snapshots', action='store_true')
|
|
subparser.add_argument("--failed", help='delete failed snapshot', action='store_true')
|
|
|
|
# cancel-snapshot option
|
|
subparser = subparsers.add_parser("cancel-snapshot", help="cancel snapshot by condition")
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--uuid", help='delete snapshot by uuid', type=str)
|
|
group.add_argument("--user", help='delete snapshot by user', type=str)
|
|
group.add_argument("--filename", help='delete snapshot by filename', type=str)
|
|
group.add_argument("--all", help='delete all snapshots', action='store_true')
|
|
|
|
# clean-recover option
|
|
subparser = subparsers.add_parser("clean-recover", help="clean recover by condition")
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--taskid", help='clean recover by taskid', type=str)
|
|
group.add_argument("--user", help='clean recover by user', type=str)
|
|
group.add_argument("--src", help='clean recover by src', type=str)
|
|
group.add_argument("--dest", help='clean recover by dest', type=str)
|
|
group.add_argument("--all", help='clean all recovers', action='store_true')
|
|
subparser.add_argument("--failed", help='clean failed recover', action='store_true')
|
|
|
|
# clean-clone option
|
|
subparser = subparsers.add_parser("clean-clone", help="delete clone by condition")
|
|
group =subparser.add_mutually_exclusive_group()
|
|
group.add_argument("--taskid", help='clean clone by taskid', type=str)
|
|
group.add_argument("--user", help='clean clone by user', type=str)
|
|
group.add_argument("--src", help='clean clone by src', type=str)
|
|
group.add_argument("--dest", help='clean clone by dest', type=str)
|
|
group.add_argument("--all", help='clean all clones', action='store_true')
|
|
subparser.add_argument("--failed", help='clean failed clone', action='store_true')
|
|
|
|
# create-snapshot option
|
|
subparser = subparsers.add_parser("create-snapshot", help="create a snapshot")
|
|
subparser.add_argument("--user", help='user who need to create', type=str, required=True)
|
|
subparser.add_argument("--filename", help='file witch need to do snap', type=str, required=True)
|
|
subparser.add_argument("--snapshotname", help='snapshot name', type=str, required=True)
|
|
|
|
# create-clone option
|
|
subparser = subparsers.add_parser("clone", help="do clone")
|
|
subparser.add_argument("--user", help='user who need to clone', type=str, required=True)
|
|
subparser.add_argument("--src", help='source filename or uuid', type=str, required=True)
|
|
subparser.add_argument("--dest", help='dest file name', type=str, required=True)
|
|
subparser.add_argument("--lazy", help='need lazy', type=str, choices=["true", "false"], required=True)
|
|
|
|
# create-recover option
|
|
subparser = subparsers.add_parser("recover", help="do recover")
|
|
subparser.add_argument("--user", help='user who need to recover', type=str, required=True)
|
|
subparser.add_argument("--src", help='source filename or uuid', type=str, required=True)
|
|
subparser.add_argument("--dest", help='dest file name', type=str, required=True)
|
|
subparser.add_argument("--lazy", help='need lazy', type=str, choices=["true", "false"], required=True)
|
|
|
|
# flatten option
|
|
subparser = subparsers.add_parser("flatten", help="do flatten lazy clone/recover")
|
|
subparser.add_argument("--user", help='user', type=str, required=True)
|
|
subparser.add_argument("--taskid", help='lazy clone/recover task id', type=str, required=True)
|
|
|
|
return parser
|
|
|
|
def help():
|
|
get_parser().print_usage()
|