Skip to content

Commit

Permalink
debian: Use f-strings for results
Browse files Browse the repository at this point in the history
Going to need some logic in here when we start adding variable number of
nics.
  • Loading branch information
mmlb committed Mar 5, 2024
1 parent dc0d8d3 commit c9072c5
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 166 deletions.
177 changes: 67 additions & 110 deletions packetnetworking/distros/debian/test_bonded.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from textwrap import dedent
from ... import utils
from .conftest import versions
import pytest

Expand All @@ -21,8 +20,16 @@ def test_public_bonded_task_etc_network_interfaces(
builder = bonded_network_builder(distro, version, public=True)
tasks = builder.render()

bonding_mode = builder.network.bonding.mode
dns1 = builder.network.resolvers[0]
dns2 = builder.network.resolvers[1]
iface0 = builder.network.interfaces[0]
iface1 = builder.network.interfaces[1]
ipv4priv = builder.ipv4priv.first
ipv4pub = builder.ipv4pub.first
ipv6pub = builder.ipv6pub.first
if distro == "ubuntu":
result = """\
result = f"""\
auto lo
iface lo inet loopback
Expand Down Expand Up @@ -63,7 +70,7 @@ def test_public_bonded_task_etc_network_interfaces(
post-down route del -net 10.0.0.0/8 gw {ipv4priv.gateway}
"""
else:
result = """\
result = f"""\
auto lo
iface lo inet loopback
Expand Down Expand Up @@ -94,17 +101,7 @@ def test_public_bonded_task_etc_network_interfaces(
post-down route del -net 10.0.0.0/8 gw {ipv4priv.gateway}
"""

result = dedent(result).format(
ipv4pub=builder.ipv4pub.first,
ipv6pub=builder.ipv6pub.first,
ipv4priv=builder.ipv4priv.first,
iface0=builder.network.interfaces[0],
iface1=builder.network.interfaces[1],
bonding_mode=builder.network.bonding.mode,
dns1=builder.network.resolvers[0],
dns2=builder.network.resolvers[1],
)
assert tasks["etc/network/interfaces"] == result
assert tasks["etc/network/interfaces"] == dedent(result)


@pytest.mark.parametrize("distro,version", versions)
Expand All @@ -117,36 +114,15 @@ def test_private_bonded_task_etc_network_interfaces(
"""
builder = bonded_network_builder(distro, version, public=False)
tasks = builder.render()
if distro == "ubuntu":
result = """\
auto lo
iface lo inet loopback

auto {iface0.name}
iface {iface0.name} inet manual
bond-master bond0
auto {iface1.name}
iface {iface1.name} inet manual
pre-up sleep 4
bond-master bond0
auto bond0
iface bond0 inet static
address {ipv4priv.address}
netmask {ipv4priv.netmask}
gateway {ipv4priv.gateway}
dns-nameservers {dns1} {dns2}
bond-downdelay 200
bond-miimon 100
bond-mode {bonding_mode}
bond-updelay 200
bond-xmit_hash_policy layer3+4
bond-lacp-rate 1
bond-slaves {iface0.name} {iface1.name}
"""
result = """\
bonding_mode = builder.network.bonding.mode
dns1 = builder.network.resolvers[0]
dns2 = builder.network.resolvers[1]
iface0 = builder.network.interfaces[0]
iface1 = builder.network.interfaces[1]
ipv4priv = builder.ipv4priv.first
if distro == "ubuntu":
result = f"""\
auto lo
iface lo inet loopback
Expand Down Expand Up @@ -175,7 +151,7 @@ def test_private_bonded_task_etc_network_interfaces(
bond-slaves {iface0.name} {iface1.name}
"""
else:
result = """\
result = f"""\
auto lo
iface lo inet loopback
Expand All @@ -193,15 +169,7 @@ def test_private_bonded_task_etc_network_interfaces(
bond-xmit_hash_policy layer3+4
bond-slaves {iface0.name} {iface1.name}
"""
result = dedent(result).format(
ipv4priv=builder.ipv4priv.first,
iface0=builder.network.interfaces[0],
iface1=builder.network.interfaces[1],
bonding_mode=builder.network.bonding.mode,
dns1=builder.network.resolvers[0],
dns2=builder.network.resolvers[1],
)
assert tasks["etc/network/interfaces"] == result
assert tasks["etc/network/interfaces"] == dedent(result)


@pytest.mark.parametrize("distro,version", versions)
Expand All @@ -212,8 +180,17 @@ def test_public_bonded_task_etc_network_interfaces_with_custom_private_ip_space(
subnets = {"private_subnets": ["192.168.5.0/24", "172.16.0.0/12"]}
builder = bonded_network_builder(distro, version, public=True, metadata=subnets)
tasks = builder.render()

bonding_mode = builder.network.bonding.mode
dns1 = builder.network.resolvers[0]
dns2 = builder.network.resolvers[1]
iface0 = builder.network.interfaces[0]
iface1 = builder.network.interfaces[1]
ipv4priv = builder.ipv4priv.first
ipv4pub = builder.ipv4pub.first
ipv6pub = builder.ipv6pub.first
if distro == "ubuntu":
result = """\
result = f"""\
auto lo
iface lo inet loopback
Expand Down Expand Up @@ -256,7 +233,7 @@ def test_public_bonded_task_etc_network_interfaces_with_custom_private_ip_space(
post-down route del -net 172.16.0.0/12 gw {ipv4priv.gateway}
"""
else:
result = """\
result = f"""\
auto lo
iface lo inet loopback
Expand Down Expand Up @@ -288,17 +265,7 @@ def test_public_bonded_task_etc_network_interfaces_with_custom_private_ip_space(
post-up route add -net 172.16.0.0/12 gw {ipv4priv.gateway}
post-down route del -net 172.16.0.0/12 gw {ipv4priv.gateway}
"""
result = dedent(result).format(
ipv4pub=builder.ipv4pub.first,
ipv6pub=builder.ipv6pub.first,
ipv4priv=builder.ipv4priv.first,
iface0=builder.network.interfaces[0],
iface1=builder.network.interfaces[1],
bonding_mode=builder.network.bonding.mode,
dns1=builder.network.resolvers[0],
dns2=builder.network.resolvers[1],
)
assert tasks["etc/network/interfaces"] == result
assert tasks["etc/network/interfaces"] == dedent(result)


@pytest.mark.parametrize("distro,version", versions)
Expand All @@ -312,8 +279,15 @@ def test_private_bonded_task_etc_network_interfaces_with_custom_private_ip_space
subnets = {"private_subnets": ["192.168.5.0/24", "172.16.0.0/12"]}
builder = bonded_network_builder(distro, version, public=False, metadata=subnets)
tasks = builder.render()

bonding_mode = builder.network.bonding.mode
dns1 = builder.network.resolvers[0]
dns2 = builder.network.resolvers[1]
iface0 = builder.network.interfaces[0]
iface1 = builder.network.interfaces[1]
ipv4priv = builder.ipv4priv.first
if distro == "ubuntu":
result = """\
result = f"""\
auto lo
iface lo inet loopback
Expand All @@ -340,9 +314,9 @@ def test_private_bonded_task_etc_network_interfaces_with_custom_private_ip_space
bond-xmit_hash_policy layer3+4
bond-lacp-rate 1
bond-slaves {iface0.name} {iface1.name}
"""
"""
else:
result = """\
result = f"""\
auto lo
iface lo inet loopback
Expand All @@ -359,28 +333,17 @@ def test_private_bonded_task_etc_network_interfaces_with_custom_private_ip_space
bond-updelay 200
bond-xmit_hash_policy layer3+4
bond-slaves {iface0.name} {iface1.name}
"""
result = dedent(result).format(
ipv4priv=builder.ipv4priv.first,
iface0=builder.network.interfaces[0],
iface1=builder.network.interfaces[1],
bonding_mode=builder.network.bonding.mode,
dns1=builder.network.resolvers[0],
dns2=builder.network.resolvers[1],
)
assert tasks["etc/network/interfaces"] == result
"""
assert tasks["etc/network/interfaces"] == dedent(result)


@pytest.mark.parametrize("distro,version", versions)
def test_task_etc_modules(bonded_network_builder, distro, version):
"""Validates /etc/modules for a public bond"""
builder = bonded_network_builder(distro, version, public=True)
tasks = builder.render()
result = dedent(
"""\
bonding
"""
)

result = "bonding\n"
assert tasks["etc/modules"]["file_mode"] == "a"
assert tasks["etc/modules"]["content"] == result

Expand All @@ -396,20 +359,18 @@ def test_etc_systemd_resolved_configured(bonded_network_builder, fake, distro, v
builder.network.resolvers = (resolver1, resolver2)
tasks = builder.render()
if distro == "ubuntu":
result = """\
result = f"""\
[Resolve]
DNS={resolver1} {resolver2}
"""
result = dedent(result).format(resolver1=resolver1, resolver2=resolver2)
assert tasks["etc/systemd/resolved.conf"] == result
assert tasks["etc/systemd/resolved.conf"] == dedent(result)
assert "etc/resolv.conf" not in tasks
else:
result = """\
result = f"""\
nameserver {resolver1}
nameserver {resolver2}
"""
result = dedent(result).format(resolver1=resolver1, resolver2=resolver2)
assert tasks["etc/resolv.conf"] == result
assert tasks["etc/resolv.conf"] == dedent(result)


@pytest.mark.parametrize("distro,version", versions)
Expand All @@ -419,11 +380,9 @@ def test_etc_hostname_configured(bonded_network_builder, distro, version):
"""
builder = bonded_network_builder(distro, version)
tasks = builder.render()
result = dedent(
"""\
{hostname}
"""
).format(hostname=builder.metadata.hostname)

hostname = builder.metadata.hostname
result = f"{hostname}\n"
assert tasks["etc/hostname"] == result


Expand All @@ -434,17 +393,17 @@ def test_etc_hosts_configured(bonded_network_builder, distro, version):
"""
builder = bonded_network_builder(distro, version)
tasks = builder.render()
result = dedent(
"""\

hostname = builder.metadata.hostname
result = f"""\
127.0.0.1 localhost {hostname}
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
"""
).format(hostname=builder.metadata.hostname)
assert tasks["etc/hosts"] == result
"""
assert tasks["etc/hosts"] == dedent(result)


@pytest.mark.parametrize("distro,version", versions)
Expand All @@ -455,9 +414,12 @@ def test_persistent_interface_names(bonded_network_builder, distro, version):
"""
builder = bonded_network_builder(distro, version)
tasks = builder.render()
result = dedent(
"""\
{header}

iface0 = builder.network.interfaces[0]
iface1 = builder.network.interfaces[1]
result = f"""\
# This file was automatically generated by the Equinix Metal installation environment.
# See https://github.com/packethost/packet-networking for details.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
Expand All @@ -467,10 +429,5 @@ def test_persistent_interface_names(bonded_network_builder, distro, version):
# PCI device (custom name provided by external tool to mimic Predictable Network Interface Names)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{{address}}=="{iface1.mac}", ATTR{{dev_id}}=="0x0", ATTR{{type}}=="1", NAME="{iface1.name}"
"""
).format(
header=utils.generated_header(),
iface0=builder.network.interfaces[0],
iface1=builder.network.interfaces[1],
)
assert tasks["etc/udev/rules.d/70-persistent-net.rules"] == result
"""
assert tasks["etc/udev/rules.d/70-persistent-net.rules"] == dedent(result)
Loading

0 comments on commit c9072c5

Please sign in to comment.