forked from ungleich-public/cdist
		
	add support for new check types
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								6944998a19
							
						
					
				
			
			
				commit
				
					
						ce26deb706
					
				
			
		
					 3 changed files with 61 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -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).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
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
 | 
			
		||||
if [ -f "$__object/parameter/script" -a ! -f "$__object/parameter/interval" ]; then
 | 
			
		||||
   echo "When using --script you must also define --interval" >&2
 | 
			
		||||
   done
 | 
			
		||||
fi
 | 
			
		||||
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")"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,15 @@
 | 
			
		|||
docker-container-id
 | 
			
		||||
http
 | 
			
		||||
id
 | 
			
		||||
interval
 | 
			
		||||
name
 | 
			
		||||
notes
 | 
			
		||||
script
 | 
			
		||||
service-id
 | 
			
		||||
shell
 | 
			
		||||
state
 | 
			
		||||
status
 | 
			
		||||
tcp
 | 
			
		||||
timeout
 | 
			
		||||
token
 | 
			
		||||
ttl
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue