Exemplo n.º 1
0
def parse_args(argv, Environment=Environment):
    options = docopt(__doc__, argv=argv, version="Sprinter 1.0")
    logging_level = logging.DEBUG if options['--verbose'] else logging.INFO
    # start processing commands
    env = Environment(logging_level=logging_level, ignore_errors=options['--ignore-errors'])
    try:
        if options['install']:
            target = options['<environment_source>']

            def handle_install_shutdown(signal, frame):
                if env.phase == PHASE.INSTALL:
                    print("Removing install...")
                    env.directory.remove()
                    env.clear_all()
                signal_handler(signal, frame)
            signal.signal(signal.SIGINT, handle_install_shutdown)
            if options['--username'] or options['--auth']:
                options = get_credentials(options, parse_domain(target))
                target = Manifest(target,
                                  username=options['<username>'],
                                  password=options['<password>'],
                                  verify_certificate=(not options['--allow-bad-certificate']))
            env.target = target
            if options['--namespace']:
                env.namespace = options['<namespace>']
            env.install()

        elif options['update']:
            target = options['<environment_name>']
            env.directory = Directory(target,
                                      sprinter_root=env.root,
                                      shell_util_path=env.shell_util_path)
            env.source = Manifest(env.directory.manifest_path)
            use_auth = options['--username'] or options['--auth']
            if use_auth:
                options = get_credentials(options, target)
            env.target = Manifest(env.source.source(),
                                  username=options['<username>'] if use_auth else None,
                                  password=options['<password>'] if use_auth else None,
                                  verify_certificate=(not options['--allow-bad-certificate']))
            env.update(reconfigure=options['--reconfigure'])

        elif options["remove"]:
            env.directory = Directory(options['<environment_name>'],
                                      sprinter_root=env.root,
                                      shell_util_path=env.shell_util_path)
            env.source = Manifest(env.directory.manifest_path, namespace=options['<environment_name>'])
            env.remove()

        elif options['deactivate']:
            env.directory = Directory(options['<environment_name>'],
                                      sprinter_root=env.root,
                                      shell_util_path=env.shell_util_path)
            env.source = Manifest(env.directory.manifest_path, namespace=options['<environment_name>'])
            env.deactivate()

        elif options['activate']:
            env.directory = Directory(options['<environment_name>'],
                                      sprinter_root=env.root,
                                      shell_util_path=env.shell_util_path)
            env.source = Manifest(env.directory.manifest_path, namespace=options['<environment_name>'])
            env.activate()

        elif options['environments']:
            SPRINTER_ROOT = os.path.expanduser(os.path.join("~", ".sprinter"))
            for env in os.listdir(SPRINTER_ROOT):
                if env != ".global":
                    print(env)

        elif options['validate']:
            if options['--username'] or options['--auth']:
                options = get_credentials(options, parse_domain(target))
                target = Manifest(options['<environment_source>'],
                                  username=options['<username>'],
                                  password=options['<password>'],
                                  verify_certificate=(not options['--allow-bad-certificate']))
            env.target = options['<environment_source>']
            env.validate()
            if not env.error_occured:
                print("No errors! Manifest is valid!")
            else:
                "Manifest is invalid! Please see errors above."
    except BadCredentialsException:
        e = sys.exc_info()[1]
        raise e
    except ManifestException:
        e = sys.exc_info()[1]
        print(str(e))
        print("Could not find Manifest!")
    except Exception:
        e = sys.exc_info()[1]
        env.log_error(str(e))
        env.logger.info("failed! Writing debug output to /tmp/sprinter.log")
        env.write_debug_log("/tmp/sprinter.log")
        if env.message_failure():
            env.logger.info(env.message_failure())
