def update_image(self, image_id, image_meta=None, image_data=None, features=None): """ Updates Glance's information about an image :param image_id: Required image ID :param image_meta: Optional Mapping of information about the image :param image_data: Optional string of raw image data or file-like object that can be used to read the image data :param features: Optional map of features """ if image_meta is None: image_meta = {} headers = utils.image_meta_to_http_headers(image_meta) if image_data: body = image_data headers['content-type'] = 'application/octet-stream' image_size = self._get_image_size(image_data) if image_size: headers['x-image-meta-size'] = image_size headers['content-length'] = image_size else: body = None utils.add_features_to_http_headers(features, headers) res = self.do_request("PUT", "/images/%s" % image_id, body, headers) data = json.loads(res.read()) return data['image']
def add_image(self, image_meta=None, image_data=None, features=None): """ Tells Glance about an image's metadata as well as optionally the image_data itself :param image_meta: Optional Mapping of information about the image :param image_data: Optional string of raw image data or file-like object that can be used to read the image data :param features: Optional map of features :retval The newly-stored image's metadata. """ headers = utils.image_meta_to_http_headers(image_meta or {}) if image_data: body = image_data headers['content-type'] = 'application/octet-stream' image_size = self._get_image_size(image_data) if image_size: headers['x-image-meta-size'] = image_size headers['content-length'] = image_size else: body = None utils.add_features_to_http_headers(features, headers) res = self.do_request("POST", "/images", body, headers) data = json.loads(res.read()) return data['image']