From f19c9165acd1d20345aef31e7906862bb0003541 Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Wed, 17 Jul 2013 07:42:11 +0900
Subject: [PATCH] fixup! Initial Cloudooo Cluster setup

---
 software/cloudooo/instance-cloudoo.cfg.in | 30 +++++++++++++++--------
 software/cloudooo/instance.cfg.in         |  2 ++
 software/cloudooo/software.cfg            | 23 +++++++++++------
 3 files changed, 37 insertions(+), 18 deletions(-)

diff --git a/software/cloudooo/instance-cloudoo.cfg.in b/software/cloudooo/instance-cloudoo.cfg.in
index 59a947252..67c681d81 100644
--- a/software/cloudooo/instance-cloudoo.cfg.in
+++ b/software/cloudooo/instance-cloudoo.cfg.in
@@ -1,4 +1,7 @@
+{% set ipv4 = (ipv4_set | list)[0] -%}
 {% set bin_directory = parameter_dict['buildout-bin-directory'] -%}
+{% set section_list = [] -%}
+{% macro section(name) %}{% do section_list.append(name) %}{{ name }}{% endmacro -%}
 [buildout]
 parts =
   publish-cloudooo-connection-information
@@ -14,8 +17,7 @@ url = cloudooo://${haproxy:ip}:${haproxy:port}/
 
 [cloudooo-base]
 recipe = slapos.cookbook:generic.cloudooo
-ip = ${slap-network-information:local-ipv4}
-wrapper = ${basedirectory:services}/cloudooo
+ip = {{ ipv4 }}
 environment =
   LD_LIBRARY_PATH = {{ parameter_dict['file'] }}/lib:{{ parameter_dict['fontconfig'] }}/lib:{{ parameter_dict['freetype'] }}/lib:{{ parameter_dict['libICE'] }}/lib:{{ parameter_dict['libpng12'] }}/lib:{{ parameter_dict['libSM'] }}/lib:{{ parameter_dict['libX11'] }}/lib:{{ parameter_dict['libXau'] }}/lib:{{ parameter_dict['libXdmcp'] }}/lib:{{ parameter_dict['libXext'] }}/lib:{{ parameter_dict['libxcb'] }}/lib:{{ parameter_dict['libXrender'] }}/lib:{{ parameter_dict['zlib'] }}/lib
   FONTCONFIG_FILE = ${fontconfig-instance:conf-path}
@@ -27,28 +29,31 @@ ooo-paster = {{ bin_directory }}/cloudooo_paster
 ooo-uno-path = {{ parameter_dict['libreoffice-bin'] }}/basis-link/program
 
 {% set cloudooo_port = 23000 -%}
-{% for index in range(slapparameter_dict.get('backend_count', 1)) -%}
+{% set backend_count = slapparameter_dict.get('backend-count', 1) | int -%}
+{% for index in range(backend_count) -%}
 {%   set name = 'cloudooo-' ~ index -%}
 [{{ section(name) }}]
 < = cloudooo-base
 port = {{ cloudooo_port }}
 openoffice-port = {{ cloudooo_port + 1 }}
 configuration-file = ${rootdirectory:etc}/{{ name }}.cfg
+data-directory = ${rootdirectory:srv}/{{ name }}
+wrapper = ${basedirectory:services}/{{ name }}
 
 {%   set cloudooo_port = cloudooo_port + 2 -%}
 {% endfor -%}
 
 [haproxy]
 recipe = slapos.cookbook:haproxy
-name = haproxy
+name = cloudooo
 conf-path = ${directory:etc}/haproxy.cfg
+socket-path = ${directory:run}/haproxy.sock
 ip = {{ ipv4 }}
 port = 8001
-maxconn = {{ slapparameter_dict['haproxy-maxconn'] }}
-# XXX: should be optional (check recipe code)
-server-check-path = {{ slapparameter_dict['haproxy-server-check-path'] }}
+maxconn = 1
 wrapper-path = ${directory:services}/haproxy
 binary-path = {{ parameter_dict['haproxy'] }}/sbin/haproxy
+ctl-path = ${directory:bin}/haproxy-ctl
 backend-list =
 {%- for section_name in section_list %}
   {{ "${" ~ section_name ~ ":ip}:${" ~ section_name ~ ":port}" }}
@@ -65,8 +70,8 @@ prepend-path = ${buildout:bin-directory}
 run-unit-test = ${buildout:bin-directory}/runUnitTest
 run-test-suite = ${buildout:bin-directory}/runTestSuite
 
