From ce26deb706ef5419cd9aeb2e543f235642a0e1ea Mon Sep 17 00:00:00 2001
From: Steven Armstrong <steven@icarus.ethz.ch>
Date: Wed, 22 Jun 2016 23:58:14 +0200
Subject: [PATCH] add support for new check types

Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
---
 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