blob: 60879d98075807228439f9499f7d17f102a9208e [file] [log] [blame]
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
''' args.py '''
import argparse
import os
import sys
import heron.tools.common.src.python.utils.config as config
def add_titles(parser):
'''
:param parser:
:return:
'''
# pylint: disable=protected-access
parser._positionals.title = "Required arguments"
parser._optionals.title = "Optional arguments"
return parser
def add_verbose(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'--verbose',
default=False,
help='Verbose mode. Increases logging level to show debug messages')
return parser
def add_topology(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'topology-name',
help='Name of the topology')
return parser
def add_topology_file(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'topology-file-name',
help='Topology jar/tar/zip file')
return parser
def add_topology_class(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'topology-class-name',
help='Topology class name')
return parser
def add_cluster_role_env(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'cluster/[role]/[env]',
help='Cluster, role, and environment to run topology'
)
return parser
def add_service_url(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'--service-url',
default="",
help='API service end point')
return parser
def add_config(parser):
'''
:param parser:
:return:
'''
# the default config path
default_config_path = config.get_heron_conf_dir()
parser.add_argument(
'--config-path',
default=os.path.join(config.get_heron_dir(), default_config_path),
help='Path to cluster configuration files')
parser.add_argument(
'--config-property',
metavar='PROPERTY=VALUE',
action='append',
default=[],
help='Configuration properties that overrides default options')
return parser
def add_system_property(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'--topology-main-jvm-property',
metavar='PROPERTY=VALUE',
action="append",
default=[],
help='JVM system property for executing topology main')
return parser
def add_deactive_deploy(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'--deploy-deactivated',
default=False,
help='Deploy topology in deactivated mode')
return parser
def add_extra_launch_classpath(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'--extra-launch-classpath',
metavar='CLASS_PATH',
default="",
help='Additional JVM class path for launching topology')
return parser
def add_release_yaml_file(parser):
'''
:param parser:
:return:
'''
parser.add_argument(
'--release-yaml-file',
default="",
help='YAML file that contains release info. Default value is the '
'path of the release file in this CLI')
return parser
def add_dry_run(parser):
'''
:param parser:
:return:
'''
default_format = 'table'
resp_formats = ['raw', 'table', 'colored_table', 'json']
available_options = ', '.join(['%s' % opt for opt in resp_formats])
def dry_run_resp_format(value):
if value not in resp_formats:
raise argparse.ArgumentTypeError(
'Invalid dry-run response format: %s. Available formats: %s'
% (value, available_options))
return value
parser.add_argument(
'--dry-run',
default=False,
action='store_true',
help='Enable dry-run mode. Information about '
'the command will print but no action will be taken on the topology')
parser.add_argument(
'--dry-run-format',
metavar='DRY_RUN_FORMAT',
default='colored_table' if sys.stdout.isatty() else 'table',
type=dry_run_resp_format,
help='The format of the dry-run output ([%s], default=%s). '
'Ignored when dry-run mode is not enabled' % ('|'.join(resp_formats), default_format))
return parser