diff --git a/software/cloudooo/instance-cloudoo.cfg.in b/software/cloudooo/instance-cloudoo.cfg.in index b8377e0a380035566c1358b86c9ac5e4901b6656..fbb4a63fcaa58bfcb23e9401398e21a4cc1c20dd 100644 --- a/software/cloudooo/instance-cloudoo.cfg.in +++ b/software/cloudooo/instance-cloudoo.cfg.in @@ -1,20 +1,9 @@ +{% if slap_software_type != 'haproxy' -%} {% set ipv4 = (ipv4_set | list)[0] -%} {% set bin_directory = parameter_dict['buildout-bin-directory'] -%} {% set section_list = [] -%} +{% set publish_list = [] -%} {% macro section(name) %}{% do section_list.append(name) %}{{ name }}{% endmacro -%} -[buildout] -parts = - publish-cloudooo-connection-information - cloudooo-test-runner - -eggs-directory = {{ eggs_directory }} -develop-eggs-directory = {{ develop_eggs_directory }} -offline = true - -[publish-cloudooo-connection-information] -recipe = slapos.cookbook:publish.serialised -url = cloudooo://${haproxy:ip}:${haproxy:port}/ - [cloudooo-base] recipe = slapos.cookbook:generic.cloudooo ip = {{ ipv4 }} @@ -39,25 +28,14 @@ openoffice-port = {{ cloudooo_port + 1 }} configuration-file = ${directory:etc}/{{ name }}.cfg data-directory = ${directory:srv}/{{ name }} wrapper = ${directory:services}/{{ name }} - +{% set publish_info = ipv4 ~ ':' ~ cloudooo_port -%} +{% do publish_list.append(publish_info) -%} {% set cloudooo_port = cloudooo_port + 2 -%} {% endfor -%} -[haproxy] -recipe = slapos.cookbook:haproxy -name = cloudooo -conf-path = ${directory:etc}/haproxy.cfg -socket-path = ${directory:run}/haproxy.sock -ip = {{ ipv4 }} -port = 8001 -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}" }} -{%- endfor %} +[cloudooo-instance] +# Paths: Data +data-directory = ${directory:cloudooo-data} [cloudooo-test-runner] recipe = slapos.cookbook:cloudooo.test @@ -99,6 +77,21 @@ link-binary = {{ parameter_dict['poppler'] }}/bin/pdftotext {{ parameter_dict['poppler'] }}/bin/pdftohtml +[publish-cloudooo-cluster-information] +recipe = slapos.cookbook:publish.serialised +cloudooo-address-list = {{ dumps(publish_list) }} +url = cloudooo://${cloudooo-0:ip}:${cloudooo-0:port}/ + +[buildout] +parts = + publish-cloudooo-cluster-information + cloudooo-test-runner + {{ section_list | join('\n\t') }} + +eggs-directory = {{ eggs_directory }} +develop-eggs-directory = {{ develop_eggs_directory }} +offline = true + # rest of parts are candidates for some generic stuff [directory] recipe = slapos.cookbook:mkdirectory @@ -109,3 +102,4 @@ run = ${:var}/run services = ${:etc}/run srv = ${buildout:directory}/srv var = ${buildout:directory}/var +{% endif -%} diff --git a/software/cloudooo/instance-haproxy.cfg.in b/software/cloudooo/instance-haproxy.cfg.in new file mode 100644 index 0000000000000000000000000000000000000000..eb20029235f1beb7f12e01477b04d9faaa64647a --- /dev/null +++ b/software/cloudooo/instance-haproxy.cfg.in @@ -0,0 +1,39 @@ +{% if slap_software_type == 'haproxy' -%} +{% set bin_directory = parameter_dict['buildout-bin-directory'] -%} +[buildout] +parts = + publish-cloudooo-connection-information + +eggs-directory = {{ eggs_directory }} +develop-eggs-directory = {{ develop_eggs_directory }} +offline = true + +[publish-cloudooo-connection-information] +recipe = slapos.cookbook:publishurl +url = cloudooo://${haproxy:ip}:${haproxy:port}/ + +[haproxy] +recipe = slapos.cookbook:haproxy +name = cloudooo +conf-path = ${directory:etc}/haproxy.cfg +socket-path = ${directory:run}/haproxy.sock +ip = {{ ipv4 }} +port = 8001 +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}" }} +{%- endfor %} + +# rest of parts are candidates for some generic stuff +[directory] +recipe = slapos.cookbook:mkdirectory +bin = ${buildout:directory}/bin +etc = ${buildout:directory}/etc +run = ${:var}/run +services = ${:etc}/run +var = ${buildout:directory}/var +{% endif -%} diff --git a/software/cloudooo/instance.cfg.in b/software/cloudooo/instance.cfg.in index 6173841fbd4afeffde0c2b72cc4deaa2797bbaa1..3a1e579a8bc9e741076b5b78ee8eac11351af06d 100644 --- a/software/cloudooo/instance.cfg.in +++ b/software/cloudooo/instance.cfg.in @@ -22,13 +22,13 @@ context = key eggs_directory buildout:eggs-directory key develop_eggs_directory buildout:develop-eggs-directory key slapparameter_dict slap-parameters:configuration + key slap_software_type slap-parameters:slap-software-type ${:extra-context} [dynamic-template-cloudooo-parameters] file = {{ file_location }} fontconfig = {{ fontconfig_location }} freetype = {{ freetype_location }} -haproxy = {{ haproxy_location }} libICE = {{ libICE_location }} libpng12 = {{ libpng12_location }} libSM = {{ libSM_location }} @@ -46,6 +46,10 @@ imagemagick = {{ imagemagick_location }} poppler = {{ poppler_location }} buildout-bin-directory = {{ buildout_bin_directory }} +[dynamic-template-haproxy-parameters] +haproxy = {{ haproxy_location }} +buildout-bin-directory = {{ buildout_bin_directory }} + [dynamic-template-cloudooo] < = jinja2-template-base template = {{ template_cloudooo }} @@ -55,9 +59,19 @@ extra-context = section parameter_dict dynamic-template-cloudooo-parameters key ipv4_set slap-parameters:ipv4 +[dynamic-template-haproxy] +< = jinja2-template-base +template = {{ template_haproxy }} +filename = instance-cloudoo.cfg +extensions = jinja2.ext.do +extra-context = + section parameter_dict dynamic-template-haproxy-parameters + key ipv4_set slap-parameters:ipv4 + [switch-softwaretype] recipe = slapos.cookbook:softwaretype default = ${dynamic-template-cloudooo:rendered} +haproxy = ${dynamic-template-haproxy:rendered} [slap-connection] # part to migrate to new - separated words diff --git a/software/cloudooo/software.cfg b/software/cloudooo/software.cfg index 289fc649c3406df0809fec61d2d406e175190d4b..9be77d3a7ac244248f33ed23f73acf6fe6cba881 100755 --- a/software/cloudooo/software.cfg +++ b/software/cloudooo/software.cfg @@ -62,7 +62,7 @@ context = # XXX: "template.cfg" is hardcoded in instanciation recipe filename = template.cfg template = ${:_profile_base_location_}/instance.cfg.in -md5sum = 425cb2e76d46d53bb0b0eebdb8c1aa95 +md5sum = 2456c43484286fe58bed42a417877b42 extra-context = key buildout_bin_directory buildout:bin-directory key dcron_location dcron:location @@ -86,13 +86,20 @@ extra-context = key openssl_location openssl:location key poppler_location poppler:location key template_cloudooo template-cloudooo:target + key template_haproxy template-haproxy:target key zlib_location zlib:location key coreutils_location coreutils:location [template-cloudooo] recipe = slapos.recipe.build:download url = ${:_profile_base_location_}/instance-cloudoo.cfg.in -md5sum = bbe84b4c9022db62c926e8a8a4bf02a1 +md5sum = dfa79313d73c68ef65b636f9f01be54a +mode = 640 + +[template-haproxy] +recipe = slapos.recipe.build:download +url = ${:_profile_base_location_}/instance-haproxy.cfg.in +md5sum = 3507e29619940fe8f3bd932ce3054f85 mode = 640 [networkcache]