You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by al...@apache.org on 2015/03/27 11:42:21 UTC

libcloud git commit: Add fields for additional OpenStack size information

Repository: libcloud
Updated Branches:
  refs/heads/trunk f4a149ec6 -> 4261d4e82


Add fields for additional OpenStack size information

Adds:
* swap - the amount of swap provisioned for the flavor
* ephemeral_disk - the amount of non-root local storage for the flavor
	(from the OS-FLV-EXT-DATA extension used by Rackspace)
* extra - additional metadata about the flavor
	(from the OS-FLV-WITH-EXT-SPECS extension used by Rackspace)

closes #488

Signed-off-by: Allard Hoeve <al...@byte.nl>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/4261d4e8
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/4261d4e8
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/4261d4e8

Branch: refs/heads/trunk
Commit: 4261d4e8237b2a06d2040974cb115cdfbeb4080a
Parents: f4a149e
Author: Greg Hill <gr...@rackspace.com>
Authored: Wed Mar 25 15:28:03 2015 -0500
Committer: Allard Hoeve <al...@byte.nl>
Committed: Fri Mar 27 11:40:53 2015 +0100

----------------------------------------------------------------------
 libcloud/compute/drivers/openstack.py                |  9 ++++++++-
 .../fixtures/openstack_v1.1/_flavors_detail.json     |  2 +-
 libcloud/test/compute/test_openstack.py              | 15 +++++++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/4261d4e8/libcloud/compute/drivers/openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/openstack.py b/libcloud/compute/drivers/openstack.py
