summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLewis <ldenny@redhat.com>2020-10-03 08:17:25 +1000
committerStephen Finucane <stephenfin@redhat.com>2020-10-14 10:40:54 +0000
commit8ac26f8475657e4e3b6793a1850e0b6b12f506b6 (patch)
treeb75d8e1bcfd9c2cee032ea7b66a95456ff9aaa1b
parentbff556c7c2e19d6162fb47929b91c155eba2a6ee (diff)
downloadpython-openstackclient-8ac26f8475657e4e3b6793a1850e0b6b12f506b6.tar.gz
Add API check for server_groups.create
The policies field has been replaced with the policy field since Nova API version 2.64[1] This commit adds a check to make sure the correct field is used. [1]https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id59 Change-Id: I06d3211937d822c26070b7f8ad757c365dcbb1bb Story: #2007822 Task: #40101 (cherry picked from commit 51a1ea65f4d095b073381200e5268f909bf360de) (cherry picked from commit 441f116b0c9e8d0b7e916b3c026f8a2244b4edc7)
-rw-r--r--openstackclient/compute/v2/server_group.py9
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server_group.py23
2 files changed, 30 insertions, 2 deletions
diff --git a/openstackclient/compute/v2/server_group.py b/openstackclient/compute/v2/server_group.py
index c49a552f..9bc2bb43 100644
--- a/openstackclient/compute/v2/server_group.py
+++ b/openstackclient/compute/v2/server_group.py
@@ -17,6 +17,7 @@
import logging
+from novaclient import api_versions
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -67,9 +68,13 @@ class CreateServerGroup(command.ShowOne):
def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute
info = {}
+
+ policy_arg = {'policies': [parsed_args.policy]}
+ if compute_client.api_version >= api_versions.APIVersion("2.64"):
+ policy_arg = {'policy': parsed_args.policy}
server_group = compute_client.server_groups.create(
- name=parsed_args.name,
- policies=[parsed_args.policy])
+ name=parsed_args.name, **policy_arg)
+
info.update(server_group._info)
columns = _get_columns(info)
diff --git a/openstackclient/tests/unit/compute/v2/test_server_group.py b/openstackclient/tests/unit/compute/v2/test_server_group.py
index dc924e24..57a57dcc 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_group.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_group.py
@@ -15,6 +15,7 @@
import mock
+from novaclient import api_versions
from osc_lib import exceptions
from osc_lib import utils
@@ -80,6 +81,28 @@ class TestServerGroupCreate(TestServerGroup):
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
+ def test_server_group_create_v264(self):
+ self.app.client_manager.compute.api_version = api_versions.APIVersion(
+ '2.64')
+
+ arglist = [
+ '--policy', 'soft-anti-affinity',
+ 'affinity_group',
+ ]
+ verifylist = [
+ ('policy', 'soft-anti-affinity'),
+ ('name', 'affinity_group'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+ self.server_groups_mock.create.assert_called_once_with(
+ name=parsed_args.name,
+ policy=parsed_args.policy,
+ )
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
class TestServerGroupDelete(TestServerGroup):