diff options
Diffstat (limited to 'mknet')
-rwxr-xr-x | mknet | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -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: |