summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-10-13 03:42:52 +0000
committerGerrit Code Review <review@openstack.org>2020-10-13 03:42:52 +0000
commit1bac625d47315f1cd9711b31295b7ff36a15ec5f (patch)
tree6fef7f4b369d4690c5c3c058c23b524192977fa3 /openstackclient
parentce563f08ba9bd31505ea58ea35026d4cd4094d95 (diff)
parent6f1602312b00bcba6e04a34f7f04af9d69cf2d9c (diff)
downloadpython-openstackclient-1bac625d47315f1cd9711b31295b7ff36a15ec5f.tar.gz
Merge "Compute: Add tag support for server add network"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py26
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py56
2 files changed, 81 insertions, 1 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index a79dc98f..a223e09d 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -410,6 +410,14 @@ class AddNetwork(command.Command):
metavar="<network>",
help=_("Network to add to the server (name or ID)"),
)
+ parser.add_argument(
+ '--tag',
+ metavar='<tag>',
+ help=_(
+ 'Tag for the attached interface. '
+ '(supported by --os-compute-api-version 2.49 or above)'
+ ),
+ )
return parser
def take_action(self, parsed_args):
@@ -425,7 +433,23 @@ class AddNetwork(command.Command):
else:
net_id = parsed_args.network
- server.interface_attach(port_id=None, net_id=net_id, fixed_ip=None)
+ kwargs = {
+ 'port_id': None,
+ 'net_id': net_id,
+ 'fixed_ip': None,
+ }
+
+ if parsed_args.tag:
+ if compute_client.api_version < api_versions.APIVersion('2.49'):
+ msg = _(
+ '--os-compute-api-version 2.49 or greater is required to '
+ 'support the --tag option'
+ )
+ raise exceptions.CommandError(msg)
+
+ kwargs['tag'] = parsed_args.tag
+
+ server.interface_attach(**kwargs)
class AddServerSecurityGroup(command.Command):
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index ae12b182..bc6b1acb 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -734,6 +734,62 @@ class TestServerAddNetwork(TestServer):
self._test_server_add_network('fake-network')
self.find_network.assert_not_called()
+ def test_server_add_network_with_tag(self):
+ self.app.client_manager.compute.api_version = api_versions.APIVersion(
+ '2.49')
+
+ servers = self.setup_servers_mock(count=1)
+ self.find_network.return_value.id = 'fake-network'
+
+ arglist = [
+ servers[0].id,
+ 'fake-network',
+ '--tag', 'tag1',
+ ]
+ verifylist = [
+ ('server', servers[0].id),
+ ('network', 'fake-network'),
+ ('tag', 'tag1'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.assertIsNone(result)
+
+ servers[0].interface_attach.assert_called_once_with(
+ port_id=None,
+ net_id='fake-network',
+ fixed_ip=None,
+ tag='tag1'
+ )
+
+ def test_server_add_network_with_tag_pre_v249(self):
+ self.app.client_manager.compute.api_version = api_versions.APIVersion(
+ '2.48')
+
+ servers = self.setup_servers_mock(count=1)
+ self.find_network.return_value.id = 'fake-network'
+
+ arglist = [
+ servers[0].id,
+ 'fake-network',
+ '--tag', 'tag1',
+ ]
+ verifylist = [
+ ('server', servers[0].id),
+ ('network', 'fake-network'),
+ ('tag', 'tag1'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ ex = self.assertRaises(
+ exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args)
+ self.assertIn(
+ '--os-compute-api-version 2.49 or greater is required',
+ str(ex))
+
@mock.patch(
'openstackclient.api.compute_v2.APIv2.security_group_find'