Skip to content

Commit 63452f3

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Add support for setting extra DHCP options on existing ports"
2 parents bf71727 + 47fa9ba commit 63452f3

2 files changed

Lines changed: 36 additions & 0 deletions

File tree

openstackclient/network/v2/port.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,17 @@ def get_parser(self, prog_name):
820820
"(Specify both --allowed-address and --no-allowed-address "
821821
"to overwrite the current allowed-address pairs)")
822822
)
823+
parser.add_argument(
824+
'--extra-dhcp-option',
825+
metavar='name=<name>[,value=<value>,ip-version={4,6}]',
826+
default=[],
827+
action=parseractions.MultiKeyValueCommaAction,
828+
dest='extra_dhcp_options',
829+
required_keys=['name'],
830+
optional_keys=['value', "ip-version"],
831+
help=_('Extra DHCP options to be assigned to this port: '
832+
'name=<name>[,value=<value>,ip-version={4,6}] '
833+
'(repeat option to set multiple extra DHCP options)'))
823834
parser.add_argument(
824835
'--data-plane-status',
825836
metavar='<status>',
@@ -882,6 +893,10 @@ def take_action(self, parsed_args):
882893
attrs['allowed_address_pairs'].extend(
883894
_convert_address_pairs(parsed_args)
884895
)
896+
897+
if parsed_args.extra_dhcp_options:
898+
attrs["extra_dhcp_opts"] = _convert_extra_dhcp_options(parsed_args)
899+
885900
if parsed_args.data_plane_status:
886901
attrs['data_plane_status'] = parsed_args.data_plane_status
887902

openstackclient/tests/unit/network/v2/test_port.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,6 +1727,27 @@ def test_set_port_no_allowed_address_pairs(self):
17271727
self.network.update_port.assert_called_once_with(self._port, **attrs)
17281728
self.assertIsNone(result)
17291729

1730+
def test_set_port_extra_dhcp_option(self):
1731+
arglist = [
1732+
'--extra-dhcp-option', 'name=foo,value=bar',
1733+
self._port.name,
1734+
]
1735+
verifylist = [
1736+
('extra_dhcp_options', [{'name': 'foo',
1737+
'value': 'bar'}]),
1738+
('port', self._port.name),
1739+
]
1740+
1741+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1742+
result = self.cmd.take_action(parsed_args)
1743+
1744+
attrs = {
1745+
'extra_dhcp_opts': [{'opt_name': 'foo',
1746+
'opt_value': 'bar'}],
1747+
}
1748+
self.network.update_port.assert_called_once_with(self._port, **attrs)
1749+
self.assertIsNone(result)
1750+
17301751
def test_set_port_security_enabled(self):
17311752
arglist = [
17321753
'--enable-port-security',

0 commit comments

Comments
 (0)