Add support for microversion 2.28

microversion 2.28 now returns a dict instead of a string for cpu_info item
returned by GET /os-hypervisors/<id>

Fortunately, the utils.flatten_dict() method checks whether it's a JSON field
so the behaviour keeps to be the same for the CLI output of nova hypervisor-show.

That said, the novaclient API call to HypervisorManager.get() will of course
be returning either a dict or a string for the keyed cpu_info given the
microversion.

Co-Authored-By: Andrey Kurilin <andr.kurilin@gmail.com>
Change-Id: I3a8bfcb7672005430ca99bab0d20e25f48a7e0f6
Implements: blueprint nova-api-hypervsor-cpu-info
This commit is contained in:
Sylvain Bauza 2016-06-10 16:02:21 +02:00 committed by Andrey Kurilin
parent 0e9456aede
commit a70de7e590
5 changed files with 58 additions and 1 deletions

View File

@ -25,4 +25,4 @@ API_MIN_VERSION = api_versions.APIVersion("2.1")
# when client supported the max version, and bumped sequentially, otherwise
# the client may break due to server side new version may include some
# backward incompatible change.
API_MAX_VERSION = api_versions.APIVersion("2.27")
API_MAX_VERSION = api_versions.APIVersion("2.28")

View File

@ -0,0 +1,30 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import six
from novaclient.tests.functional import base
class TestHypervisors(base.ClientTestBase):
COMPUTE_API_VERSION = "2.1"
def _test_list(self, cpu_info_type):
hypervisors = self.client.hypervisors.list()
if not len(hypervisors):
self.fail("No hypervisors detected.")
for hypervisor in hypervisors:
self.assertIsInstance(hypervisor.cpu_info, cpu_info_type)
def test_list(self):
self._test_list(six.text_type)

View File

@ -0,0 +1,21 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from novaclient.tests.functional.v2.legacy import test_hypervisors
class TestHypervisorsV28(test_hypervisors.TestHypervisors):
COMPUTE_API_VERSION = "2.28"
def test_list(self):
self._test_list(dict)

View File

@ -2792,6 +2792,7 @@ class ShellTest(utils.TestCase):
27, # NOTE(cdent): 27 adds support for updated microversion
# headers, and is tested in test_api_versions, but is
# not explicitly tested via wraps and _SUBSTITUTIONS.
28, # doesn't require any changes in novaclient
])
versions_supported = set(range(0,
novaclient.API_MAX_VERSION.ver_minor + 1))

View File

@ -0,0 +1,5 @@
---
upgrade:
- Support v2.28 microversion
- cpu_info property of hypervisor resource is a json now (previously it was
text).