in tools/domspurge/purge.py [0:0]
def parse_args():
parser = argparse.ArgumentParser(description='Purge DOMS data from Cassandra')
cassandra_args = parser.add_argument_group('Cassandra args')
purge_options = parser.add_argument_group('Purge options')
cassandra_args.add_argument('--cassandra', help='The hostname(s) or IP(s) of the Cassandra server(s).',
required=False,
default=['localhost'],
dest='hosts',
nargs='+',
metavar=('localhost', '127.0.0.101'))
cassandra_args.add_argument('-k', '--cassandraKeyspace',
help='The Cassandra keyspace for DOMS data.',
default='doms',
dest='keyspace',
required=False,
metavar='DOMS_KEYSPACE')
cassandra_args.add_argument('--cassandraPort',
help='The port used to connect to Cassandra.',
dest='port',
required=False,
default='9042')
cassandra_args.add_argument('-u', '--cassandra-username',
dest='username', help='The username used to connect to Cassandra.',
required=True, metavar='USERNAME')
cassandra_args.add_argument('-p', '--cassandra-password',
dest='password', help='The password used to connect to Cassandra.',
required=True, metavar='PASSWORD')
cassandra_args.add_argument('--cassandraProtocolVersion',
help='The version of the Cassandra protocol the driver should use.',
required=False,
dest='pv',
choices=['1', '2', '3', '4', '5'],
default='4')
time_before = purge_options.add_mutually_exclusive_group(required=True)
time_before.add_argument('--before',
help='Date & time before which data will be purged. Time entered should be UTC. Do not '
'specify timezone.',
type=du_parser.parse,
dest='before_dt',
metavar='DATETIME',
default=None)
def num_months(s):
v = int(s)
if v <= 0:
raise ValueError('--before-months must be >= 1')
return v
time_before.add_argument('--before-months',
help='Drop all data before n months ago',
type=num_months,
dest='before_mo',
metavar='MONTHS',
default=None)
time_before.add_argument('--keep-completed',
help='Keep all completed executions (only purge failed executions)',
action='store_true',
dest='keep')
time_before.add_argument('--all',
help='Purge ALL data (drops and re-creates keyspace)',
action='store_true',
dest='all')
time_before.add_argument('--recreate-ks',
help=argparse.SUPPRESS,
action='store_true',
dest='recreate')
purge_options.add_argument('--keep-failed',
help='Keep failed executions.',
action='store_true',
dest='keep_failed')
parser.add_argument('--dry-run',
help='Only print the execution ids to be deleted / DB operations to be performed. Do not '
'actually alter the DB',
action='store_true',
dest='dry_run')
parser.add_argument('-y', '--yes',
help='Do not ask for confirmation.',
action='store_true',
dest='yes')
args = parser.parse_args()
global dry_run
global non_interactive
dry_run = args.dry_run
non_interactive = args.yes
if args.recreate:
return args, None, False, False, False, True
if args.all:
if args.keep_failed:
raise ValueError('Mutually exclusive options (purge all & keep) selected')
return args, None, False, False, True, False
if args.keep and args.keep_failed:
raise ValueError('--keep-completed and --keep-failed are set; this will have no effect')
if args.keep:
before = None
elif args.before_dt:
before = args.before_dt
else:
now = datetime.utcnow()
delta = relativedelta(months=-args.before_mo)
before = now + delta
return args, before, args.keep, args.keep_failed, False, False