index 0abbfc7..9377656 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -326,12 +326,15 @@ class OpenStackNodeSize(NodeSize):
     """
 
     def __init__(self, id, name, ram, disk, bandwidth, price, driver,
-                 vcpus=None):
+                 vcpus=None, ephemeral_disk=None, swap=None, extra=None):
         super(OpenStackNodeSize, self).__init__(id=id, name=name, ram=ram,
                                                 disk=disk,
                                                 bandwidth=bandwidth,
                                                 price=price, driver=driver)
         self.vcpus = vcpus
+        self.ephemeral_disk = ephemeral_disk
+        self.swap = swap
+        self.extra = extra
 
     def __repr__(self):
         return (('<OpenStackNodeSize: id=%s, name=%s, ram=%s, disk=%s, '
@@ -2105,12 +2108,16 @@ class OpenStack_1_1_NodeDriver(OpenStackNodeDriver):
         if not price:
             price = self._get_size_price(str(api_flavor['id']))
 
+        extra = api_flavor.get('OS-FLV-WITH-EXT-SPECS:extra_specs', {})
         return OpenStackNodeSize(
             id=api_flavor['id'],
             name=api_flavor['name'],
             ram=api_flavor['ram'],
             disk=api_flavor['disk'],
             vcpus=api_flavor['vcpus'],
+            ephemeral_disk=api_flavor.get('OS-FLV-EXT-DATA:ephemeral', None),
+            swap=api_flavor['swap'],
+            extra=extra,
             bandwidth=bandwidth,
             price=price,
             driver=self,

http://git-wip-us.apache.org/repos/asf/libcloud/blob/4261d4e8/libcloud/test/compute/fixtures/openstack_v1.1/_flavors_detail.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/openstack_v1.1/_flavors_detail.json b/libcloud/test/compute/fixtures/openstack_v1.1/_flavors_detail.json
index 46739e0..77411e8 100644
--- a/libcloud/test/compute/fixtures/openstack_v1.1/_flavors_detail.json
+++ b/libcloud/test/compute/fixtures/openstack_v1.1/_flavors_detail.json
@@ -1 +1 @@
-{"flavors": [{"rxtx_quota": 2500, "name": "15.5GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/7", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/7", "rel": "bookmark"}], "ram": 16384, "vcpus": 8, "rxtx_cap": 200, "swap": 0, "disk": 620, "id": 7}, {"rxtx_quota": 600, "name": "1GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/3", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/3", "rel": "bookmark"}], "ram": 1024, "vcpus": 1, "rxtx_cap": 30, "swap": 0, "disk": 40, "id": 3}, {"rxtx_quota": 150, "name": "256 slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/1", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/1", "rel": "bookmark"}]
 , "ram": 256, "vcpus": 1, "rxtx_cap": 10, "swap": 0, "disk": 10, "id": 1}, {"rxtx_quota": 1200, "name": "2GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/4", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/4", "rel": "bookmark"}], "ram": 2048, "vcpus": 2, "rxtx_cap": 60, "swap": 0, "disk": 80, "id": 4}, {"rxtx_quota": 2500, "name": "30GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/8", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/8", "rel": "bookmark"}], "ram": 30720, "vcpus": 8, "rxtx_cap": 400, "swap": 0, "disk": 1200, "id": 8}, {"rxtx_quota": 2500, "name": "4GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/5", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspace
 cloud.com:8774/rs-reach-project/flavors/5", "rel": "bookmark"}], "ram": 4096, "vcpus": 2, "rxtx_cap": 100, "swap": 0, "disk": 160, "id": 5}, {"rxtx_quota": 300, "name": "512 slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/2", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/2", "rel": "bookmark"}], "ram": 512, "vcpus": 1, "rxtx_cap": 20, "swap": 0, "disk": 20, "id": 2}, {"rxtx_quota": 2500, "name": "8GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/6", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/6", "rel": "bookmark"}], "ram": 8192, "vcpus": 4, "rxtx_cap": 150, "swap": 0, "disk": 320, "id": 6}]}
\ No newline at end of file
+{"flavors": [{"rxtx_quota": 2500, "name": "15.5GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/7", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/7", "rel": "bookmark"}], "ram": 16384, "vcpus": 8, "rxtx_cap": 200, "swap": 0, "disk": 620, "id": 7}, {"rxtx_quota": 600, "name": "1GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/3", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/3", "rel": "bookmark"}], "ram": 1024, "vcpus": 1, "rxtx_cap": 30, "swap": 0, "disk": 40, "id": 3}, {"rxtx_quota": 150, "name": "256 slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/1", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/1", "rel": "bookmark"}]
 , "ram": 256, "vcpus": 1, "rxtx_cap": 10, "swap": 0, "disk": 10, "id": 1, "OS-FLV-EXT-DATA:ephemeral": 40, "OS-FLV-WITH-EXT-SPECS:extra_specs": {"policy_class": "standard_flavor", "class": "standard1", "disk_io_index": "2", "number_of_data_disks": "0"}}, {"rxtx_quota": 1200, "name": "2GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/4", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/4", "rel": "bookmark"}], "ram": 2048, "vcpus": 2, "rxtx_cap": 60, "swap": 0, "disk": 80, "id": 4}, {"rxtx_quota": 2500, "name": "30GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/8", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/8", "rel": "bookmark"}], "ram": 30720, "vcpus": 8, "rxtx_cap": 400, "swap": 0, "disk": 1200, "id": 8}, {"rxtx_quota": 2500, "name": "4GB
  slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/5", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/5", "rel": "bookmark"}], "ram": 4096, "vcpus": 2, "rxtx_cap": 100, "swap": 0, "disk": 160, "id": 5}, {"rxtx_quota": 300, "name": "512 slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/2", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/2", "rel": "bookmark"}], "ram": 512, "vcpus": 1, "rxtx_cap": 20, "swap": 0, "disk": 20, "id": 2}, {"rxtx_quota": 2500, "name": "8GB slice", "links": [{"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/v1.1/rs-reach-project/flavors/6", "rel": "self"}, {"href": "http://alpha.ord.servers.api.rackspacecloud.com:8774/rs-reach-project/flavors/6", "rel": "bookmark"}], "ram": 8192, "vcpus": 4, "rxtx_cap": 150, "swap"
 : 0, "disk": 320, "id": 6}]}

http://git-wip-us.apache.org/repos/asf/libcloud/blob/4261d4e8/libcloud/test/compute/test_openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_openstack.py b/libcloud/test/compute/test_openstack.py
index ac1035d..3017e82 100644
--- a/libcloud/test/compute/test_openstack.py
+++ b/libcloud/test/compute/test_openstack.py
@@ -833,6 +833,21 @@ class OpenStack_1_1_Tests(unittest.TestCase, TestCaseMixin):
         for size in sizes:
             self.assertTrue(isinstance(size.price, float),
                             'Wrong size price type')
+            self.assertTrue(isinstance(size.ram, int))
+            self.assertTrue(isinstance(size.vcpus, int))
+            self.assertTrue(isinstance(size.disk, int))
+            self.assertTrue(isinstance(size.swap, int))
+            self.assertTrue(isinstance(size.ephemeral_disk, int) or
+                            size.ephemeral_disk is None)
+            self.assertTrue(isinstance(size.extra, dict))
+            if size.id == '1':
+                self.assertEqual(size.ephemeral_disk, 40)
+                self.assertEqual(size.extra, {
+                    "policy_class": "standard_flavor",
+                    "class": "standard1",
+                    "disk_io_index": "2",
+                    "number_of_data_disks": "0"
+                })
 
         self.assertEqual(sizes[0].vcpus, 8)