aboutsummaryrefslogtreecommitdiff
path: root/mknet
diff options
context:
space:
mode:
Diffstat (limited to 'mknet')
-rwxr-xr-xmknet13
1 files changed, 11 insertions, 2 deletions
diff --git a/mknet b/mknet
index 5c09a18..60f7f74 100755
--- a/mknet
+++ b/mknet
@@ -349,22 +349,31 @@ def destroy():
net.ns.forget("unconfined")
os.remove(".current_state.yml")
+def scenario(config, cmd):
+ create(config)
+ runall(cmd)
+ destroy()
+
if __name__ == "__main__":
if len(sys.argv) < 2:
progname = os.path.basename(sys.argv[0]) if len(sys.argv) > 0 else "mknet"
print(f"""Usage:
- {progname} create [config_path] # create a new network. config_path defailt to config.yml
+ {progname} scenario <config_path> <cmd> [args...] # all in one simulation: create a network, run the command on all nodes, destroy the network
+
+ {progname} create [config_path] # create a new network. config_path defailt to topo/with-vdsl.yml
{progname} run-all <cmd> [args...] # run a command as each host. set the IP, NAME and ZONE environment variables
{progname} run <name> [cmd [args...]] # run command in host named <name>. Use zonename:name if multiple zones hosts server with same name. If cmd is empty, run a shell
{progname} destroy # destroy the current environment""")
exit()
cmd = sys.argv[1]
if cmd == "create":
- create(sys.argv[2] if len(sys.argv) > 2 else "config.yml")
+ create(sys.argv[2] if len(sys.argv) > 2 else "topo/with-vdsl.yml")
elif cmd == "run":
run(sys.argv[2], sys.argv[3:])
elif cmd == "run-all":
runall(sys.argv[2:])
+ elif cmd == "scenario":
+ scenario(sys.argv[2], sys.argv[3:])
elif cmd == "destroy":
destroy()
else: