mirror of
https://github.com/kernelkit/infix.git
synced 2026-08-05 23:23:02 +02:00
Create topology objects that are tailored to represent topologies on the expected format. This let's us make convenient accessors for things like the controller node, infix devices, getting the ports used to reach a certain device from another one, etc.
66 lines
2.0 KiB
Python
Executable File
66 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import infamy
|
|
|
|
with infamy.Test() as test:
|
|
with test.step("Initialize"):
|
|
env = infamy.Env(infamy.std_topology("1x2"))
|
|
target = env.attach("target", "mgmt")
|
|
|
|
with test.step("Configure VLAN 10 on target:data with IP 10.0.0.2"):
|
|
_, tport = env.ltop.xlate("target", "data")
|
|
|
|
target.put_config_dict("ietf-interfaces", {
|
|
"interfaces": {
|
|
"interface": [
|
|
{
|
|
"name": tport,
|
|
"type": "iana-if-type:ethernetCsmacd",
|
|
"enabled": True,
|
|
},
|
|
{
|
|
"name": f"{tport}.10",
|
|
"type": "iana-if-type:l2vlan",
|
|
"parent-interface": tport,
|
|
"encapsulation": {
|
|
"dot1q-vlan": {
|
|
"outer-tag": {
|
|
"tag-type": "ieee802-dot1q-types:c-vlan",
|
|
"vlan-id": 10,
|
|
}
|
|
}
|
|
},
|
|
|
|
"ipv4": {
|
|
"address": [
|
|
{
|
|
"ip": "10.0.0.2",
|
|
"prefix-length": 24,
|
|
}
|
|
]
|
|
}
|
|
},
|
|
]
|
|
}
|
|
})
|
|
|
|
with test.step("Ping 10.0.0.2 from VLAN 10 on host:data with IP 10.0.0.1"):
|
|
_, hport = env.ltop.xlate("host", "data")
|
|
|
|
with infamy.IsolatedMacVlan(hport) as ns:
|
|
pingtest = ns.runsh("""
|
|
set -ex
|
|
|
|
ip link set iface up
|
|
ip link add dev vlan10 link iface up type vlan id 10
|
|
ip addr add 10.0.0.1/24 dev vlan10
|
|
|
|
ping -c1 -w5 10.0.0.2 || exit 1
|
|
""")
|
|
|
|
if pingtest.returncode:
|
|
print(pingtest.stdout)
|
|
test.fail()
|
|
|
|
test.succeed()
|