|
Packit Service |
5e62f7 |
#
|
|
Packit Service |
5e62f7 |
# Copyright (c) 2018-2019 Red Hat, Inc.
|
|
Packit Service |
5e62f7 |
#
|
|
Packit Service |
5e62f7 |
# This file is part of nmstate
|
|
Packit Service |
5e62f7 |
#
|
|
Packit Service |
5e62f7 |
# This program is free software: you can redistribute it and/or modify
|
|
Packit Service |
5e62f7 |
# it under the terms of the GNU Lesser General Public License as published by
|
|
Packit Service |
5e62f7 |
# the Free Software Foundation, either version 2.1 of the License, or
|
|
Packit Service |
5e62f7 |
# (at your option) any later version.
|
|
Packit Service |
5e62f7 |
#
|
|
Packit Service |
5e62f7 |
# This program is distributed in the hope that it will be useful,
|
|
Packit Service |
5e62f7 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
5e62f7 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit Service |
5e62f7 |
# GNU Lesser General Public License for more details.
|
|
Packit Service |
5e62f7 |
#
|
|
Packit Service |
5e62f7 |
# You should have received a copy of the GNU Lesser General Public License
|
|
Packit Service |
5e62f7 |
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
Packit Service |
5e62f7 |
#
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
import pytest
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
import libnmstate
|
|
Packit Service |
5e62f7 |
from libnmstate.iplib import is_ipv6_link_local_addr
|
|
Packit Service |
5e62f7 |
from libnmstate.schema import Interface
|
|
Packit Service |
5e62f7 |
from libnmstate.schema import InterfaceIPv4
|
|
Packit Service |
5e62f7 |
from libnmstate.schema import InterfaceIPv6
|
|
Packit Service |
5e62f7 |
from libnmstate.schema import InterfaceState
|
|
Packit Service |
5e62f7 |
from libnmstate.schema import InterfaceType
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
from .testlib import assertlib
|
|
Packit Service |
5e62f7 |
from .testlib import cmdlib
|
|
Packit Service |
5e62f7 |
from .testlib import statelib
|
|
Packit Service |
5e62f7 |
from .testlib.dummy import nm_unmanaged_dummy
|
|
Packit Service |
5e62f7 |
from .testlib.iproutelib import ip_monitor_assert_stable_link_up
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
# TEST-NET addresses: https://tools.ietf.org/html/rfc5737#section-3
|
|
Packit Service |
5e62f7 |
IPV4_ADDRESS1 = "192.0.2.251"
|
|
Packit Service |
5e62f7 |
IPV4_ADDRESS2 = "192.0.2.252"
|
|
Packit Service |
5e62f7 |
IPV4_ADDRESS3 = "198.51.100.249"
|
|
Packit Service |
5e62f7 |
IPV4_ADDRESS4 = "198.51.100.250"
|
|
Packit Service |
5e62f7 |
# IPv6 Address Prefix Reserved for Documentation:
|
|
Packit Service |
5e62f7 |
# https://tools.ietf.org/html/rfc3849
|
|
Packit Service |
5e62f7 |
IPV6_ADDRESS1 = "2001:db8:1::1"
|
|
Packit Service |
5e62f7 |
IPV6_ADDRESS2 = "2001:db8:2::1"
|
|
Packit Service |
5e62f7 |
IPV6_LINK_LOCAL_ADDRESS1 = "fe80::1"
|
|
Packit Service |
5e62f7 |
IPV6_LINK_LOCAL_ADDRESS2 = "fe80::2"
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
DUMMY1 = "dummy1"
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.fixture
|
|
Packit Service |
5e62f7 |
def setup_eth1_ipv4(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
yield desired_state
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.fixture
|
|
Packit Service |
5e62f7 |
def setup_eth1_ipv6(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
return desired_state
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.fixture
|
|
Packit Service |
5e62f7 |
def setup_eth1_ipv6_disable(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {InterfaceIPv6.ENABLED: False},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
return desired_state
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_static_ipv4_with_full_state(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_desired_state = desired_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.STATE] = InterfaceState.UP
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV4][InterfaceIPv4.ENABLED] = True
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV4][InterfaceIPv4.ADDRESS] = [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS3,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_add_static_ipv4_with_min_state(eth2_up):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth2",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS4,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_remove_static_ipv4(setup_eth1_ipv4):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {InterfaceIPv4.ENABLED: False},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_edit_static_ipv4_address_and_prefix(setup_eth1_ipv4):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS2,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 30,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_ifaces_with_same_static_ipv4_address_in_one_transaction(
|
|
Packit Service |
5e62f7 |
eth1_up, eth2_up
|
|
Packit Service |
5e62f7 |
):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth2",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_add_iface_with_same_static_ipv4_address_to_existing(
|
|
Packit Service |
5e62f7 |
setup_eth1_ipv4, eth2_up
|
|
Packit Service |
5e62f7 |
):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth2",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_add_static_ipv6_with_full_state(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_desired_state = desired_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.STATE] = InterfaceState.UP
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ENABLED] = True
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS] = [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS2,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
# This sequence is intentionally made for IP address sorting.
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_static_ipv6_with_link_local(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_desired_state = desired_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.STATE] = InterfaceState.UP
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ENABLED] = True
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS] = [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_LINK_LOCAL_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
# Make sure only the link local address got ignored.
|
|
Packit Service |
5e62f7 |
cur_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_cur_state = cur_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
assert (
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS][0]
|
|
Packit Service |
5e62f7 |
not in eth1_cur_state[Interface.IPV6][InterfaceIPv6.ADDRESS]
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
assert (
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS][1]
|
|
Packit Service |
5e62f7 |
in eth1_cur_state[Interface.IPV6][InterfaceIPv6.ADDRESS]
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_static_ipv6_with_link_local_only(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_desired_state = desired_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.STATE] = InterfaceState.UP
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ENABLED] = True
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS] = [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_LINK_LOCAL_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_LINK_LOCAL_ADDRESS2,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
# Make sure the link local address got ignored.
|
|
Packit Service |
5e62f7 |
cur_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_cur_state = cur_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
assert (
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS][0]
|
|
Packit Service |
5e62f7 |
not in eth1_cur_state[Interface.IPV6][InterfaceIPv6.ADDRESS]
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
assert (
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS][1]
|
|
Packit Service |
5e62f7 |
not in eth1_cur_state[Interface.IPV6][InterfaceIPv6.ADDRESS]
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_add_static_ipv6_with_no_address(eth1_up):
|
|
Packit Service |
5e62f7 |
desired_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_desired_state = desired_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.STATE] = InterfaceState.UP
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ENABLED] = True
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
cur_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
eth1_cur_state = cur_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
# Should have at least 1 link-local address.
|
|
Packit Service |
5e62f7 |
assert len(eth1_cur_state[Interface.IPV6][InterfaceIPv6.ADDRESS]) >= 1
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_static_ipv6_with_min_state(eth2_up):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth2",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_disable_static_ipv6(setup_eth1_ipv6):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {InterfaceIPv6.ENABLED: False},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_disable_static_ipv6_and_rollback(setup_eth1_ipv6):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {InterfaceIPv6.ENABLED: False},
|
|
Packit Service |
5e62f7 |
"foo": "bad_value",
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
with pytest.raises(libnmstate.error.NmstateVerificationError):
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(setup_eth1_ipv6)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_enable_ipv6_and_rollback_to_disable_ipv6(setup_eth1_ipv6_disable):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
"foo": "bad_value",
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
with pytest.raises(libnmstate.error.NmstateVerificationError):
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(setup_eth1_ipv6_disable)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_edit_static_ipv6_address_and_prefix(setup_eth1_ipv6):
|
|
Packit Service |
5e62f7 |
eth1_setup = setup_eth1_ipv6[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS2,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
eth1_desired_state = desired_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
current_state = statelib.show_only(("eth1",))
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
eth1_current_state = current_state[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assert (
|
|
Packit Service |
5e62f7 |
eth1_desired_state[Interface.IPV6][InterfaceIPv6.ADDRESS][0]
|
|
Packit Service |
5e62f7 |
in eth1_current_state[Interface.IPV6][InterfaceIPv6.ADDRESS]
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assert (
|
|
Packit Service |
5e62f7 |
eth1_setup[Interface.IPV6][InterfaceIPv6.ADDRESS][0]
|
|
Packit Service |
5e62f7 |
not in eth1_current_state[Interface.IPV6][InterfaceIPv6.ADDRESS]
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_ifaces_with_same_static_ipv6_address_in_one_transaction(
|
|
Packit Service |
5e62f7 |
eth1_up, eth2_up
|
|
Packit Service |
5e62f7 |
):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth2",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_iface_with_same_static_ipv6_address_to_existing(
|
|
Packit Service |
5e62f7 |
setup_eth1_ipv6, eth2_up
|
|
Packit Service |
5e62f7 |
):
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth2",
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_add_iface_with_static_ipv6_expanded_format(eth1_up):
|
|
Packit Service |
5e62f7 |
ipv6_addr_lead_zeroes = "2001:0db8:85a3:0000:0000:8a2e:0370:7331"
|
|
Packit Service |
5e62f7 |
desired_state = {
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: eth1_up[Interface.KEY][0][Interface.NAME],
|
|
Packit Service |
5e62f7 |
Interface.TYPE: InterfaceType.ETHERNET,
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.UP,
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: ipv6_addr_lead_zeroes,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
libnmstate.apply(desired_state)
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(desired_state)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
@ip_monitor_assert_stable_link_up("eth1")
|
|
Packit Service |
5e62f7 |
def test_modify_ipv4_with_reapply(setup_eth1_ipv4):
|
|
Packit Service |
5e62f7 |
ipv4_addr = IPV4_ADDRESS2
|
|
Packit Service |
5e62f7 |
ipv4_state = setup_eth1_ipv4[Interface.KEY][0][Interface.IPV4]
|
|
Packit Service |
5e62f7 |
ipv4_state[InterfaceIPv4.ADDRESS][0][InterfaceIPv4.ADDRESS_IP] = ipv4_addr
|
|
Packit Service |
5e62f7 |
libnmstate.apply(setup_eth1_ipv4)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(setup_eth1_ipv4)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
@ip_monitor_assert_stable_link_up("eth1")
|
|
Packit Service |
5e62f7 |
def test_modify_ipv6_with_reapply(setup_eth1_ipv6):
|
|
Packit Service |
5e62f7 |
ipv6_addr = IPV6_ADDRESS2
|
|
Packit Service |
5e62f7 |
ipv6_state = setup_eth1_ipv6[Interface.KEY][0][Interface.IPV6]
|
|
Packit Service |
5e62f7 |
ipv6_state[InterfaceIPv6.ADDRESS][0][InterfaceIPv6.ADDRESS_IP] = ipv6_addr
|
|
Packit Service |
5e62f7 |
libnmstate.apply(setup_eth1_ipv6)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assertlib.assert_state(setup_eth1_ipv6)
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
@pytest.mark.tier1
|
|
Packit Service |
5e62f7 |
def test_get_ip_address_from_unmanaged_dummy():
|
|
Packit Service |
5e62f7 |
with nm_unmanaged_dummy(DUMMY1):
|
|
Packit Service |
5e62f7 |
cmdlib.exec_cmd(
|
|
Packit Service |
5e62f7 |
f"ip addr add {IPV4_ADDRESS1}/24 dev {DUMMY1}".split(), check=True
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
cmdlib.exec_cmd(
|
|
Packit Service |
5e62f7 |
f"ip -6 addr add {IPV6_ADDRESS2}/64 dev {DUMMY1}".split(),
|
|
Packit Service |
5e62f7 |
check=True,
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
iface_state = statelib.show_only((DUMMY1,))[Interface.KEY][0]
|
|
Packit Service |
5e62f7 |
# Remove IPv6 link local address
|
|
Packit Service |
5e62f7 |
iface_state[Interface.IPV6][InterfaceIPv6.ADDRESS] = [
|
|
Packit Service |
5e62f7 |
addr
|
|
Packit Service |
5e62f7 |
for addr in iface_state[Interface.IPV6][InterfaceIPv6.ADDRESS]
|
|
Packit Service |
5e62f7 |
if not is_ipv6_link_local_addr(
|
|
Packit Service |
5e62f7 |
addr[InterfaceIPv6.ADDRESS_IP],
|
|
Packit Service |
5e62f7 |
addr[InterfaceIPv6.ADDRESS_PREFIX_LENGTH],
|
|
Packit Service |
5e62f7 |
)
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assert iface_state[Interface.IPV4] == {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: IPV4_ADDRESS1,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
assert iface_state[Interface.IPV6] == {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: IPV6_ADDRESS2,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
|
|
Packit Service |
5e62f7 |
def test_ignore_invalid_ip_on_absent_interface(eth1_up):
|
|
Packit Service |
5e62f7 |
libnmstate.apply(
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.KEY: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
Interface.NAME: "eth1",
|
|
Packit Service |
5e62f7 |
Interface.STATE: InterfaceState.ABSENT,
|
|
Packit Service |
5e62f7 |
Interface.IPV4: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_IP: "a.a.a.a",
|
|
Packit Service |
5e62f7 |
InterfaceIPv4.ADDRESS_PREFIX_LENGTH: 24,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
Interface.IPV6: {
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ENABLED: True,
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS: [
|
|
Packit Service |
5e62f7 |
{
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_IP: "::g",
|
|
Packit Service |
5e62f7 |
InterfaceIPv6.ADDRESS_PREFIX_LENGTH: 64,
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
],
|
|
Packit Service |
5e62f7 |
},
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
]
|
|
Packit Service |
5e62f7 |
}
|
|
Packit Service |
5e62f7 |
)
|