Beispiel #1
0
 def _get_docker_host_base_url(self):
     """
     Returns the optimal base url of docker host.
     """
     docker_host = get_optimal_docker_host()
     if not docker_host:
         logger.error("there is no available active docker host.")
         self._update_image_status(status="failed")
         return None
     return 'tcp://%s:%s' % (docker_host, str(settings.DOCKER_PORT))
Beispiel #2
0
 def _get_docker_host_base_url(self):
     """
     Returns the optimal base url of docker host.
     """
     docker_host = get_optimal_docker_host()
     if not docker_host:
         logger.error("there is no available active docker host.")
         self._update_image_status(status="failed")
         return None
     return 'tcp://%s:%s' % (docker_host, str(settings.DOCKER_PORT))
Beispiel #3
0
    def _create_image_by_imagefile(self):
        """
        Create image by imagefile.
        """
        logger.debug("creating an image by imagefile.")

        docker_host = get_optimal_docker_host()
        if not docker_host:
            logger.error("there is no available active docker host.")
            self._update_image_status(status="failed")
            return None

        # TODO: create image on docker host
        base_url = self._get_docker_host_base_url(docker_host)
        image_name = self._get_image_name()

        if self.is_image == 1:
            token = self._load_image_on_docker_host(base_url, self.build_file,
                                                    image_name,
                                                    self.image.version)
        elif self.is_image == 2:
            token = self._import_snapshot_on_docker_host(
                base_url, self.build_file, image_name, self.image.version)

        if not token:
            logger.error("Import image on docker host failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been imported, with token %s', image_name,
                    self.image.version, token)

        digest = self._push_image_to_registry(base_url, image_name,
                                              self.image.version, token)
        if not digest:
            logger.error("Push image from docker host to registry failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been pushed to registry, with digest %s',
                    image_name, self.image.version, digest)

        self._update_image_status(status="active", digest=digest, token=token)

        remove_file_from_disk(self.build_file)
Beispiel #4
0
    def _create_image_by_dockerfile(self):
        """
        Create image by dockerfile, this maybe take a long time.
        """
        logger.debug("creating an image by dockerfile.")

        docker_host = get_optimal_docker_host()
        if not docker_host:
            logger.error("there is no available active docker host.")
            self._update_image_status(status="failed")
            return None

        base_url = self._get_docker_host_base_url(docker_host)
        image_name = self._get_image_name()

        logger.debug('%s %s' % (base_url, image_name))

        token = self._build_image_on_docker_host(
            base_url=base_url,
            build_file=self.build_file,
            dockerfile=self.dockerfile,
            image_name=image_name,
            image_version=self.image.version)
        if not token:
            logger.error("Build image on docker host failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been builded, with token %s', image_name,
            self.image.version, token)

        digest = self._push_image_to_registry(base_url, image_name,
            self.image.version, token)
        if not digest:
            logger.error("Push image from docker host to registry failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been pushed to registry, with digest %s',
            image_name, self.image.version, digest)

        self._update_image_status(status="active", digest=digest, token=token)

        remove_file_from_disk(self.build_file)
Beispiel #5
0
    def _create_image_by_imagefile(self):
        """
        Create image by imagefile.
        """
        logger.debug("creating an image by imagefile.")

        docker_host = get_optimal_docker_host()
        if not docker_host:
            logger.error("there is no available active docker host.")
            self._update_image_status(status="failed")
            return None

        # TODO: create image on docker host
        base_url = self._get_docker_host_base_url(docker_host)
        image_name = self._get_image_name()

        if self.is_image == 1:
            token = self._load_image_on_docker_host(base_url, self.build_file,
                image_name, self.image.version)
        elif self.is_image == 2:
            token = self._import_snapshot_on_docker_host(base_url,
                self.build_file, image_name, self.image.version)

        if not token:
            logger.error("Import image on docker host failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been imported, with token %s', image_name,
            self.image.version, token)

        digest = self._push_image_to_registry(base_url, image_name,
            self.image.version, token)
        if not digest:
            logger.error("Push image from docker host to registry failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been pushed to registry, with digest %s',
            image_name, self.image.version, digest)

        self._update_image_status(status="active", digest=digest, token=token)

        remove_file_from_disk(self.build_file)
Beispiel #6
0
    def _create_image_by_dockerfile(self):
        """
        Create image by dockerfile, this maybe take a long time.
        """
        logger.debug("creating an image by dockerfile.")

        docker_host = get_optimal_docker_host()
        if not docker_host:
            logger.error("there is no available active docker host.")
            self._update_image_status(status="failed")
            return None

        base_url = self._get_docker_host_base_url(docker_host)
        image_name = self._get_image_name()

        logger.debug('%s %s' % (base_url, image_name))

        token = self._build_image_on_docker_host(
            base_url=base_url,
            build_file=self.build_file,
            dockerfile=self.dockerfile,
            image_name=image_name,
            image_version=self.image.version)
        if not token:
            logger.error("Build image on docker host failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been builded, with token %s', image_name,
                    self.image.version, token)

        digest = self._push_image_to_registry(base_url, image_name,
                                              self.image.version, token)
        if not digest:
            logger.error("Push image from docker host to registry failed")
            self._update_image_status(status="failed")
            return None
        logger.info('Image %s:%s has been pushed to registry, with digest %s',
                    image_name, self.image.version, digest)

        self._update_image_status(status="active", digest=digest, token=token)

        remove_file_from_disk(self.build_file)