aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2022-09-15 17:00:02 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2022-09-15 17:00:02 +0200
commit62e4ed55a47f04546a195e3d514b060fe3ac23cb (patch)
tree762a2c14e61abb98ec5ec81eab0fb0ce45dcb915
parentcfd3e500feb59ba3c1bd1247dac3b4537c8592ba (diff)
downloadmknet-62e4ed55a47f04546a195e3d514b060fe3ac23cb.tar.gz
mknet-62e4ed55a47f04546a195e3d514b060fe3ac23cb.zip
Implement scenario subcommand
-rw-r--r--README.md2
-rwxr-xr-xmknet13
2 files changed, 12 insertions, 3 deletions
diff --git a/README.md b/README.md
index b04a961..8b23bce 100644
--- a/README.md
+++ b/README.md
@@ -47,7 +47,7 @@ import garage_admin_sdk
(Not yet implemented)
```bash
-./mknet scenario ./scenarios/garage-s3lat ./topo/single-dc.yml
+./mknet scenario ./topo/single-dc.yml ./scenarios/garage-s3lat
```
## Manual usage
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: