Skip to content

Commit 1bac625

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Compute: Add tag support for server add network"
2 parents ce563f0 + 6f16023 commit 1bac625

3 files changed

Lines changed: 86 additions & 1 deletion

File tree

openstackclient/compute/v2/server.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,14 @@ def get_parser(self, prog_name):
410410
metavar="<network>",
411411
help=_("Network to add to the server (name or ID)"),
412412
)
413+
parser.add_argument(
414+
'--tag',
415+
metavar='<tag>',
416+
help=_(
417+
'Tag for the attached interface. '
418+
'(supported by --os-compute-api-version 2.49 or above)'
419+
),
420+
)
413421
return parser
414422

415423
def take_action(self, parsed_args):
@@ -425,7 +433,23 @@ def take_action(self, parsed_args):
425433
else:
426434
net_id = parsed_args.network
427435

428-
server.interface_attach(port_id=None, net_id=net_id, fixed_ip=None)
436+
kwargs = {
437+
'port_id': None,
438+
'net_id': net_id,
439+
'fixed_ip': None,
440+
}
441+
442+
if parsed_args.tag:
443+
if compute_client.api_version < api_versions.APIVersion('2.49'):
444+
msg = _(
445+
'--os-compute-api-version 2.49 or greater is required to '
446+
'support the --tag option'
447+
)
448+
raise exceptions.CommandError(msg)
449+
450+
kwargs['tag'] = parsed_args.tag
451+
452+
server.interface_attach(**kwargs)
429453

430454

431455
class AddServerSecurityGroup(command.Command):

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -734,6 +734,62 @@ def test_server_add_network_no_neutron(self):
734734
self._test_server_add_network('fake-network')
735735
self.find_network.assert_not_called()
736736

737+
def test_server_add_network_with_tag(self):
738+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
739+
'2.49')
740+
741+
servers = self.setup_servers_mock(count=1)
742+
self.find_network.return_value.id = 'fake-network'
743+
744+
arglist = [
745+
servers[0].id,
746+
'fake-network',
747+
'--tag', 'tag1',
748+
]
749+
verifylist = [
750+
('server', servers[0].id),
751+
('network', 'fake-network'),
752+
('tag', 'tag1'),
753+
]
754+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
755+
756+
result = self.cmd.take_action(parsed_args)
757+
self.assertIsNone(result)
758+
759+
servers[0].interface_attach.assert_called_once_with(
760+
port_id=None,
761+
net_id='fake-network',
762+
fixed_ip=None,
763+
tag='tag1'
764+
)
765+
766+
def test_server_add_network_with_tag_pre_v249(self):
767+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
768+
'2.48')
769+
770+
servers = self.setup_servers_mock(count=1)
771+
self.find_network.return_value.id = 'fake-network'
772+
773+
arglist = [
774+
servers[0].id,
775+
'fake-network',
776+
'--tag', 'tag1',
777+
]
778+
verifylist = [
779+
('server', servers[0].id),
780+
('network', 'fake-network'),
781+
('tag', 'tag1'),
782+
]
783+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
784+
785+
ex = self.assertRaises(
786+
exceptions.CommandError,
787+
self.cmd.take_action,
788+
parsed_args)
789+
self.assertIn(
790+
'--os-compute-api-version 2.49 or greater is required',
791+
str(ex))
792+
737793

738794
@mock.patch(
739795
'openstackclient.api.compute_v2.APIv2.security_group_find'
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- Add ``--tag`` option to ``server add network`` command
4+
when add network to server. Only available starting
5+
with ``--os-compute-api-version 2.49``.

0 commit comments

Comments
 (0)