{% 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 cloudooo-test-runner xvfb-instance wkhtmltopdf-on-xvfb 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 }} environment = LD_LIBRARY_PATH = {{ parameter_dict['cairo'] }}/lib:{{ parameter_dict['cups'] }}/lib:{{ parameter_dict['cups'] }}/lib64:{{ parameter_dict['dbus'] }}/lib:{{ parameter_dict['dbus-glib'] }}/lib:{{ parameter_dict['file'] }}/lib:{{ parameter_dict['fontconfig'] }}/lib:{{ parameter_dict['freetype'] }}/lib:{{ parameter_dict['glib'] }}/lib:{{ parameter_dict['glu'] }}/lib:{{ parameter_dict['libICE'] }}/lib:{{ parameter_dict['libSM'] }}/lib:{{ parameter_dict['libX11'] }}/lib:{{ parameter_dict['libXau'] }}/lib:{{ parameter_dict['libXdmcp'] }}/lib:{{ parameter_dict['libXext'] }}/lib:{{ parameter_dict['libXrender'] }}/lib:{{ parameter_dict['libexpat'] }}/lib:{{ parameter_dict['libffi'] }}/lib:{{ parameter_dict['libffi'] }}/lib64:{{ parameter_dict['libpng12'] }}/lib:{{ parameter_dict['libxcb'] }}/lib:{{ parameter_dict['mesa'] }}/lib:{{ parameter_dict['pixman'] }}/lib:{{ parameter_dict['xdamage'] }}/lib:{{ parameter_dict['xfixes'] }}/lib:{{ parameter_dict['zlib'] }}/lib FONTCONFIG_FILE = ${fontconfig-instance:conf-path} PATH = ${binary-link:target-directory} mimetype_entry_addition = text/html application/pdf wkhtmltopdf # Binary information # cloudooo specific configuration ooo-binary-path = {{ parameter_dict['libreoffice-bin'] }}/program ooo-paster = {{ bin_directory }}/cloudooo_paster ooo-uno-path = {{ parameter_dict['libreoffice-bin'] }}/basis-link/program {% set cloudooo_port = slapparameter_dict.get('tcpv4_port', 23000) | int -%} {% 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 = ${directory:etc}/{{ name }}.cfg data-directory = ${directory:srv}/{{ name }} wrapper = ${directory:services}/{{ name }} {% 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-test-runner] recipe = slapos.cookbook:cloudooo.test prepend-path = ${buildout:bin-directory} run-unit-test = ${buildout:bin-directory}/runUnitTest run-test-suite = ${buildout:bin-directory}/runTestSuite 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 [fontconfig-instance] recipe = slapos.cookbook:fontconfig conf-path = ${directory:etc}/font.conf font-system-folder = {{ parameter_dict['fonts'] }} font-folder = ${directory:font} {# XXX: violates "instanciation happens offline" rule -#} url-list = {{ slapparameter_dict.get('font-url-list', []) | join(' ') }} service-folder = ${directory:services} onetimedownload_path = {{ bin_directory }}/onetimedownload [binary-link] recipe = slapos.cookbook:symbolic.link target-directory = ${directory:bin} link-binary = {{ parameter_dict['coreutils'] }}/bin/basename {{ parameter_dict['coreutils'] }}/bin/cat {{ parameter_dict['coreutils'] }}/bin/cp {{ parameter_dict['coreutils'] }}/bin/ls {{ parameter_dict['coreutils'] }}/bin/tr {{ parameter_dict['coreutils'] }}/bin/uname {{ parameter_dict['coreutils'] }}/bin/dirname # wrapper recipe needs the head command {{ parameter_dict['coreutils'] }}/bin/head {{ parameter_dict['imagemagick'] }}/bin/convert {{ parameter_dict['imagemagick'] }}/bin/identify {{ parameter_dict['poppler'] }}/bin/pdfinfo {{ parameter_dict['poppler'] }}/bin/pdftotext {{ parameter_dict['poppler'] }}/bin/pdftohtml # rest of parts are candidates for some generic stuff [directory] recipe = slapos.cookbook:mkdirectory bin = ${buildout:directory}/bin etc = ${buildout:directory}/etc font = ${:srv}/font run = ${:var}/run services = ${:etc}/run srv = ${buildout:directory}/srv var = ${buildout:directory}/var framebuffer = ${:srv}/framebuffer [xvfb-instance] recipe = slapos.cookbook:xvfb runner-path = ${directory:services}/xvfb xvfb-path = {{ parameter_dict["xserver"] }}/bin/Xvfb fbdir-path = ${directory:framebuffer} tmp-path = ${directory:run} shell-path = {{ parameter_dict["dash"] }}/bin/dash [wkhtmltopdf-on-xvfb] recipe = slapos.cookbook:wrapper wrapper-path = ${directory:bin}/wkhtmltopdf environment = DISPLAY=:0 TMPDIR=${directory:run} command-line = {{ parameter_dict['wkhtmltopdf'] }}/wkhtmltopdf --use-xserver parameters-extra = true