summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorStephen Finucane <sfinucan@redhat.com>2022-10-26 18:17:38 +0300
committerStephen Finucane <sfinucan@redhat.com>2022-11-08 11:25:19 +0000
commited0d568b948a04e893270d297c538773d058b73e (patch)
treeb0f0da703c6baceb0699ce555f4f055d3420cfb3 /openstackclient
parent681934a96aa8e35ae3babc89bfb2b56d2daea950 (diff)
downloadpython-openstackclient-ed0d568b948a04e893270d297c538773d058b73e.tar.gz
compute: Fix '--network none/auto' handling
This should lookup a network called 'none' or 'auto', not do the equivalent on '--nic none' or '--nic auto'. Correct this. Change-Id: I3c5acc49bfe8162d8fb6110603da56d56090b78f Signed-off-by: Stephen Finucane <sfinucan@redhat.com> Story: 2010385 Task: 46658
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py11
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py49
2 files changed, 43 insertions, 17 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 39b2bdc8..1d072463 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -721,11 +721,6 @@ class NICAction(argparse.Action):
if getattr(namespace, self.dest, None) is None:
setattr(namespace, self.dest, [])
- # Handle the special auto/none cases
- if values in ('auto', 'none'):
- getattr(namespace, self.dest).append(values)
- return
-
if self.key:
if ',' in values or '=' in values:
msg = _(
@@ -735,6 +730,12 @@ class NICAction(argparse.Action):
raise argparse.ArgumentTypeError(msg % values)
values = '='.join([self.key, values])
+ else:
+ # Handle the special auto/none cases but only when a key isn't set
+ # (otherwise those could be valid values for the key)
+ if values in ('auto', 'none'):
+ getattr(namespace, self.dest).append(values)
+ return
# We don't include 'tag' here by default since that requires a
# particular microversion
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 858c9a2a..48a36172 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -1675,6 +1675,7 @@ class TestServerCreate(TestServer):
'--nic', 'net-id=net1,v4-fixed-ip=10.0.0.2',
'--port', 'port1',
'--network', 'net1',
+ '--network', 'auto', # this is a network called 'auto'
'--nic', 'port-id=port2',
self.new_server.name,
]
@@ -1683,24 +1684,40 @@ class TestServerCreate(TestServer):
('flavor', 'flavor1'),
('nics', [
{
- 'net-id': 'net1', 'port-id': '',
- 'v4-fixed-ip': '', 'v6-fixed-ip': '',
+ 'net-id': 'net1',
+ 'port-id': '',
+ 'v4-fixed-ip': '',
+ 'v6-fixed-ip': '',
},
{
- 'net-id': 'net1', 'port-id': '',
- 'v4-fixed-ip': '10.0.0.2', 'v6-fixed-ip': '',
+ 'net-id': 'net1',
+ 'port-id': '',
+ 'v4-fixed-ip': '10.0.0.2',
+ 'v6-fixed-ip': '',
},
{
- 'net-id': '', 'port-id': 'port1',
- 'v4-fixed-ip': '', 'v6-fixed-ip': '',
+ 'net-id': '',
+ 'port-id': 'port1',
+ 'v4-fixed-ip': '',
+ 'v6-fixed-ip': '',
},
{
- 'net-id': 'net1', 'port-id': '',
- 'v4-fixed-ip': '', 'v6-fixed-ip': '',
+ 'net-id': 'net1',
+ 'port-id': '',
+ 'v4-fixed-ip': '',
+ 'v6-fixed-ip': '',
},
{
- 'net-id': '', 'port-id': 'port2',
- 'v4-fixed-ip': '', 'v6-fixed-ip': '',
+ 'net-id': 'auto',
+ 'port-id': '',
+ 'v4-fixed-ip': '',
+ 'v6-fixed-ip': '',
+ },
+ {
+ 'net-id': '',
+ 'port-id': 'port2',
+ 'v4-fixed-ip': '',
+ 'v6-fixed-ip': '',
},
]),
('config_drive', False),
@@ -1729,12 +1746,16 @@ class TestServerCreate(TestServer):
"port2": port2_resource}[port_id])
# Mock sdk APIs.
- _network = mock.Mock(id='net1_uuid')
+ _network_1 = mock.Mock(id='net1_uuid')
+ _network_auto = mock.Mock(id='auto_uuid')
_port1 = mock.Mock(id='port1_uuid')
_port2 = mock.Mock(id='port2_uuid')
find_network = mock.Mock()
find_port = mock.Mock()
- find_network.return_value = _network
+ find_network.side_effect = lambda net_id, ignore_missing: {
+ "net1": _network_1,
+ "auto": _network_auto,
+ }[net_id]
find_port.side_effect = (lambda port_id, ignore_missing:
{"port1": _port1,
"port2": _port2}[port_id])
@@ -1775,6 +1796,10 @@ class TestServerCreate(TestServer):
'v4-fixed-ip': '',
'v6-fixed-ip': '',
'port-id': ''},
+ {'net-id': 'auto_uuid',
+ 'v4-fixed-ip': '',
+ 'v6-fixed-ip': '',
+ 'port-id': ''},
{'net-id': '',
'v4-fixed-ip': '',
'v6-fixed-ip': '',