From 6de4e3ce3345815c6a3d9181b25584ee16a00e20 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Le=20Ninivin?= <cedric.leninivin@tiolive.com>
Date: Tue, 28 Feb 2017 17:54:19 +0100
Subject: [PATCH] software.apache-frontend: Add promise on cache availability

---
 software/apache-frontend/common.cfg           |  2 +-
 .../instance-apache-frontend.cfg              | 22 +++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/software/apache-frontend/common.cfg b/software/apache-frontend/common.cfg
index e56c3e4f4..a82b37313 100644
--- a/software/apache-frontend/common.cfg
+++ b/software/apache-frontend/common.cfg
@@ -56,7 +56,7 @@ mode = 0644
 [template-apache-frontend]
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-apache-frontend.cfg
-md5sum = c86c435136f6b910b3dd7dcb84a789a2
+md5sum = 0ca52aa73c2547499b2f62fc72288f45
 output = ${buildout:directory}/template-apache-frontend.cfg
 mode = 0644
 
diff --git a/software/apache-frontend/instance-apache-frontend.cfg b/software/apache-frontend/instance-apache-frontend.cfg
index c6e60e52b..735d860fa 100644
--- a/software/apache-frontend/instance-apache-frontend.cfg
+++ b/software/apache-frontend/instance-apache-frontend.cfg
@@ -37,6 +37,7 @@ parts =
   trafficserver-plugin-config
   trafficserver-storage-config
   trafficserver-promise-listen-port
+  trafficserver-promise-cache-availability
 
 ## Nginx
   nginx-frontend
@@ -463,6 +464,27 @@ path = $${directory:promise}/trafficserver-port-listening
 hostname = $${trafficserver-variable:local-ip}
 port = $${trafficserver-variable:input-port}
 
+[trafficserver-line]
+recipe = slapos.cookbook:wrapper
+command-line = ${trafficserver:location}/bin/traffic_line
+wrapper-path = $${directory:bin}/traffic_line
+environment = TS_ROOT=$${buildout:directory}
+parameters-extra = true
+
+[trafficserver-promise-cache-availability]
+recipe = collective.recipe.template
+input =
+  inline:#!${buildout:executable}
+  import subprocess
+  import sys
+  traffic_line = "$${trafficserver-line:wrapper-path}"
+  result = float(subprocess.check_output([traffic_line, '-r',  'proxy.node.cache.percent_free' ]))
+  if result != 0: sys.exit(0)
+  sys.stderr.write("Cache not available, availability: %s" % result)
+  sys.exit(127)
+output = $${directory:promise}/trafficserver-cache-availability
+mode = 700
+
 ### End of ATS sections
 
 ### Apaches Graceful and promises
-- 
2.30.9