Add more flexibility around the prefixes available
This allows you to specify a custom prefix, or a tmp prefix which is chosen automatically.
This commit is contained in:
@@ -249,6 +249,24 @@ Point to a graph file to run on the remote host specified within. This parameter
|
|||||||
can be used multiple times if you'd like to remotely run on multiple hosts in
|
can be used multiple times if you'd like to remotely run on multiple hosts in
|
||||||
parallel.
|
parallel.
|
||||||
|
|
||||||
|
####`--prefix <path>`
|
||||||
|
Specify a path to a custom working directory prefix. This directory will get
|
||||||
|
created if it does not exist. This usually defaults to `/var/lib/mgmt/`. This
|
||||||
|
can't be combined with the `--tmp-prefix` option. It can be combined with the
|
||||||
|
`--allow-tmp-prefix` option.
|
||||||
|
|
||||||
|
####`--tmp-prefix`
|
||||||
|
If this option is specified, a temporary prefix will be used instead of the
|
||||||
|
default prefix. This can't be combined with the `--prefix` option.
|
||||||
|
|
||||||
|
####`--allow-tmp-prefix`
|
||||||
|
If this option is specified, we will attempt to fall back to a temporary prefix
|
||||||
|
if the primary prefix couldn't be created. This is useful for avoiding failures
|
||||||
|
in environments where the primary prefix may or may not be available, but you'd
|
||||||
|
like to try. The canonical example is when running `mgmt` with `--remote` there
|
||||||
|
might be a cached copy of the binary in the primary prefix, but in case there's
|
||||||
|
no binary available continue working in a temporary directory to avoid failure.
|
||||||
|
|
||||||
##Examples
|
##Examples
|
||||||
For example configurations, please consult the [examples/](https://github.com/purpleidea/mgmt/tree/master/examples) directory in the git
|
For example configurations, please consult the [examples/](https://github.com/purpleidea/mgmt/tree/master/examples) directory in the git
|
||||||
source repository. It is available from:
|
source repository. It is available from:
|
||||||
|
|||||||
23
main.go
23
main.go
@@ -122,10 +122,18 @@ func run(c *cli.Context) error {
|
|||||||
return cli.NewExitError("", 1)
|
return cli.NewExitError("", 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.IsSet("prefix") && c.Bool("tmp-prefix") {
|
||||||
|
log.Println("Main: Error: combining --prefix and the request for a tmp prefix is illogical!")
|
||||||
|
return cli.NewExitError("", 1)
|
||||||
|
}
|
||||||
|
if s := c.String("prefix"); c.IsSet("prefix") && s != "" {
|
||||||
|
prefix = s
|
||||||
|
}
|
||||||
|
|
||||||
// make sure the working directory prefix exists
|
// make sure the working directory prefix exists
|
||||||
if err := os.MkdirAll(prefix, 0770); err != nil {
|
if c.Bool("tmp-prefix") || os.MkdirAll(prefix, 0770) != nil {
|
||||||
if c.Bool("allow-tmp-prefix") {
|
if c.Bool("tmp-prefix") || c.Bool("allow-tmp-prefix") {
|
||||||
if prefix, err = ioutil.TempDir("", program); err != nil {
|
if prefix, err = ioutil.TempDir("", program+"-"); err != nil {
|
||||||
log.Printf("Main: Error: Can't create temporary prefix!")
|
log.Printf("Main: Error: Can't create temporary prefix!")
|
||||||
return cli.NewExitError("", 1)
|
return cli.NewExitError("", 1)
|
||||||
}
|
}
|
||||||
@@ -487,6 +495,15 @@ func main() {
|
|||||||
Name: "no-caching",
|
Name: "no-caching",
|
||||||
Usage: "don't allow remote caching of remote execution binary",
|
Usage: "don't allow remote caching of remote execution binary",
|
||||||
},
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "prefix",
|
||||||
|
Usage: "specify a path to the working prefix directory",
|
||||||
|
EnvVar: "MGMT_PREFIX",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "tmp-prefix",
|
||||||
|
Usage: "request a pseudo-random, temporary prefix to be used",
|
||||||
|
},
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "allow-tmp-prefix",
|
Name: "allow-tmp-prefix",
|
||||||
Usage: "allow creation of a new temporary prefix if main prefix is unavailable",
|
Usage: "allow creation of a new temporary prefix if main prefix is unavailable",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ if env | grep -q -e '^TRAVIS=true$'; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# run till completion
|
# run till completion
|
||||||
timeout --kill-after=15s 10s ./mgmt run --file t2.yaml --converged-timeout=5 --no-watch --allow-tmp-prefix &
|
timeout --kill-after=15s 10s ./mgmt run --file t2.yaml --converged-timeout=5 --no-watch --tmp-prefix &
|
||||||
pid=$!
|
pid=$!
|
||||||
wait $pid # get exit status
|
wait $pid # get exit status
|
||||||
e=$?
|
e=$?
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ fi
|
|||||||
mkdir -p "${MGMT_TMPDIR}"mgmt{A..C}
|
mkdir -p "${MGMT_TMPDIR}"mgmt{A..C}
|
||||||
|
|
||||||
# run till completion
|
# run till completion
|
||||||
timeout --kill-after=15s 10s ./mgmt run --file t3-a.yaml --converged-timeout=5 --no-watch --allow-tmp-prefix &
|
timeout --kill-after=15s 10s ./mgmt run --file t3-a.yaml --converged-timeout=5 --no-watch --tmp-prefix &
|
||||||
pid1=$!
|
pid1=$!
|
||||||
timeout --kill-after=15s 10s ./mgmt run --file t3-b.yaml --converged-timeout=5 --no-watch --allow-tmp-prefix &
|
timeout --kill-after=15s 10s ./mgmt run --file t3-b.yaml --converged-timeout=5 --no-watch --tmp-prefix &
|
||||||
pid2=$!
|
pid2=$!
|
||||||
timeout --kill-after=15s 10s ./mgmt run --file t3-c.yaml --converged-timeout=5 --no-watch --allow-tmp-prefix &
|
timeout --kill-after=15s 10s ./mgmt run --file t3-c.yaml --converged-timeout=5 --no-watch --tmp-prefix &
|
||||||
pid3=$!
|
pid3=$!
|
||||||
|
|
||||||
wait $pid1 # get exit status
|
wait $pid1 # get exit status
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# should take slightly more than 25s, but fail if we take 35s)
|
# should take slightly more than 25s, but fail if we take 35s)
|
||||||
timeout --kill-after=35s 30s ./mgmt run --file t4.yaml --converged-timeout=5 --no-watch --allow-tmp-prefix &
|
timeout --kill-after=35s 30s ./mgmt run --file t4.yaml --converged-timeout=5 --no-watch --tmp-prefix &
|
||||||
pid=$!
|
pid=$!
|
||||||
wait $pid # get exit status
|
wait $pid # get exit status
|
||||||
exit $?
|
exit $?
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# should take slightly more than 35s, but fail if we take 45s)
|
# should take slightly more than 35s, but fail if we take 45s)
|
||||||
timeout --kill-after=45s 40s ./mgmt run --file t5.yaml --converged-timeout=5 --no-watch --allow-tmp-prefix &
|
timeout --kill-after=45s 40s ./mgmt run --file t5.yaml --converged-timeout=5 --no-watch --tmp-prefix &
|
||||||
pid=$!
|
pid=$!
|
||||||
wait $pid # get exit status
|
wait $pid # get exit status
|
||||||
exit $?
|
exit $?
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ if env | grep -q -e '^TRAVIS=true$'; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# run till completion
|
# run till completion
|
||||||
timeout --kill-after=20s 15s ./mgmt run --file t6.yaml --no-watch --allow-tmp-prefix &
|
timeout --kill-after=20s 15s ./mgmt run --file t6.yaml --no-watch --tmp-prefix &
|
||||||
pid=$!
|
pid=$!
|
||||||
sleep 1s # let it converge
|
sleep 1s # let it converge
|
||||||
test -e /tmp/mgmt/f1
|
test -e /tmp/mgmt/f1
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# run empty graph
|
# run empty graph
|
||||||
timeout --kill-after=20s 15s ./mgmt run --allow-tmp-prefix &
|
timeout --kill-after=20s 15s ./mgmt run --tmp-prefix &
|
||||||
pid=$!
|
pid=$!
|
||||||
sleep 5s # let it converge
|
sleep 5s # let it converge
|
||||||
$(sleep 3s && killall -SIGINT mgmt)& # send ^C to exit mgmt
|
$(sleep 3s && killall -SIGINT mgmt)& # send ^C to exit mgmt
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# run empty graphs, we're just testing etcd clustering
|
# run empty graphs, we're just testing etcd clustering
|
||||||
timeout --kill-after=120s 90s ./mgmt run --hostname h1 --allow-tmp-prefix &
|
timeout --kill-after=120s 90s ./mgmt run --hostname h1 --tmp-prefix &
|
||||||
pid1=$!
|
pid1=$!
|
||||||
sleep 5s # let it startup
|
sleep 5s # let it startup
|
||||||
|
|
||||||
timeout --kill-after=120s 90s ./mgmt run --hostname h2 --seeds http://127.0.0.1:2379 --client-urls http://127.0.0.1:2381 --server-urls http://127.0.0.1:2382 --allow-tmp-prefix &
|
timeout --kill-after=120s 90s ./mgmt run --hostname h2 --seeds http://127.0.0.1:2379 --client-urls http://127.0.0.1:2381 --server-urls http://127.0.0.1:2382 --tmp-prefix &
|
||||||
pid2=$!
|
pid2=$!
|
||||||
sleep 5s
|
sleep 5s
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user