Beispiel #1
0
    def _build_image(top_level_image: Tuple[Optional[Tuple], Tuple[str, str]]):
        """
        Builds images bottom up, building the top level image last.
        :param top_level_image: representation of the top level image
        """
        image = top_level_image
        images = []     # type: List[Tuple[str, str]]
        while image is not None:
            images.insert(0, image[1])
            image = image[0]

        client = create_client()
        for image in images:
            tag = image[0]
            directory = "%s/%s" % (_PROJECT_ROOT, image[1])
            baton_image = BatonImage(tag=tag, path=directory)
            build_baton_docker(client, baton_image)
Beispiel #2
0
    def setup(self):
        """
        Sets up the setup: builds the baton Docker image, starts the iRODS test server (if required) and creates the
        proxies.
        """
        if self._state != TestWithBaton._SetupState.INIT:
            raise RuntimeError("Already been setup")
        self._state = TestWithBaton._SetupState.RUNNING

        docker_client = create_client()
        if self._baton_docker_build.docker_file is not None:
            # baton Docker image is to be built from a local Dockerfile
            logging.debug("Building baton Docker")
            build_baton_docker(docker_client, self._baton_docker_build)
        else:
            # Ensuring Docker image is pulled - not waiting until `docker run` to prevent Docker from polluting the
            # stderr
            if ":" in self._baton_docker_build.tag:
                repository, tag = self._baton_docker_build.tag.split(":")
            else:
                repository = self._baton_docker_build.tag
                tag = ""

            docker_image = docker_client.images("%s:%s" % (repository, tag), quiet=True)
            if len(docker_image) == 0:
                # Docker image doesn't exist locally: getting from DockerHub
                docker_client.pull(repository, tag)

        if self._irods_version_to_start:
            logging.debug("Starting iRODS test server")
            self.irods_server = get_static_irods_server_controller(self._irods_version_to_start).start_server()
            logging.debug("iRODS test server has started")
        else:
            logging.debug("Using pre-existing iRODS server")

        self._setup_proxies()

        logging.debug("Setup complete")