1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

addons: link: ifquery-check now validates admin state

[12:57:29] root:~ # ifquery -a
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto swp1
iface swp1
        post-up ip link set dev swp1 down

auto swp2
iface swp2
        link-down yes

auto swp3
iface swp3
        link-down no

auto swp4
iface swp4

[12:57:29] root:~ #
[12:57:29] root:~ #
[12:57:30] root:~ #
[12:57:30] root:~ # ifquery -ac
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp                                                [pass]

auto swp1
iface swp1 (link is down)                                           [fail]
        post-up ip link set dev swp1 down                               []

auto swp2
iface swp2                                                          [pass]
        link-down yes                                               [pass]

auto swp3
iface swp3                                                          [pass]
        link-down no                                                [pass]

auto swp4
iface swp4

[12:57:31] root:~ #

Signed-off-by: Julien Fortin <jfortin@nvidia.com>
This commit is contained in:
Julien Fortin
2021-04-09 14:58:03 +02:00
parent 859b8643b6
commit 790a55e93e

View File

@ -123,11 +123,22 @@ class link(Addon, moduleBase):
else: else:
ifaceobjcurr.update_config_with_status('link-type', link_type, 1) ifaceobjcurr.update_config_with_status('link-type', link_type, 1)
link_down = ifaceobj.get_attr_value_first('link-down') self._query_check_link_down(ifaceobj, ifaceobjcurr)
if link_down:
link_up = self.cache.link_is_up(ifaceobj.name)
link_should_be_down = utils.get_boolean_from_string(link_down)
def _query_check_link_down(self, ifaceobj, ifaceobjcurr):
link_down = ifaceobj.get_attr_value_first('link-down')
if link_down:
link_should_be_down = utils.get_boolean_from_string(link_down)
else:
link_should_be_down = False
link_up = self.cache.link_is_up(ifaceobj.name)
if not link_up and not link_should_be_down and not link_down:
ifaceobjcurr.status_str = 'link is down'
ifaceobjcurr.status = ifaceStatus.ERROR
elif link_down:
if link_should_be_down and link_up: if link_should_be_down and link_up:
status = 1 status = 1
link_down = 'no' link_down = 'no'
@ -153,7 +164,7 @@ class link(Addon, moduleBase):
op_handler = self._run_ops.get(operation) op_handler = self._run_ops.get(operation)
if not op_handler: if not op_handler:
return return
if (operation != 'query-running' and if (operation != 'query-running' and operation != 'query-checkcurr' and
not self._is_my_interface(ifaceobj)): not self._is_my_interface(ifaceobj)):
return return
if operation == 'query-checkcurr': if operation == 'query-checkcurr':