From ce26deb706ef5419cd9aeb2e543f235642a0e1ea Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 22 Jun 2016 23:58:14 +0200 Subject: [PATCH] add support for new check types Signed-off-by: Steven Armstrong --- cdist/conf/type/__consul_check/man.rst | 44 ++++++++++++++----- cdist/conf/type/__consul_check/manifest | 30 ++++++++----- .../type/__consul_check/parameter/optional | 8 ++++ 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/cdist/conf/type/__consul_check/man.rst b/cdist/conf/type/__consul_check/man.rst index 1de65358..e12d9ca8 100644 --- a/cdist/conf/type/__consul_check/man.rst +++ b/cdist/conf/type/__consul_check/man.rst @@ -20,18 +20,17 @@ None. OPTIONAL PARAMETERS ------------------- -interval - the interval in which the script given with --script should be run +docker-container-id + the id of the docker container to run -script - the shell command to run every --interval - -ttl - how long a check is considered healthy without being updated through the - HTTP interfave +http + the url to check id - Defaults to --name + The id of this check. + +interval + the interval in which the check should run name The name of this check. Defaults to __object_id @@ -39,9 +38,34 @@ name notes human readable description +script + the shell command to run + +service-id + the id of the service this check is bound to + +shell + the shell to run inside the docker container + state if this check is 'present' or 'absent'. Defaults to 'present'. +status + specify the initial state of this health check + +tcp + the host and port to check + +timeout + after how long to timeout checks which take to long + +token + ACL token to use for interacting with the catalog + +ttl + how long a TTL check is considered healthy without being updated through the + HTTP interface + EXAMPLES -------- @@ -67,5 +91,5 @@ SEE ALSO COPYING ------- -Copyright \(C) 2015 Steven Armstrong. Free use of this software is +Copyright \(C) 2015-2016 Steven Armstrong. Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/cdist/conf/type/__consul_check/manifest b/cdist/conf/type/__consul_check/manifest index 3004f319..658e2598 100755 --- a/cdist/conf/type/__consul_check/manifest +++ b/cdist/conf/type/__consul_check/manifest @@ -1,6 +1,6 @@ #!/bin/sh # -# 2015 Steven Armstrong (steven-cdist at armstrong.cc) +# 2015-2016 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # @@ -24,12 +24,24 @@ conf_file="check_${name}.json" state="$(cat "$__object/parameter/state")" # Sanity checks -if [ -f "$__object/parameter/script" -a -f "$__object/parameter/ttl" ]; then - echo "Use either --script together with --interval OR --ttl, but not both" >&2 - exit 1 +if [ -f "$__object/parameter/ttl" ]; then + for conflicts_ttl in 'docker-container-id' 'http' 'script' 'tcp' 'timeout'; do + if [ -f "$__object/parameter/${conflicts_ttl}" ]; then + echo "Can not use --ttl together with --${conflicts_ttl}." >&2 + exit 1 + fi + done fi -if [ -f "$__object/parameter/script" -a ! -f "$__object/parameter/interval" ]; then - echo "When using --script you must also define --interval" >&2 +if [ ! -f "$__object/parameter/interval" ]; then + for requires_interval in 'docker-id' 'http' 'script' 'tcp'; do + if [ -f "$__object/parameter/${requires_interval}" ]; then + echo "When using --${requires_interval} you must also define --interval." >&2 + exit 1 + fi + done +fi +if [ -f "$__object/parameter/docker-container-id" -a ! -f "$__object/parameter/script" ]; then + echo "When using --docker-container-id you must also define --script." >&2 exit 1 fi @@ -40,11 +52,7 @@ printf ' "check": {\n' printf ' "name": "%s"\n' "$name" for param in $(ls "$__object/parameter/"); do case "$param" in - state|name|interval) continue ;; - script) - printf ' ,"script": "%s"\n' "$(cat "$__object/parameter/script")" - printf ' ,"interval": "%s"\n' "$(cat "$__object/parameter/interval")" - ;; + state|name) continue ;; *) key="$(echo "$param" | tr '-' '_')" printf ' ,"%s": "%s"\n' "$key" "$(cat "$__object/parameter/$param")" diff --git a/cdist/conf/type/__consul_check/parameter/optional b/cdist/conf/type/__consul_check/parameter/optional index f6c3a6e4..0e392956 100644 --- a/cdist/conf/type/__consul_check/parameter/optional +++ b/cdist/conf/type/__consul_check/parameter/optional @@ -1,7 +1,15 @@ +docker-container-id +http id interval name notes script +service-id +shell state +status +tcp +timeout +token ttl