Exemplo n.º 2
0
def parse_args(argv, Environment=Environment):
    options = docopt(
        __doc__,
        argv=argv,
        version=pkg_resources.get_distribution('sprinter').version)
    logging_level = logging.DEBUG if options['--verbose'] else logging.INFO
    # start processing commands
    env = Environment(logging_level=logging_level,
                      ignore_errors=options['--ignore-errors'])
    try:
        if options['install']:
            target = options['<environment_source>']

            def handle_install_shutdown(signal, frame):
                if env.phase == PHASE.INSTALL:
                    print("Removing install...")
                    env.directory.remove()
                    env.clear_all()
                signal_handler(signal, frame)

            signal.signal(signal.SIGINT, handle_install_shutdown)
            if options['--username'] or options['--auth']:
                options = get_credentials(options, parse_domain(target))
                target = manifest.load_manifest(
                    target,
                    username=options['<username>'],
                    password=options['<password>'],
                    verify_certificate=(
                        not options['--allow-bad-certificate']))
            else:
                target = manifest.load_manifest(
                    target,
                    verify_certificate=(
                        not options['--allow-bad-certificate']))
            env.target = target
            if options['--namespace']:
                env.namespace = options['--namespace']
            if options['--local']:
                env.do_inject_environment_config = False
                env.custom_directory_root = os.path.abspath(
                    os.path.expanduser(options['--local']))
            env.install()

        elif options['update']:
            target = options['<environment_name>']
            env.directory = Directory(os.path.join(env.root, target),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(env.directory.manifest_path,
                                                do_inherit=False)
            use_auth = options['--username'] or options['--auth']
            if use_auth:
                options = get_credentials(options, target)
            env.target = manifest.load_manifest(
                env.source.source(),
                username=options['<username>'] if use_auth else None,
                password=options['<password>'] if use_auth else None,
                verify_certificate=(not options['--allow-bad-certificate']))
            env.update(reconfigure=options['--reconfigure'])

        elif options["remove"]:
            env.directory = Directory(os.path.join(
                env.root, options['<environment_name>']),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(
                env.directory.manifest_path,
                namespace=options['<environment_name>'],
                do_inherit=False)
            env.remove()

        elif options['deactivate']:
            env.directory = Directory(os.path.join(
                env.root, options['<environment_name>']),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(
                env.directory.manifest_path,
                namespace=options['<environment_name>'],
                do_inherit=False)
            env.deactivate()

        elif options['activate']:
            env.directory = Directory(os.path.join(
                env.root, options['<environment_name>']),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(
                env.directory.manifest_path,
                namespace=options['<environment_name>'],
                do_inherit=False)
            env.activate()

        elif options['list']:
            for _env in os.listdir(env.root):
                if _env != ".global":
                    print(_env)

        elif options['validate']:
            if options['--username'] or options['--auth']:
                options = get_credentials(options, parse_domain(target))
                target = manifest.load_manifest(
                    options['<environment_source>'],
                    username=options['<username>'],
                    password=options['<password>'],
                    verify_certificate=(
                        not options['--allow-bad-certificate']))
            env.target = options['<environment_source>']
            env.validate()
            if not env.error_occured:
                print("No errors! Manifest is valid!")
            else:
                "Manifest is invalid! Please see errors above."
        elif options['globals']:
            if options['--reconfigure']:
                configure_config(env.global_config, reconfigure=True)
                write_config(env.global_config, env.global_config_path)
            else:
                print_global_config(env.global_config)
    except BadCredentialsException:
        e = sys.exc_info()[1]
        raise e
    except ManifestException:
        e = sys.exc_info()[1]
        env.log_error(str(e))
        env.logger.info("Error occured when attempting to load manifest!")
        env.logger.info("Writing debug output to /tmp/sprinter.log")
        env.write_debug_log("/tmp/sprinter.log")
    except Exception:
        e = sys.exc_info()[1]
        env.log_error(str(e))
        env.logger.info("""
=====================================================================
the sprinter action failed! Writing debug output to /tmp/sprinter.log
        """)
        env.write_debug_log("/tmp/sprinter.log")
        if env.message_failure():
            env.logger.info(env.message_failure())
        env.logger.info("""
=====================================================================
        """.strip())
        raise
Exemplo n.º 3
0
def parse_args(argv, Environment=Environment):
    options = docopt(__doc__, argv=argv, version= pkg_resources.get_distribution('sprinter').version)
    logging_level = logging.DEBUG if options['--verbose'] else logging.INFO
    # start processing commands
    env = Environment(logging_level=logging_level, ignore_errors=options['--ignore-errors'])
    try:
        if options['install']:
            target = options['<environment_source>']

            def handle_install_shutdown(signal, frame):
                if env.phase == PHASE.INSTALL:
                    print("Removing install...")
                    env.directory.remove()
                    env.clear_all()
                signal_handler(signal, frame)
            signal.signal(signal.SIGINT, handle_install_shutdown)
            if options['--username'] or options['--auth']:
                options = get_credentials(options, parse_domain(target))
                target = manifest.load_manifest(
                    target,
                    username=options['<username>'],
                    password=options['<password>'],
                    verify_certificate=(not options['--allow-bad-certificate'])
                )
            else:
                target = manifest.load_manifest(
                    target,
                    verify_certificate=(not options['--allow-bad-certificate'])
                )
            env.target = target
            if options['--namespace']:
                env.namespace = options['--namespace']
            if options['--local']:
                env.do_inject_environment_config = False
                env.custom_directory_root = os.path.abspath(os.path.expanduser(options['--local']))
            env.install()

        elif options['update']:
            target = options['<environment_name>']
            env.directory = Directory(os.path.join(env.root, target),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(
                env.directory.manifest_path, do_inherit=False
            )
            use_auth = options['--username'] or options['--auth']
            if use_auth:
                options = get_credentials(options, target)
            env.target = manifest.load_manifest(
                env.source.source(),
                username=options['<username>'] if use_auth else None,
                password=options['<password>'] if use_auth else None,
                verify_certificate=(not options['--allow-bad-certificate'])
            )
            env.update(reconfigure=options['--reconfigure'])

        elif options["remove"]:
            env.directory = Directory(os.path.join(env.root, options['<environment_name>']),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(
                env.directory.manifest_path,
                namespace=options['<environment_name>'],
                do_inherit=False
            )
            env.remove()

        elif options['deactivate']:
            env.directory = Directory(os.path.join(env.root, options['<environment_name>']),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(
                env.directory.manifest_path,
                namespace=options['<environment_name>'],
                do_inherit=False
            )
            env.deactivate()

        elif options['activate']:
            env.directory = Directory(os.path.join(env.root, options['<environment_name>']),
                                      shell_util_path=env.shell_util_path)
            env.source = manifest.load_manifest(
                env.directory.manifest_path,
                namespace=options['<environment_name>'],
                do_inherit=False
            )
            env.activate()

        elif options['list']:
            for _env in os.listdir(env.root):
                if _env != ".global":
                    print(_env)

        elif options['validate']:
            if options['--username'] or options['--auth']:
                options = get_credentials(options, parse_domain(target))
                target = manifest.load_manifest(
                    options['<environment_source>'],
                    username=options['<username>'],
                    password=options['<password>'],
                    verify_certificate=(not options['--allow-bad-certificate'])
                )
            env.target = options['<environment_source>']
            env.validate()
            if not env.error_occured:
                print("No errors! Manifest is valid!")
            else:
                "Manifest is invalid! Please see errors above."
        elif options['globals']:
            if options['--reconfigure']:
                configure_config(env.global_config, reconfigure=True)
                write_config(env.global_config, env.global_config_path)
            else:
                print_global_config(env.global_config)
    except BadCredentialsException:
        e = sys.exc_info()[1]
        raise e
    except ManifestException:
        e = sys.exc_info()[1]
        env.log_error(str(e))
        env.logger.info("Error occured when attempting to load manifest!")
        env.logger.info("Writing debug output to /tmp/sprinter.log")
        env.write_debug_log("/tmp/sprinter.log")
    except Exception:
        e = sys.exc_info()[1]
        env.log_error(str(e))
        env.logger.info("""
=====================================================================
the sprinter action failed! Writing debug output to /tmp/sprinter.log
        """)
        env.write_debug_log("/tmp/sprinter.log")
        if env.message_failure():
            env.logger.info(env.message_failure())
        env.logger.info("""
=====================================================================
        """.strip())
        raise