{% if slap_software_type == software_type -%} {% set part_list = [] -%} {% macro section(name) %}{% do part_list.append(name) %}{{ name }}{% endmacro -%} ############################# # # Request erp5 production environnment # ############################# [request-common] recipe = slapos.cookbook:request software-url = ${slap-connection:software-release-url} sla = computer_guid return = url server-url = ${slap-connection:server-url} key-file = ${slap-connection:key-file} cert-file = ${slap-connection:cert-file} computer-id = ${slap-connection:computer-id} partition-id = ${slap-connection:partition-id} [request-sphinx] <=request-common name = Sphinx Search Engine software-type = sphinx sla-computer_guid = ${slap-parameter:sphinx-computer-guid} return = url-sphinx url-sphinx-sql [request-mariadb] <=request-common name = MariaDB DataBase config = test-database-amount config-test-database-amount = ${slap-parameter:test-database-amount} software-type = mariadb sla-computer_guid = ${slap-parameter:mariadb-computer-guid} [request-cloudooo] <=request-common name = Cloudooo config = cloudooo-json config-cloudooo-json = ${slap-parameter:cloudooo-json} software-type = cloudooo sla-computer_guid = ${slap-parameter:cloudooo-computer-guid} [request-memcached] <=request-common name = Memcached software-type = memcached sla-computer_guid = ${slap-parameter:memcached-computer-guid} [request-kumofs] <=request-common name = KumoFS software-type = kumofs sla-computer_guid = ${slap-parameter:kumofs-computer-guid} [request-zodb] < = request-common name = zodb return = zodb-list # (dict) # key (str) # (same as config-zodb-dict) # value (dict) # Storage-type-specific parameters, suitable for zope.conf. # key & value: str # Ex: {'server': 'example.com:8100', 'storage': '1'} tidstorage-ip # self-explaining tidstorage-port # self-explaining config = zodb-dict # (dict) # ZODBs to provide. # key (str) # Zope internal name for this ZODB. Used to tell mountpoints apart. # value (dict) # key (str) # Possible keys and associated value types: # "storage_ident" (str, optional) # Storage identifier. All zodbs requested with the same storage_ident value # are provided by the same service (ex: same ZEO process). Might not be # supported by all storage_types, silently ignored if so. # Defaults to "default" if not provided. # "storage_dict" (dict, optional) # Storage-type-specific parameters. For example, it can be used to tell where # a ZEO filestorage database is located. {# TODO: make libslap able to generate nested, complex values without having to resort to SR-level parsing -#} config-zodb-dict = {{ slapparameter_dict['zodb-dict'] }} software-type = {{ slapparameter_dict['zodb-software-type'] }} sla-computer_guid = ${slap-parameter:zodb-computer-guid} [request-zope-base] <=request-common return = zope-address-list config = mysql-url memcached-url cloudooo-url kumofs-url sphinx-url-sphinx sphinx-url-sphinx-sql smtp-url bt5 bt5-repository-url zodb-list tidstorage-ip tidstorage-port instance-count thread-amount timerserver-interval timezone site-id config-mysql-url = ${request-mariadb:connection-url} config-memcached-url = ${request-memcached:connection-url} config-cloudooo-url = ${request-cloudooo:connection-url} config-kumofs-url = ${request-kumofs:connection-url} config-sphinx-url-sphinx = ${request-sphinx:connection-url-sphinx} config-sphinx-url-sphinx-sql = ${request-sphinx:connection-url-sphinx-sql} config-bt5 = ${slap-parameter:bt5} config-bt5-repository-url = ${slap-parameter:bt5-repository-url} config-smtp-url = ${slap-parameter:smtp-url} config-zodb-list = ${request-zodb:connection-zodb-list} # config-zodb-dict = ${request-zodb:connection-zodb-dict} # config-zodb-storage-type = ${request-zodb:connection-zodb-storage-type} config-tidstorage-ip = ${request-zodb:connection-tidstorage-ip} config-tidstorage-port = ${request-zodb:connection-tidstorage-port} config-timezone = ${slap-parameter:timezone} config-site-id = ${slap-parameter:site-id} software-type = production-zope {% set zope_family_dict = {} -%} {% for custom_name, zope_parameter_dict in json_module.loads(slapparameter_dict.get('zope-partition-dict', '{}')).items() -%} {% set name = 'zope-' ~ custom_name -%} {% do zope_family_dict.setdefault(zope_parameter_dict.get('family'), []).append('request-' ~ name) -%} [{{ 'request-' ~ name }}] < = request-zope-base name = {{ name }} config-instance-count = {{ zope_parameter_dict.get('instance-count', 1) }} config-thread-amount = {{ zope_parameter_dict.get('thread-amount', 1) }} config-timerserver-interval = {{ zope_parameter_dict.get('timerserver-interval', 0) }} sla-computer_guid = {{ zope_parameter_dict.get('computer_guid', '${slap-connection:computer-id}') }} {% endfor %} [request-backend-base] < = request-common software-type = balancer return = url # XXX: should those really be same for all backends ? config-haproxy-maxconn = {{ slapparameter_dict.get('haproxy-maxconn', 1) }} config-haproxy-server-check-path = {{ slapparameter_dict.get('haproxy-server-check-path', '/') }} config-apache-access-control-string = {{ slapparameter_dict.get('apache-access-control-string', '') }} config-apache-ssl-authentication = {{ slapparameter_dict.get('apache-ssl-authentication', '0') }} config-apache-backend-path = {{ slapparameter_dict.get('apache-backend-path', '/') % {'site_id': slapparameter_dict['site_id']} }} config-ca = {{ slapparameter_dict['ca'] }} {% for family_name, zope_section_id_list in zope_family_dict.items() -%} {% set backend_name = 'backend-' ~ family_name -%} {% set frontend_name = 'frontend-' ~ family_name -%} [{{ section(backend_name) }}] < = request-backend-base config = zope-name-list haproxy-maxconn haproxy-server-check-path apache-access-control-string apache-ssl-authentication apache-backend-path ca {% for zope_section_id in zope_section_id_list %} {{ 'zope-' ~ zope_section_id ~ '-address-list' }} {% endfor %} name = {{ backend_name }} sla-computer_guid = ${slap-parameter:zodb-computer-guid} config-zope-name-list = {{ json_module.dumps(zope_section_id_list) }} {% for zope_section_id in zope_section_id_list %} config-zope-{{ zope_section_id }}-address-list = {{ '${' ~ zope_section_id ~ ':connection-zope-address-list}' }} {% endfor %} {% endfor %} ############################# # # Global buildout parameters # ############################# [slap-parameter] # Default value if no computer_guid is specified for each type sphinx-computer-guid = ${slap-connection:computer-id} mariadb-computer-guid = ${slap-connection:computer-id} cloudooo-computer-guid = ${slap-connection:computer-id} memcached-computer-guid = ${slap-connection:computer-id} kumofs-computer-guid = ${slap-connection:computer-id} zodb-computer-guid = ${slap-connection:computer-id} cloudooo-json = bt5 = erp5_full_text_myisam_catalog erp5_configurator_standard erp5_configurator_maxma_demo erp5_configurator_ung erp5_configurator_run_my_doc bt5-repository-url = {{ local_bt5_repository }} smtp-url = smtp://localhost:25/ timezone = Europe/Paris site-id = erp5 test-database-amount = 0 [buildout] parts = {{ part_list | join('\n ') }} eggs-directory = {{ eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }} offline = true {% endif %}