Пример #1
0
    def _export(self, args, **extra_args):
        """
        Export is the entry point for exporting docker images.
        """
        if not isinstance(args, argparse.Namespace):
            raise TypeError(
                logger.error(
                    "args should of an instance of argparse.Namespace"))

        # Warn the consumer about unsafe Docker Practices
        if args.no_validation:
            logger.warning(
                "#######################################################\n"
                "Validation has been disabled for this export operation.\n"
                "This is an unsafe operation and does not verify the "
                "run time nature of the container.\n"
                "Any docker image created in this manner will not "
                "be verified to start. Do not ship broken code.\n"
                "#######################################################\n",
                extra={'formatter': 'cli-warning'})

            # Require the consumer to verify their actions
            if not args.y:
                validation_input = six.moves.input(
                    "Please type \'yes\' to export the container without validation: "
                )

                if not (isinstance(validation_input, six.string_types) and
                        ('yes' == validation_input)):
                    raise ValueError(
                        "Incorrect type defined. Required value: yes")

        # create new freight forwarder to create a commercial_invoice and export goods.
        freight_forwarder = FreightForwarder()

        # create commercial invoice this is the contact given to freight forwarder dispatch containers and images
        commercial_invoice = freight_forwarder.commercial_invoice(
            'export',
            args.data_center,
            args.environment,
            args.service,
            tagging_scheme=not args.no_tagging_scheme)

        # create commercial_invoice
        bill_of_lading = freight_forwarder.export(
            commercial_invoice,
            clean=args.clean,
            configs=args.configs,
            tags=args.tag,
            test=args.test,
            use_cache=args.use_cache,
            validate=not args.no_validation)

        # pretty lame... Need to work on return values through to app to make them consistent.
        exit_code = 0 if bill_of_lading else 1

        if exit_code != 0:
            exit(exit_code)
Пример #2
0
    def _export(self, args, **extra_args):
        """
        Export is the entry point for exporting docker images.
        """
        if not isinstance(args, argparse.Namespace):
            raise TypeError(logger.error("args should of an instance of argparse.Namespace"))

        # Warn the consumer about unsafe Docker Practices
        if args.no_validation:
            logger.warning("#######################################################\n"
                           "Validation has been disabled for this export operation.\n"
                           "This is an unsafe operation and does not verify the "
                           "run time nature of the container.\n"
                           "Any docker image created in this manner will not "
                           "be verified to start. Do not ship broken code.\n"
                           "#######################################################\n",
                           extra={'formatter': 'cli-warning'})

            # Require the consumer to verify their actions
            if not args.y:
                validation_input = six.moves.input("Please type \'yes\' to export the container without validation: ")

                if not (isinstance(validation_input, six.string_types) and ('yes' == validation_input)):
                    raise ValueError("Incorrect type defined. Required value: yes")

        # create new freight forwarder to create a commercial_invoice and export goods.
        freight_forwarder = FreightForwarder()

        # create commercial invoice this is the contact given to freight forwarder dispatch containers and images
        commercial_invoice = freight_forwarder.commercial_invoice(
            'export',
            args.data_center,
            args.environment,
            args.service,
            tagging_scheme=not args.no_tagging_scheme
        )

        # create commercial_invoice
        bill_of_lading = freight_forwarder.export(
            commercial_invoice,
            attach=args.attach,
            clean=args.clean,
            configs=args.configs,
            tags=args.tag,
            test=args.test,
            use_cache=args.use_cache,
            validate=not args.no_validation
        )

        # pretty lame... Need to work on return values through to app to make them consistent.
        exit_code = 0 if bill_of_lading else 1

        if exit_code != 0:
            exit(exit_code)
def _create_registries(registries_meta):
    """
    """
    registries = {'docker_hub': Registry()}

    if registries_meta is None:
        logger.warning("There were no registries defined. Defaulting to Docker hub.")
        return registries
    elif isinstance(registries_meta, dict):
        registries.update({alias: Registry(**registry) for alias, registry in six.iteritems(registries_meta)})
    else:
        raise TypeError(logger.error("registries must be a dict"))

    if 'default' not in registries:
        logger.warning("There was not default registry defined. Default will be Docker hub.")

    return registries
Пример #4
0
def Registry(address='https://index.docker.io', **kwargs):
    """
    :return:
    """
    registry = None
    try:
        try:
            registry = V1(address, **kwargs)
            registry.ping()
        except RegistryException:
            registry = V2(address, **kwargs)
            registry.ping()
    except OSError:
        logger.warning(
            'Was unable to verify certs for a registry @ {0}. '
            'Will not be able to interact with it for any operations until the certs can be validated.'.format(address)
        )

    return registry
Пример #5
0
def Registry(address='https://index.docker.io', **kwargs):
    """
    :return:
    """
    registry = None
    try:
        try:
            registry = V1(address, **kwargs)
            registry.ping()
        except RegistryException:
            registry = V2(address, **kwargs)
            registry.ping()
    except OSError:
        logger.warning(
            'Was unable to verify certs for a registry @ {0}. '
            'Will not be able to interact with it for any operations until the certs can be validated.'
            .format(address))

    return registry
Пример #6
0
def _create_registries(registries_meta):
    """
    """
    registries = {'docker_hub': Registry()}

    if registries_meta is None:
        logger.warning(
            "There were no registries defined. Defaulting to Docker hub.")
        return registries
    elif isinstance(registries_meta, dict):
        registries.update({
            alias: Registry(**registry)
            for alias, registry in six.iteritems(registries_meta)
        })
    else:
        raise TypeError(logger.error("registries must be a dict"))

    if 'default' not in registries:
        logger.warning(
            "There was not default registry defined. Default will be Docker hub."
        )

    return registries