from openstack.exceptions import ResourceNotFound from interface.image.ImageManager import ImageManager from interface.image.Image import Image class OpenstackImageManager(ImageManager): def __init__(self, openstack) -> None: super().__init__() self.openstack = openstack @staticmethod def os_image_to_rc_image(os_image): return Image( os_image.id, os_image.name, os_image.disk_format ) def upload_file(self, name, path, format): os_image = self.openstack.image.create_image( name=name, filename=path, disk_format=format ) return self.os_image_to_rc_image(os_image) def get(self, id): try: os_image = self.openstack.image.get_image(id) except ResourceNotFound: return None return self.os_image_to_rc_image(os_image) def download(self, id): return self.openstack.image.download_image(id) def delete(self, id): try: self.openstack.image.delete_image(id) except ResourceNotFound: return False return True def list(self): images = [] for os_image in self.openstack.image.images(): images.append(self.os_image_to_rc_image(os_image)) return images