|
Server : Apache System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : matalashes ( 1004) PHP Version : 8.1.29 Disable Function : NONE Directory : /usr/src/cloud-init/tests/unittests/config/ |
Upload File : |
import logging
from textwrap import dedent
from cloudinit import util
from cloudinit.config import cc_refresh_rmc_and_interface as ccrmci
from tests.unittests import helpers as t_help
from tests.unittests.helpers import mock
LOG = logging.getLogger(__name__)
MPATH = "cloudinit.config.cc_refresh_rmc_and_interface"
NET_INFO = {
"lo": {
"ipv4": [
{
"ip": "127.0.0.1",
"bcast": "",
"mask": "255.0.0.0",
"scope": "host",
}
],
"ipv6": [{"ip": "::1/128", "scope6": "host"}],
"hwaddr": "",
"up": "True",
},
"env2": {
"ipv4": [
{
"ip": "8.0.0.19",
"bcast": "8.0.0.255",
"mask": "255.255.255.0",
"scope": "global",
}
],
"ipv6": [{"ip": "fe80::f896:c2ff:fe81:8220/64", "scope6": "link"}],
"hwaddr": "fa:96:c2:81:82:20",
"up": "True",
},
"env3": {
"ipv4": [
{
"ip": "90.0.0.14",
"bcast": "90.0.0.255",
"mask": "255.255.255.0",
"scope": "global",
}
],
"ipv6": [{"ip": "fe80::f896:c2ff:fe81:8221/64", "scope6": "link"}],
"hwaddr": "fa:96:c2:81:82:21",
"up": "True",
},
"env4": {
"ipv4": [
{
"ip": "9.114.23.7",
"bcast": "9.114.23.255",
"mask": "255.255.255.0",
"scope": "global",
}
],
"ipv6": [{"ip": "fe80::f896:c2ff:fe81:8222/64", "scope6": "link"}],
"hwaddr": "fa:96:c2:81:82:22",
"up": "True",
},
"env5": {
"ipv4": [],
"ipv6": [{"ip": "fe80::9c26:c3ff:fea4:62c8/64", "scope6": "link"}],
"hwaddr": "42:20:86:df:fa:4c",
"up": "True",
},
}
class TestRsctNodeFile(t_help.CiTestCase):
def test_disable_ipv6_interface(self):
"""test parsing of iface files."""
fname = self.tmp_path("iface-eth5")
util.write_file(
fname,
dedent(
"""\
BOOTPROTO=static
DEVICE=eth5
HWADDR=42:20:86:df:fa:4c
IPV6INIT=yes
IPADDR6=fe80::9c26:c3ff:fea4:62c8/64
IPV6ADDR=fe80::9c26:c3ff:fea4:62c8/64
NM_CONTROLLED=yes
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
USERCTL=no
"""
),
)
ccrmci.disable_ipv6(fname)
self.assertEqual(
dedent(
"""\
BOOTPROTO=static
DEVICE=eth5
HWADDR=42:20:86:df:fa:4c
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
USERCTL=no
NM_CONTROLLED=no
"""
),
util.load_file(fname),
)
@mock.patch(MPATH + ".restart_network_manager")
@mock.patch(MPATH + ".disable_ipv6")
@mock.patch(MPATH + ".refresh_ipv6")
@mock.patch(MPATH + ".netinfo.netdev_info")
@mock.patch(MPATH + ".subp.which")
def test_handle(
self,
m_refresh_rmc,
m_netdev_info,
m_refresh_ipv6,
m_disable_ipv6,
m_restart_nm,
):
"""Basic test of handle.
TODO: This test has suspicious mock names, is it actually testing the
correct things?
"""
m_netdev_info.return_value = NET_INFO
ccrmci.handle("refresh_rmc_and_interface", None, None, None)
self.assertEqual(1, m_netdev_info.call_count)
m_refresh_ipv6.assert_called_with("env5")
m_disable_ipv6.assert_called_with(
"/etc/sysconfig/network-scripts/ifcfg-env5"
)
self.assertEqual(1, m_restart_nm.call_count)
self.assertEqual(1, m_refresh_rmc.call_count)
@mock.patch(MPATH + ".netinfo.netdev_info")
def test_find_ipv6(self, m_netdev_info):
"""find_ipv6_ifaces parses netdev_info returning those with ipv6"""
m_netdev_info.return_value = NET_INFO
found = ccrmci.find_ipv6_ifaces()
self.assertEqual(["env5"], found)
@mock.patch(MPATH + ".subp.subp")
def test_refresh_ipv6(self, m_subp):
"""refresh_ipv6 should ip down and up the interface."""
iface = "myeth0"
ccrmci.refresh_ipv6(iface)
m_subp.assert_has_calls(
[
mock.call(["ip", "link", "set", iface, "down"]),
mock.call(["ip", "link", "set", iface, "up"]),
]
)