def setup(self, storage, instClass): """ Check the availability and size of the image. """ # This is on purpose, we don't want to call LiveImagePayload's setup method. ImagePayload.setup(self, storage, instClass) if self.data.method.url.startswith("file://"): error = self._setup_file_image() else: error = self._setup_url_image() if error: exn = PayloadInstallError(str(error)) if errorHandler.cb(exn) == ERROR_RAISE: raise exn log.debug("liveimg size is %s", self._min_size)
def setup(self, storage, instClass): """ Check the availability and size of the image. """ # This is on purpose, we don't want to call LiveImagePayload's setup method. ImagePayload.setup(self, storage, instClass) self._proxies = {} if self.data.method.proxy: try: proxy = ProxyString(self.data.method.proxy) self._proxies = {"http": proxy.url, "https": proxy.url} except ProxyStringError as e: log.info("Failed to parse proxy for liveimg --proxy=\"%s\": %s", self.data.method.proxy, e) error = None try: req = urllib.urlopen(self.data.method.url, proxies=self._proxies) except IOError as e: log.error("Error opening liveimg: %s", e) error = e else: # If it is a http request we need to check the code method = self.data.method.url.split(":", 1)[0] if method.startswith("http") and req.getcode() != 200: error = "http request returned %s" % req.getcode() if error: exn = PayloadInstallError(str(error)) if errorHandler.cb(exn) == ERROR_RAISE: raise exn # At this point we know we can get the image and what its size is # Make a guess as to minimum size needed: # Enough space for image and image * 3 if req.info().get("content-length"): self._min_size = int(req.info().get("content-length")) * 4 log.debug("liveimg size is %s", self._min_size)
def unsetup(self): # Skip LiveImagePayload's unsetup method ImagePayload.unsetup(self)