Просмотр исходного кода

Implement a couple methods for OpenStack provider

Enis Afgan 10 лет назад
Родитель
Сommit
b866cb8d66
2 измененных файлов с 32 добавлено и 0 удалено
  1. 17 0
      cloudbridge/providers/openstack/services.py
  2. 15 0
      cloudbridge/providers/openstack/types.py

+ 17 - 0
cloudbridge/providers/openstack/services.py

@@ -17,6 +17,7 @@ from cloudbridge.providers.interfaces import SecurityService
 from .types import OpenStackImage
 from .types import OpenStackImage
 from .types import OpenStackInstance
 from .types import OpenStackInstance
 from .types import OpenStackInstanceType
 from .types import OpenStackInstanceType
+from .types import OpenStackRegion
 
 
 
 
 class OpenStackSecurityService(SecurityService):
 class OpenStackSecurityService(SecurityService):
@@ -122,3 +123,19 @@ class OpenStackComputeService(ComputeService):
                                                         userdata=user_data
                                                         userdata=user_data
                                                         )
                                                         )
         return OpenStackInstance(self.provider, os_instance)
         return OpenStackInstance(self.provider, os_instance)
+
+    def list_instances(self):
+        """
+        List all instances.
+        """
+        instances = self.provider.nova.servers.list()
+        return [OpenStackInstance(self.provider, instance) for instance in instances]
+
+    def list_regions(self):
+        """
+        List all data center regions.
+        """
+        # detailed must be set to ``False`` because the (default) ``True``
+        # value requires Admin priviledges
+        regions = self.provider.nova.availability_zones.list(detailed=False)
+        return [OpenStackRegion(self.provider, region) for region in regions]

+ 15 - 0
cloudbridge/providers/openstack/types.py

@@ -7,6 +7,7 @@ from cloudbridge.providers.base import BaseSecurityGroup
 from cloudbridge.providers.interfaces import Instance
 from cloudbridge.providers.interfaces import Instance
 from cloudbridge.providers.interfaces import InstanceType
 from cloudbridge.providers.interfaces import InstanceType
 from cloudbridge.providers.interfaces import MachineImage
 from cloudbridge.providers.interfaces import MachineImage
+from cloudbridge.providers.interfaces import Region
 
 
 
 
 class OpenStackImage(MachineImage):
 class OpenStackImage(MachineImage):
@@ -162,3 +163,17 @@ class OpenStackInstance(Instance):
         """
         """
         image_id = self._os_instance.create_image(name)
         image_id = self._os_instance.create_image(name)
         return OpenStackImage(self.provider, self.provider.images.get_image(image_id))
         return OpenStackImage(self.provider, self.provider.images.get_image(image_id))
+
+
+class OpenStackRegion(Region):
+
+    def __init__(self, provider, os_region):
+        self.provider = provider
+        self._os_region = os_region
+
+    @property
+    def name(self):
+        return self._os_region.zoneName
+
+    def __repr__(self):
+        return "<OSRegion: {0}>".format(self.name)