def add_boto_cli_arguments(parser, include_log_level=True, include_credentials=True, include_region=True): group = get_group(parser, 'boto') if include_log_level: group.add_argument( '--boto-log-level', default=DEFAULT['log_level'](), choices=LEVELS.keys(), help="Verbosity of boto logging. (default: %(default)s)", ) if include_credentials: group.add_argument( '--boto-access-key', default=DEFAULT['access_key'](), help="AWS Access Key to use. Defaults to ENV[{0}]".format(ACCESS_KEY), ) group.add_argument( '--boto-secret-key', default=DEFAULT['secret_key'](), help="AWS Secret Key to use. Defaults to ENV[{0}]".format(SECRET_KEY), ) if include_region: group.add_argument( '--boto-region', default=DEFAULT['region'](), choices=[r.name for r in boto.ec2.regions()], help=( "EC2 Region to connect to. Defaults to ENV[{0}]. If not ENV set, defaults to us-east-1.".format(REGION) ), )
def add_boto_cli_arguments(parser): group = get_group(parser, 'boto') group.add_argument( '--boto-log-level', default=DEFAULT['log_level'](), choices=LEVELS.keys(), help='Verbosity of boto logging. (default: %(default)s)' ) group.add_argument( '--boto-access-key', default=DEFAULT['access_key'](), help='AWS Access Key to use. Defaults to ENV[%s]' % ACCESS_KEY, ) group.add_argument( '--boto-secret-key', default=DEFAULT['secret_key'](), help='AWS Secret Key to use. Defaults to ENV[%s]' % SECRET_KEY, ) group.add_argument( '--boto-region', default=DEFAULT['region'](), choices=[r.name for r in boto.ec2.regions()], help='EC2 Region to connect to. (default: %(default)s)', )
def add_cloud_formation_cli_arguments(parser, include_boto_arguments=True, include_bucket_arguments=True): """ Utility function for adding CloudFormation specific CLI arguments. """ if include_boto_arguments: # GOTCHA: Since many modules use krux_boto, the krux_boto's CLI arguments can be included twice, # causing an error. This creates a way to circumvent that. # Add all the boto arguments add_boto_cli_arguments(parser) add_s3_cli_arguments(parser, False) # Add those specific to the application group = get_group(parser, NAME) if include_bucket_arguments: # If you want to fix the S3 bucket used to upload templates, do not use these arguments group.add_argument( '--bucket-name', type=str, default=CloudFormation.DEFAULT_S3_BUCKET, help='Name of the bucket to upload cloud formation template to (Default: %(default)s)' ) group.add_argument( '--bucket-region', type=str, default=CloudFormation.DEFAULT_S3_REGION, help='Region of the bucket to upload cloud formation template to (Default: %(default)s)' )
def add_boto_cli_arguments(parser): group = get_group(parser, 'boto') group.add_argument( '--boto-log-level', default=DEFAULT['log_level'](), choices=LEVELS.keys(), help='Verbosity of boto logging. (default: %(default)s)' ) group.add_argument( '--boto-access-key', default=DEFAULT['access_key'](), help='AWS Access Key to use. Defaults to ENV[{0}]'.format(ACCESS_KEY) ) group.add_argument( '--boto-secret-key', default=DEFAULT['secret_key'](), help='AWS Secret Key to use. Defaults to ENV[{0}]'.format(SECRET_KEY), ) group.add_argument( '--boto-region', default=DEFAULT['region'](), choices=[r.name for r in boto.ec2.regions()], help='EC2 Region to connect to. (default: %(default)s)', )
def add_cloud_health_cli_arguments(parser): # Add those specific to the application group = get_group(parser, NAME) group.add_argument( 'api_key', type=str, help="API key to retrieve data", )
def add_cli_arguments(self, parser): super(TestApplication, self).add_cli_arguments(parser) group = get_group(parser, self.name) group.add_argument( 'test', type=str, help='Purely exists for the unit test', )
def add_elb_cli_arguments(parser, include_boto_arguments=True): """ Utility function for adding ELB specific CLI arguments. """ if include_boto_arguments: # GOTCHA: Since ELB both uses Boto, the Boto's CLI arguments can be included multiple times, # when used with other libraries, causing an error. This creates a way to circumvent that. # Add all the boto arguments add_boto_cli_arguments(parser) # Add those specific to the application group = get_group(parser, NAME)
def add_sqs_cli_arguments(parser, include_boto_arguments=True): """ Utility function for adding SQS specific CLI arguments. """ if include_boto_arguments: # GOTCHA: Since many modules use krux_boto, the krux_boto's CLI arguments can be included twice, # causing an error. This creates a way to circumvent that. # Add all the boto arguments add_boto_cli_arguments(parser) # Add those specific to the application group = get_group(parser, NAME)
def test_get_new_group(): """ Getting an argument group that doesn't exist. """ name = 'new_group' mock_parser = MagicMock(spec=ArgumentParser) mock_parser._action_groups = [] mock_parser.add_argument_group = MagicMock(return_value = name) group = cli.get_group(mock_parser, name) mock_parser.add_argument_group.assert_called_once_with(name) assert_equal(group, name)
def add_redis_cli_arguments(parser): group = get_group(parser, "redis") group.add_argument( "--redis-master", default="redis://localhost:6379/0", help="Redis master url (default: %(default)s)" ) group.add_argument("--redis-slave", action="append", default=[], help="Redis slave urls (default: %(default)s)") group.add_argument( "--redis-timeout", default=DEFAULT_TIMEOUT, help="Timeout for redis calls, in seconds (default: %(default)s)" )
def test_get_existing_group(): """ Getting an argument group that already exists. """ name = 'existing' mock_group = MagicMock() mock_group.title = name mock_parser = MagicMock(spec=ArgumentParser) mock_parser._action_groups = [mock_group] group = cli.get_group(mock_parser, name) assert_equal(mock_parser.add_argument_group.call_count, 0) assert_equal(group, mock_group)
def add_cli_arguments(self, parser): """ Adds command line arguments, these options can be seen using -h when calling the app. """ super(MarathonCliApp, self).add_cli_arguments(parser) group = get_group(parser, self.name) group.add_argument( '--host', default='localhost', help='Marathon server host name or IP address. ', ) group.add_argument( '--port', default='8080', help='Marathon server port. ', ) group.add_argument( '--username', default=os.getenv('MARATHON_HTTP_USERNAME'), help='Marathon server username (default: %(default)s)') group.add_argument( '--password', default=os.getenv('MARATHON_HTTP_PASSWORD'), help='Marathon server password (default: %(default)s)') group.add_argument( '--list-apps', action='store_true', default=False, help='Use flag to list all marathon apps. ', ) group.add_argument( '--config-file', default=None, help='Marathon config file to configure app. ', ) group.add_argument( '--get-app', default=False, help='app flag can be used to pass an app name to get ' 'more detailed info on a running app ', ) group.add_argument('--delete', default=None, help='delete the named app, if it exists') group.add_argument('--json', action='store_true', default=False, help='Show output in JSON format')
def add_cli_arguments(self, parser): """ Add CloudHealth-related command-line arguments to the given parser. :argument parser: parser instance to which the arguments will be added """ # Call to the superclass first super(Application, self).add_cli_arguments(parser) group = get_group(parser, self.name) group.add_argument( 'report_id', type=long, help='ID of the report to export to graphite', ) group.add_argument( '-n', '--report-name', type=str, default='', help="Name of the report for stats (default: %(default)s)", ) group.add_argument( '--set-date', type=str, default=None, help= "Retrieve cost history data for specific date, depending on interval. (ex: 'YYYY-MM-DD' for daily)", ) group.add_argument( '--date-format', type=str, default='%Y-%m-%d', help= "Format string to use to parse the date passed by Cloud Health (default: %(default)s)", ) group.add_argument( '--interval', type=str, choices=[interval.name for interval in Interval], default=Interval.hourly.name, help="Time interval to be used in report (default: %(default)s)", )
def add_flowdock_listener_cli_arguments(parser): group = get_group(parser, NAME) group.add_argument( '--flowdock-token', type=str, help="Flowdock API token. If provided, will post to Flowdock. (default: %(default)s)", default=None, ) group.add_argument( '--urgent', type=int, help="If the event is closer than this number of hours, send an @team notification. (default: %(default)s)", default=FlowdockListener.DEFAULT_URGENT_THRESHOLD_HOURS )
def add_cli_arguments(self, parser): """ Add CloudHealth-related command-line arguments to the given parser. :argument parser: parser instance to which the arguments will be added """ # Call to the superclass first super(Application, self).add_cli_arguments(parser) group = get_group(parser, self.name) group.add_argument( 'report_id', type=long, help='ID of the report to export to graphite', ) group.add_argument( '-n', '--report-name', type=str, default='', help="Name of the report for stats (default: %(default)s)", ) group.add_argument( '--set-date', type=str, default=None, help="Retrieve cost history data for specific date, depending on interval. (ex: 'YYYY-MM-DD' for daily)", ) group.add_argument( '--date-format', type=str, default='%Y-%m-%d', help="Format string to use to parse the date passed by Cloud Health (default: %(default)s)", ) group.add_argument( '--interval', type=str, choices=[interval.name for interval in Interval], default=Interval.hourly.name, help="Time interval to be used in report (default: %(default)s)", )
def add_sentinel_cli_arguments(parser): group = get_group(parser, GROUP_NAME) group.add_argument( '--sentinel', default=[DEFAULT_SENTINEL_HOSTPORT], nargs='*', help='HOST:PORT pairs of Redis Sentinel instances to contact. ' 'default: %(default)s', ) group.add_argument( '--sentinel-timeout', default=DEFAULT_REDIS_TIMEOUT, help='Timeout for Redis Sentinel calls, in seconds ' '(default: %(default)s)', )
def add_cli_arguments(self, parser): # Call to the superclass. super(Application, self).add_cli_arguments(parser) group = get_group(parser, self.name) group.add_argument( '-e', '--exclude', nargs='*', type=str, default=[], help='List of user names that should be excluded' ) group.add_argument( '--exclude-file', type=open, help='Path to the JSON file where list of user names that should be excluded are stored' )
def add_tornado_args(parser): """ Add tornado-related command-line arguments to the given parser. :argument object parser: :py:class:`ArgumentParser <python3:argparse.ArgumentParser>` instance to which the arguments will be added. """ group = get_group(parser, 'tornado') group.add_argument( '--address', default=DEFAULT_ADDRESS, help='The IP address the application will bind to. ' '(default: %(default)s)' ) group.add_argument( '--http-port', default=DEFAULT_PORT, type=int, help='The TCP port the application will listen on for HTTP ' 'connections. (default: %(default)s)' ) group.add_argument( '--blocking-log-threshold', default=DEFAULT_BLOCKING_LOG_THRESHOLD, type=int, help='The IOLoops blocking log treshold. ' '(default: %(default)s)' ) group.add_argument( '--development', default=False, action='store_true', help='Automatically reload application when source files change.' ) return parser
def add_kafka_manager_api_cli_arguments(parser): """ Utility function for adding Kafka Manager specific CLI arguments. """ # Add those specific to the application group = get_group(parser, NAME) group.add_argument( 'hostname', type=str, help='Kafka Manager hostname.', ) group.add_argument( '--no-use-ssl', action='store_false', dest='use_ssl', default=True, help='Set this flag to turn off HTTPS and use HTTP' )
def add_redis_cli_arguments(parser): group = get_group(parser, GROUP_NAME) group.add_argument( '--redis-master', default=DEFAULT_REDIS_MASTER, help='Redis master url (default: %(default)s)', ) group.add_argument( '--redis-slave', action='append', default=[], help='Redis slave urls (default: %(default)s)' ) group.add_argument( '--redis-timeout', default=DEFAULT_REDIS_TIMEOUT, help='Timeout for redis calls, in seconds (default: %(default)s)' )
def add_jira_listener_cli_argumemts(parser): group = get_group(parser, NAME) group.add_argument( '--jira-username', type=str, help="Username to login to Jira. If provided, will add a comment to Jira tickets. (default: %(default)s)", default=None, ) group.add_argument( '--jira-password', type=str, help="Password for the Jira user. (default: %(default)s)", default=None, ) group.add_argument( '--jira-base-url', type=str, help='Base URL (domain) of the JIRA for the organization. (default: %(default)s)', default=KRUX_JIRA_URL, )
def add_scheduler_cli_arguments(parser): group = get_group(parser, 'scheduler') ### All our jobs only use minute & hour at this point ### so don't bother exposing more than that group.add_argument( '--scheduler-minute', default = None, help = 'Comma separated list of minute mark(s) to run on. ' 'This overrides any hardcoded arguments (default: %(default)s)', ) group.add_argument( '--scheduler-hour', default = None, help = 'Comma separated list of hour mark(s) to run on. ' 'This overrides any hardcoded arguments (default: %(default)s)', ) group.add_argument( '--scheduler-daemonize', default = False, action = 'store_true', help = 'Run scheduled jobs in separate threads (default: %(default)s)', ) group.add_argument( '--scheduler-exit-after-job', default = False, action = 'store_true', help = 'Exit the application after a job has completed. Very useful for ' 'RAM hungry applications whose only purpose is to run a single job ' 'but not otherwise. Requires a process monitor to restart if it exits ' '(default: %(default)s)', )
def add_ec2_event_checker_cli_arguments(parser): group = get_group(parser, NAME)
def add_cli_arguments(self, parser): super(OverrideArgsApplication, self).add_cli_arguments(parser) group = cli.get_group(parser, 'test_group') group.add_argument('--test-arg')