def validate_profile(profile): if not is_existing_profile(profile): raise ValidationError(f"Invalid profile provided: {profile}")
def main(): if 'AWS_PROFILE' in os.environ: default_profile = os.environ['AWS_PROFILE'] else: default_profile = 'default' if 'AWS_DEFAULT_REGION' in os.environ: default_region = os.environ['AWS_DEFAULT_REGION'] else: default_region = 'eu-west-1' parser = argparse.ArgumentParser(description=__description__) parser.add_argument('-v', '--verbose', help='increase output verbosity', action='store_true') parser.add_argument( '--version', action='version', version='%(prog)s {version}'.format(version=__version__)) subparsers = parser.add_subparsers(title='subcommands', dest='subcommand', metavar='{session, list}') # 'session' subcommand session_parser = subparsers.add_parser( 'session', help='Open new session on instance and connect to it') session_parser.add_argument('-p', '--profile', help='AWS profile to use', default=default_profile) session_parser.add_argument('-r', '--region', help='AWS region to use', default=default_region) session_parser.add_argument('instance_name', help='Instance we wish to open session to') ls_parser = subparsers.add_parser('list', aliases=['ls'], help='List available instances') ls_parser.add_argument('-p', '--profile', help='AWS profile to use', default=default_profile) ls_parser.add_argument('-r', '--region', help='AWS region to use', default=default_region) args = parser.parse_args() if not args.subcommand: parser.print_help() sys.exit(0) if not DEBUG: sys.excepthook = lambda exc_type, exc_value, traceback: logger.error( exc_value) log_level = logging.ERROR log_format = '%(message)s' # We want to silence dependencies logging.getLogger('botocore').setLevel(logging.CRITICAL) logging.getLogger('boto3').setLevel(logging.CRITICAL) logging.getLogger('urllib3').setLevel(logging.CRITICAL) if args.verbose: log_level = logging.INFO if DEBUG: log_level = logging.DEBUG log_format = '%(asctime)s - %(name)-16s - %(levelname)-5s - %(message)s' logging.basicConfig(level=log_level, stream=sys.stderr, format=log_format) if not is_existing_profile(args.profile): raise ValueError('Invalid profile provided: {}'.format(args.profile)) if args.subcommand == 'session': session(instance_name=args.instance_name, region_name=args.region, profile_name=args.profile) if args.subcommand in ['ls', 'list']: list_instances(region_name=args.region, profile_name=args.profile)
def validate_profile(profile): if not is_existing_profile(profile): raise ValidationError("Invalid profile provided: {}".format(profile))
def valid_aws_profile(wrapped_function, instance, args, kwargs): # pylint: disable=unused-argument if not is_existing_profile(kwargs["profile_name"]): raise ValueError("Invalid profile provided: {}".format( kwargs["profile_name"])) return wrapped_function(*args, **kwargs)