From f6cba2aaa666376e0cbc0f4a3794d18fe65a0486 Mon Sep 17 00:00:00 2001
From: Marco Mariani <marco.mariani@nexedi.com>
Date: Thu, 12 Jun 2014 15:47:47 +0200
Subject: [PATCH] abilian: moved redis to ipv4

---
 slapos/recipe/redis/__init__.py               | 42 ++++++++++++++-----
 slapos/recipe/redis/template/redis.conf.in    |  7 ++--
 .../extranet_spr/instance-redis.cfg.in        |  2 +
 software/abilian/extranet_spr/instance.cfg.in |  4 +-
 software/abilian/extranet_spr/software.cfg    |  4 +-
 5 files changed, 42 insertions(+), 17 deletions(-)

diff --git a/slapos/recipe/redis/__init__.py b/slapos/recipe/redis/__init__.py
index 1cd2265d6..9fd3f4a78 100644
--- a/slapos/recipe/redis/__init__.py
+++ b/slapos/recipe/redis/__init__.py
@@ -24,7 +24,6 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ##############################################################################
-import os
 
 from slapos.recipe.librecipe import GenericBaseRecipe
 
@@ -49,15 +48,38 @@ class Recipe(GenericBaseRecipe):
     else:
       requirepass = "# requirepass foobared"
 
+    if self.options.get('ipv6'):
+      bind6 = "bind6 %s" % self.options['ipv6']
+    else:
+      bind6 = "# bind6 <address>"
+
+    if self.options.get('ipv4'):
+      bind = "bind %s" % self.options['ipv4']
+    else:
+      bind = "# bind <address>"
+
+    if self.options.get('port6'):
+      port6 = "port6 %s" % self.options['port6']
+    else:
+      port6 = "# port6 6379"
+
+    if self.options.get('port'):
+      port = "port %s" % self.options['port']
+    else:
+      port = "# port 6379"
+
     config_file = self.options['config_file'].strip()
-    configuration = dict(pid_file=self.options['pid_file'],
-                        port=self.options['port'],
-                        ipv6=self.options['ipv6'],
-                        server_dir=self.options['server_dir'],
-                        log_file=self.options['log_file'],
-                        masterauth=masterauth,
-                        requirepass=requirepass
-    )
+    configuration = {
+            'pid_file': self.options['pid_file'],
+            'bind6': bind6,
+            'bind': bind,
+            'port6': port6,
+            'port': port,
+            'server_dir': self.options['server_dir'],
+            'log_file': self.options['log_file'],
+            'masterauth': masterauth,
+            'requirepass': requirepass
+        }
 
     config = self.createFile(config_file,
       self.substituteTemplate(self.getTemplateFilename('redis.conf.in'),
@@ -78,7 +100,7 @@ class Recipe(GenericBaseRecipe):
         '%s.promise.main' % __name__,
         {
           'host': self.options['ipv6'],
-          'port': self.options['port'],
+          'port': self.options['port6'],
           'requirepass_file': self.options.get('promise_requirepass_file')
         }
       )
diff --git a/slapos/recipe/redis/template/redis.conf.in b/slapos/recipe/redis/template/redis.conf.in
index 569a5e0c2..338b03cf6 100644
--- a/slapos/recipe/redis/template/redis.conf.in
+++ b/slapos/recipe/redis/template/redis.conf.in
@@ -22,15 +22,16 @@ pidfile %(pid_file)s
 
 # Accept connections on the specified port, default is 6379.
 # If port 0 is specified Redis will not listen on a TCP socket.
-port6 %(port)s
-port 0
+%(port6)s
+%(port)s
 
 # If you want you can bind a single interface, if the bind option is not
 # specified all the interfaces will listen for incoming connections.
 # Bind can also be an IPv6 address
 # bind 127.0.0.1
 # bind ::1
-bind6 %(ipv6)s
+%(bind6)s
+%(bind)s
 
 # Specify the path for the unix socket that will be used to listen for
 # incoming connections. There is no default, so Redis will not listen
diff --git a/software/abilian/extranet_spr/instance-redis.cfg.in b/software/abilian/extranet_spr/instance-redis.cfg.in
index e1d2bd41c..3180dc26a 100644
--- a/software/abilian/extranet_spr/instance-redis.cfg.in
+++ b/software/abilian/extranet_spr/instance-redis.cfg.in
@@ -15,6 +15,8 @@ bytes = 16
 recipe = slapos.cookbook:redis.server
 server_bin = ${redis:location}/bin/redis-server
 ipv6 = $${instance-parameters:ipv6-random}
+port6 = 6379
+ipv4 = $${instance-parameters:ipv4-random}
 port = 6379
 pid_file = $${directories:run}/redis.pid
 server_dir = $${directories:srv}
diff --git a/software/abilian/extranet_spr/instance.cfg.in b/software/abilian/extranet_spr/instance.cfg.in
index 66a34eca2..66542ee28 100644
--- a/software/abilian/extranet_spr/instance.cfg.in
+++ b/software/abilian/extranet_spr/instance.cfg.in
@@ -45,8 +45,8 @@ cert = $${slap-connection:cert-file}
 recipe = slapos.cookbook:jsondump
 json-output = $${buildout:directory}/abilian-config-extra.json
 UNOCONV_LOCATION = ${unoconv-repository:location}/unoconv
-BROKER_URL = redis://:$${redis-requirepass:passwd}@[$${redis:ipv6}]:$${redis:port}/2
-CELERY_RESULT_BACKEND = redis://:$${redis-requirepass:passwd}@[$${redis:ipv6}]:$${redis:port}/2
+BROKER_URL = redis://:$${redis-requirepass:passwd}@[$${redis:ipv4}]:$${redis:port}/2
+CELERY_RESULT_BACKEND = redis://:$${redis-requirepass:passwd}@[$${redis:ipv4}]:$${redis:port}/2
 SECRET_KEY = $${csrf-secret-key:passwd}
 INSTANCE_HOST = $${instance-parameters:ipv6-random}
 
diff --git a/software/abilian/extranet_spr/software.cfg b/software/abilian/extranet_spr/software.cfg
index 26c69806d..f6d06d4ec 100644
--- a/software/abilian/extranet_spr/software.cfg
+++ b/software/abilian/extranet_spr/software.cfg
@@ -229,7 +229,7 @@ configure-command =
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance.cfg.in
 output = ${buildout:directory}/instance.cfg
-md5sum = 23167d761e13d9eb41e381beecfc7664
+md5sum = 3b6105aa9335141c2d73871bdde80e9d
 mode = 0644
 
 [instance-postgres]
@@ -243,7 +243,7 @@ mode = 0644
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-redis.cfg.in
 output = ${buildout:directory}/instance-redis.cfg
-md5sum = e0f32e25d059ec67dfccd132cbb6095e
+md5sum = a322af67bcfd73f1782494c147499071
 mode = 0644
 
 [instance-extranet]
-- 
2.30.9