Exemplo n.º 1
0
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)
            ),
        )
Exemplo n.º 2
0
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)'
        )
Exemplo n.º 4
0
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)
            ),
        )
Exemplo n.º 5
0
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)',
    )
Exemplo n.º 6
0
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",
    )
Exemplo n.º 7
0
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",
    )
Exemplo n.º 8
0
    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',
        )
Exemplo n.º 9
0
    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',
        )
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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)
Exemplo n.º 13
0
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)"
    )
Exemplo n.º 14
0
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)
Exemplo n.º 15
0
    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')
Exemplo n.º 16
0
    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)",
        )
Exemplo n.º 17
0
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)",
        )
Exemplo n.º 19
0
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)',
    )
Exemplo n.º 20
0
    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'
        )
Exemplo n.º 21
0
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'
    )
Exemplo n.º 23
0
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)'
    )
Exemplo n.º 24
0
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,
    )
Exemplo n.º 25
0
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)',
    )
Exemplo n.º 26
0
def add_ec2_event_checker_cli_arguments(parser):
    group = get_group(parser, NAME)
Exemplo n.º 27
0
 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')