def METHOD_NAME(self):
    if self.is_available_locally():
        if self.overwrite is None:
            do_pull = yes_no_input(
                "Requested image {0} is available locally. Do you still want to fetch it? [Y/n]".format(
                    self.model_id
                ),
                default_answer="Y",
            )
        elif self.overwrite:
            do_pull = True
        else:
            do_pull = False
        if not do_pull:
            self.logger.info("Skipping pulling the image")
            return
        self._delete()
    else:
        self.logger.debug("Docker image of the model is not available locally")
    if self.is_available_in_dockerhub():
        self.logger.debug(
            "Pulling image {0} from DockerHub...".format(self.image_name)
        )
        try:
            img = self.client.images.get(
                "{0}/{1}".format(DOCKERHUB_ORG, self.model_id)
            )
            self.logger.debug(
                f"Size of image: {img.attrs['Size'] / (1024*1024):.2f} MB"
            )
        except:
            self.logger.warning("Could not obtain size of image")
        try:
            self.client.images.METHOD_NAME(
                "{0}/{1}".format(DOCKERHUB_ORG, self.model_id),
                tag=DOCKERHUB_LATEST_TAG,
                decode=True,
            )
            self.logger.debug("Image pulled succesfully!")
        except:
            self.logger.warning(
                "Conventional pull did not work, Ersilia is now forcing linux/amd64 architecture"
            )
            run_command(
                "docker pull {0}/{1}:{2} --platform linux/amd64".format(
                    DOCKERHUB_ORG, self.model_id, DOCKERHUB_LATEST_TAG
                )
            )
        # except: #TODO add better error
        #    raise DockerImageArchitectureNotAvailableError(model=self.model_id)
    else:
        self.logger.info("Image {0} is not available".format(self.image_name))
        raise DockerImageNotAvailableError(model=self.model_id)