-ooo-paster = ${cloudooo-instance:ooo-paster}
-configuration-file = ${cloudooo-instance:configuration-file}
+ooo-paster = ${cloudooo-0:ooo-paster}
+configuration-file = ${cloudooo-0:configuration-file}
 
 run-unit-test-binary = {{ bin_directory }}/runCloudoooUnitTest
 run-test-suite-binary = {{ bin_directory }}/runCloudoooTestSuite
@@ -104,7 +109,11 @@ services = ${rootdirectory:etc}/run
 
 [directory]
 recipe = slapos.cookbook:mkdirectory
-cloudooo-data = ${rootdirectory:srv}/cloudooo
+bin = ${rootdirectory:bin}
+etc = ${rootdirectory:etc}
+services = ${:etc}/run
+var = ${rootdirectory:var}
+run = ${:var}/run
 font = ${rootdirectory:srv}/font
 
 [rootdirectory]
@@ -112,3 +121,4 @@ recipe = slapos.cookbook:mkdirectory
 etc = ${buildout:directory}/etc
 srv = ${buildout:directory}/srv
 bin = ${buildout:directory}/bin
+var = ${buildout:directory}/var
diff --git a/software/cloudooo/instance.cfg.in b/software/cloudooo/instance.cfg.in
index bec984017..6173841fb 100644
--- a/software/cloudooo/instance.cfg.in
+++ b/software/cloudooo/instance.cfg.in
@@ -50,8 +50,10 @@ buildout-bin-directory = {{ buildout_bin_directory }}
 < = jinja2-template-base
 template = {{ template_cloudooo }}
 filename = instance-cloudoo.cfg
+extensions = jinja2.ext.do
 extra-context =
     section parameter_dict dynamic-template-cloudooo-parameters
+    key ipv4_set slap-parameters:ipv4
 
 [switch-softwaretype]
 recipe = slapos.cookbook:softwaretype
diff --git a/software/cloudooo/software.cfg b/software/cloudooo/software.cfg
index 677a42592..6af3510ff 100755
--- a/software/cloudooo/software.cfg
+++ b/software/cloudooo/software.cfg
@@ -16,6 +16,7 @@ parts +=
   check-recipe
 # Create instance template
   template
+  slapos-cookbook
 
 # XXX: Workaround of SlapOS limitation
 # Unzippig of eggs is required, as SlapOS do not yet provide nicely working
@@ -24,11 +25,10 @@ unzip = true
 
 # Local development
 [slapos.cookbook-repository]
-recipe = plone.recipe.command
-stop-on-error = true
-location = ${buildout:parts-directory}/${:_buildout_section_name_}
-command = ${git:location}/bin/git clone --branch cloudooo --quiet http://git.erp5.org/repos/slapos.git ${:location}
-update-command = cd ${:location} && ${git:location}/bin/git pull --quiet
+recipe = slapos.recipe.build:gitclone
+repository = http://git.erp5.org/repos/slapos.git
+branch = cloudooo-clusterise
+git-executable = ${git:location}/bin/git
 
 [check-recipe]
 recipe = plone.recipe.command
@@ -36,6 +36,14 @@ stop-on-error = true
 update-command = ${:command}
 command = grep parts ${buildout:develop-eggs-directory}/slapos.cookbook.egg-link
 
+[slap-parameters]
+recipe = slapos.cookbook:slapconfiguration
+computer = ${slap-connection:computer-id}
+partition = ${slap-connection:partition-id}
+url = ${slap-connection:server-url}
+key = ${slap-connection:key-file}
+cert = ${slap-connection:cert-file}
+
 [template-jinja2-base]
 recipe = slapos.recipe.template:jinja2
 template = ${:_profile_base_location_}/${:filename}.in
@@ -54,7 +62,7 @@ context =
 # XXX: "template.cfg" is hardcoded in instanciation recipe
 filename = template.cfg
 template = ${:_profile_base_location_}/instance.cfg.in
-md5sum = dd0073d8e8d8aaf94df0405c86c7a055
+md5sum = 425cb2e76d46d53bb0b0eebdb8c1aa95
 extra-context =
     key buildout_bin_directory buildout:bin-directory
     key dcron_location dcron:location
@@ -84,10 +92,9 @@ extra-context =
 [template-cloudooo]
 recipe = slapos.recipe.build:download
 url = ${:_profile_base_location_}/instance-cloudoo.cfg.in
-md5sum = 91eb4b262d3d61d193fa13fb97ef28c8
+md5sum = 6ac3dbd98958cdf3131c0e79754d4cb0
 mode = 640
 
-
 [networkcache]
 # signature certificates of the following uploaders.
 #   Romain Courteaud
-- 
2.30.9