cleanup
[sfa.git] / sfa / openstack / image.py
1 from nova.exception import ImageNotFound
2 from sfa.rspecs.elements.disk_image import DiskImage
3
4
5 class Image:
6     
7     def __init__(self, image={}):
8         self.id = None
9         self.container_format = None
10         self.kernel_id = None
11         self.ramdisk_id = None
12         self.properties = None
13         self.name = None
14         self.description = None
15         self.os = None
16         self.version = None
17
18         if image:
19             self.parse_image(image)
20
21     def parse_image(self, image):
22         if isinstance(image, dict):
23             self.id = image['id'] 
24             self.name = image['name']
25             self.container_format = image['container_format']
26             self.properties = image['properties'] 
27             if 'kernel_id' in self.properties:
28                 self.kernel_id = self.properties['kernel_id']
29             if 'ramdisk_id' in self.properties:
30                 self.ramdisk_id = self.properties['ramdisk_id']
31    
32     def to_rspec_object(self):
33         img = DiskImage()
34         img['name'] = self.name
35         img['description'] = self.name
36         img['os'] = self.name
37         img['version'] = self.name
38         return img     
39
40 class ImageManager:
41
42     def __init__(self, driver):
43         self.driver = driver
44
45     @staticmethod
46     def disk_image_to_rspec_object(image):
47         img = Image(image)
48         return img.to_rspec_object()
49
50     def get_available_disk_images(self):
51         # get image records
52         disk_images = []
53         for img in self.driver.shell.image_manager.get_images_detailed():
54             image = Image(img)
55             if image.container_format in ['ami', 'ovf']:
56                 disk_images.append(image)
57         return disk_images
58
59     def get_disk_image(self, id=None, name=None):
60         """
61         Look up a image bundle using the specifeid id or name
62         """
63         disk_image = None
64         try:
65             if id:
66                 image = self.driver.shell.nova_manager.images.find(id=id)
67             elif name:
68                 image = self.driver.shell.nova_manager.images.find(name=name)
69         except ImageNotFound:
70                 pass
71         return Image(image)
72
73