#############################
#
# Instanciate memcached
#
# No slapos parameter needed
#
#############################
[buildout]
parts =
  publish-memcached-connection-information
  haproxy-promise
  tunnel-promise

eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }}
offline = true

[directory]
recipe = slapos.cookbook:mkdirectory
etc = ${buildout:directory}/etc
bin = ${buildout:directory}/bin
service = ${:etc}/run
promise = ${:etc}/promise

[memcached-instance]
recipe = slapos.cookbook:generic.memcached
wrapper_path = ${directory:service}/memcached
binary_path = {{ memcached_location }}/bin/memcached
shell-path = {{ dash_location }}/bin/dash
ip = ${slap-network-information:local-ipv4}
port = 11000

[ipv6toipv4]
recipe = slapos.cookbook:ipv6toipv4
conf-path = ${directory:etc}/${:base-name}.conf
runner-path = ${directory:service}/${:base-name}
haproxy-path = {{ haproxy_location }}/sbin/haproxy
shell-path = {{ dash_location }}/bin/dash
ipv4 = ${memcached-instance:ip}
ipv6 = ${slap-network-information:global-ipv6}
ipv6-port = ${memcached-instance:port}
ipv4-port = ${memcached-instance:port}
base-name = memcached-tunnel

[publish-memcached-connection-information]
recipe = slapos.cookbook:publishurl
url = memcached://[${ipv6toipv4:ipv6}]:${ipv6toipv4:ipv6-port}/

# Deploy promises scripts
[haproxy-promise]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/memcache
hostname = ${memcached-instance:ip}
port = ${memcached-instance:port}

[tunnel-promise]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/tunnel
hostname = ${ipv6toipv4:ipv6}
port = ${ipv6toipv4:ipv6-port}