Skip to content

Commit 6f16023

Browse files
Huihuihhstephenfin
authored andcommitted
Compute: Add tag support for server add network
Change-Id: I31a66b2d4dac44052a71f43a5a67836247ccac64 Story: 2002195 Task: 21678
1 parent a48c05b commit 6f16023

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
@@ -387,6 +387,14 @@ def get_parser(self, prog_name):
387387
metavar="<network>",
388388
help=_("Network to add to the server (name or ID)"),
389389
)
390+
parser.add_argument(
391+
'--tag',
392+
metavar='<tag>',
393+
help=_(
394+
'Tag for the attached interface. '
395+
'(supported by --os-compute-api-version 2.49 or above)'
396+
),
397+
)
390398
return parser
391399

392400
def take_action(self, parsed_args):
@@ -402,7 +410,23 @@ def take_action(self, parsed_args):
402410
else:
403411
net_id = parsed_args.network
404412

405-
server.interface_attach(port_id=None, net_id=net_id, fixed_ip=None)
413+
kwargs = {
414+
'port_id': None,
415+
'net_id': net_id,
416+
'fixed_ip': None,
417+
}
418+
419+
if parsed_args.tag:
420+
if compute_client.api_version < api_versions.APIVersion('2.49'):
421+
msg = _(
422+
'--os-compute-api-version 2.49 or greater is required to '
423+
'support the --tag option'
424+
)
425+
raise exceptions.CommandError(msg)
426+
427+
kwargs['tag'] = parsed_args.tag
428+
429+
server.interface_attach(**kwargs)
406430

407431

408432
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
@@ -681,6 +681,62 @@ def test_server_add_network_no_neutron(self):
681681
self._test_server_add_network('fake-network')
682682
self.find_network.assert_not_called()
683683

684+
def test_server_add_network_with_tag(self):
685+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
686+
'2.49')
687+
688+
servers = self.setup_servers_mock(count=1)
689+
self.find_network.return_value.id = 'fake-network'
690+
691+
arglist = [
692+
servers[0].id,
693+
'fake-network',
694+
'--tag', 'tag1',
695+
]
696+
verifylist = [
697+
('server', servers[0].id),
698+
('network', 'fake-network'),
699+
('tag', 'tag1'),
700+
]
701+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
702+
703+
result = self.cmd.take_action(parsed_args)
704+
self.assertIsNone(result)
705+
706+
servers[0].interface_attach.assert_called_once_with(
707+
port_id=None,
708+
net_id='fake-network',
709+
fixed_ip=None,
710+
tag='tag1'
711+
)
712+
713+
def test_server_add_network_with_tag_pre_v249(self):
714+
self.app.client_manager.compute.api_version = api_versions.APIVersion(
715+
'2.48')
716+
717+
servers = self.setup_servers_mock(count=1)
718+
self.find_network.return_value.id = 'fake-network'
719+
720+
arglist = [
721+
servers[0].id,
722+
'fake-network',
723+
'--tag', 'tag1',
724+
]
725+
verifylist = [
726+
('server', servers[0].id),
727+
('network', 'fake-network'),
728+
('tag', 'tag1'),
729+
]
730+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
731+
732+
ex = self.assertRaises(
733+
exceptions.CommandError,
734+
self.cmd.take_action,
735+
parsed_args)
736+
self.assertIn(
737+
'--os-compute-api-version 2.49 or greater is required',
738+
str(ex))
739+
684740

685741
@mock.patch(
686742
'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)