Переглянути джерело

Merge branch 'master' of https://github.com/gvlproject/cloudbridge

# Conflicts:
#	cloudbridge/providers/openstack/services.py
#	cloudbridge/providers/openstack/types.py
nuwan_ag 10 роки тому
батько
коміт
1cfae21f31

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

@@ -17,6 +17,7 @@ from cloudbridge.providers.interfaces import SecurityService
 from .types import OpenStackInstance
 from .types import OpenStackInstanceType
 from .types import OpenStackMachineImage
+from .types import OpenStackRegion
 
 
 class OpenStackSecurityService(SecurityService):
@@ -123,6 +124,22 @@ class OpenStackComputeService(ComputeService):
                                                         )
         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]
+
     def get_instance(self, id):
         """
         Returns an instance given its id.

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

@@ -9,6 +9,7 @@ from cloudbridge.providers.base import BaseSecurityGroup
 from cloudbridge.providers.interfaces import InstanceState
 from cloudbridge.providers.interfaces import InstanceType
 from cloudbridge.providers.interfaces import MachineImageState
+from cloudbridge.providers.interfaces import Region
 
 
 class OpenStackMachineImage(BaseMachineImage):
@@ -233,3 +234,17 @@ class OpenStackInstance(BaseInstance):
         for its latest state.
         """
         self._os_instance = self.provider.compute.get_instance(self.instance_id)._os_instance
+
+
+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)

+ 7 - 1
example.py

@@ -1,7 +1,13 @@
+from test import helpers
+
 from cloudbridge.providers.factory import CloudProviderFactory
 from cloudbridge.providers.factory import ProviderList
 
+
 config = {}
 provider = CloudProviderFactory().create_provider(ProviderList.OPENSTACK, config)
 # print provider.security.list_key_pairs()
-print provider.security.list_security_groups()
+# print provider.compute.instance_types.list()
+# print provider.compute.instance_types.find_by_name("m1.small")
+instance = helpers.get_test_instance(provider)
+# print provider.security.list_security_groups()