Skip to content

Commit 47fa9ba

Browse files
committed
Add support for setting extra DHCP options on existing ports
It is now possible to set extra DHCP option for an existing port using "port set" command. It works in the same way like during port creation. Story: 2009095 Task: 42927 Change-Id: I3577d4e3a303137b708ae8687c44b486aa82e296
1 parent d876b41 commit 47fa9ba

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
@@ -819,6 +819,17 @@ def get_parser(self, prog_name):
819819
"(Specify both --allowed-address and --no-allowed-address "
820820
"to overwrite the current allowed-address pairs)")
821821
)
822+
parser.add_argument(
823+
'--extra-dhcp-option',
824+
metavar='name=<name>[,value=<value>,ip-version={4,6}]',
825+
default=[],
826+
action=parseractions.MultiKeyValueCommaAction,
827+
dest='extra_dhcp_options',
828+
required_keys=['name'],
829+
optional_keys=['value', "ip-version"],
830+
help=_('Extra DHCP options to be assigned to this port: '
831+
'name=<name>[,value=<value>,ip-version={4,6}] '
832+
'(repeat option to set multiple extra DHCP options)'))
822833
parser.add_argument(
823834
'--data-plane-status',
824835
metavar='<status>',
@@ -881,6 +892,10 @@ def take_action(self, parsed_args):
881892
attrs['allowed_address_pairs'].extend(
882893
_convert_address_pairs(parsed_args)
883894
)
895+
896+
if parsed_args.extra_dhcp_options:
897+
attrs["extra_dhcp_opts"] = _convert_extra_dhcp_options(parsed_args)
898+
884899
if parsed_args.data_plane_status:
885900
attrs['data_plane_status'] = parsed_args.data_plane_status
886901

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)