lxc-network/spawn_network.py

48 lines
1.1 KiB
Python
Raw Normal View History

2020-03-12 11:40:17 +01:00
#!/usr/bin/env python3
from lxc_net import parse_network
import signal
import libvirt
import argparse
def parse_args():
parser = argparse.ArgumentParser(description="Spawns a network of LXC containers.")
parser.add_argument("topology", help="A YAML file defining the network topology")
args = parser.parse_args()
return args
def main():
args = parse_args()
received_sigint = False
def handle_sigint(signum, frame):
""" Called upon SIGINT (^C) """
nonlocal received_sigint
print(" >> Received SIGINT, stopping network...")
received_sigint = True
signal.signal(signal.SIGINT, handle_sigint)
conn = libvirt.open("lxc:///")
topology = parse_network.YamlTopology(args.topology, conn)
2020-03-19 19:06:44 +01:00
topology.net_start(verbose=True)
topology.dom_start(verbose=True)
2020-03-12 11:40:17 +01:00
print("Network running. Press ^C to terminate.")
while not received_sigint: # Wait for SIGINT
signal.pause()
2020-03-19 19:06:44 +01:00
topology.dom_stop(verbose=True)
topology.net_stop(verbose=True)
2020-03-12 11:40:17 +01:00
if __name__ == "__main__":
main()