{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "Parameters to instantiate ERP5", "additionalProperties": false, "definitions": { "tcpv4port": { "$ref": "./schemas-definitions.json#/tcpv4port" } }, "properties": { "sla-dict": { "description": "Where to request instances. Each key is a query string for criterions (e.g. \"computer_guid=foo\"), and each value is a list of partition references (note: Zope partitions reference must be prefixed with \"zope-\").", "additionalProperties": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "type": "object" }, "site-id": { "description": "ERP5Site object's id. An empty value disables automatic site creation.", "default": "erp5", "type": "string" }, "bt5": { "description": "Business Template to install at automatic site creation. By default, all configurators are installed.", "type": "string" }, "id-store-interval": { "description": "Set Store Interval of default SQL Non Continuous Increasing Id Generator at automatic site creation. If unset, the value from the erp5_core Business Template is not touched.", "type": "integer" }, "timezone": { "description": "Zope's timezone. Possible values are determined by host's libc, and typically come from a separate package (tzdata, ...)", "default": "UTC", "type": "string" }, "deadlock-debugger-password": { "description": "Password for /manage_debug_threads", "type": "string" }, "inituser-login": { "description": "Login of the initial/rescue user", "default": "zope", "type": "string" }, "inituser-password": { "description": "Password of the initial/rescue user", "type": "string" }, "developer-list": { "description": "List of logins which should get the Developper role (required to modify portal_components' content), defaulting to inituser-login's value", "items": { "pattern": "^\\S+$", "type": "string" }, "uniqueItems": true, "type": "array" }, "hostalias-dict": { "description": "Hostname-to-domain-name mapping", "default": {}, "additionalProperties": { "description": "A hostname to which current entry will resolve", "type": "string" }, "type": "object" }, "hosts-dict": { "description": "Host entries to be used in addition to and/or overriding auto-generated ones (erp5-catalog-0, erp5-cloudooo, erp5-memcached-persistent, erp5-memcached-volatile and erp5-smtp)", "patternProperties": { ".*": { "description": "An IP or domain name to which current entry will resolve", "type": "string" } }, "type": "object" }, "frontend": { "description": "Front-end slave instance request parameters", "properties": { "software-url": { "description": "Front-end's software type. If this parameter is empty, no front-end instance is requested. Else, sla-dict must specify 'frontend' which is a special value matching all frontends (e.g. {\"instance_guid=bar\": [\"frontend\"]}).", "default": "", "type": "string", "format": "uri" }, "domain": { "description": "The domain name to request front-end to respond as.", "default": "", "type": "string" }, "software-type": { "description": "Request a front-end slave instance of this software type.", "default": "RootSoftwareInstance", "type": "string" }, "virtualhostroot-http-port": { "description": "Front-end slave http port. Port where http requests to frontend will be redirected.", "default": 80, "type": "integer" }, "virtualhostroot-https-port": { "description": "Front-end slave https port. Port where https requests to frontend will be redirected.", "default": 443, "type": "integer" } }, "type": "object" }, "wsgi": { "description": "If set to true, Zope is run as a WSGI application, instead of using the Medusa HTTP server.", "type": "boolean", "default": true }, "zope-partition-dict": { "description": "Zope layout definition", "default": { "1": {} }, "patternProperties": { ".*": { "additionalProperties": false, "properties": { "family": { "description": "The family this partition is part of. For example: 'public', 'admin', 'backoffice', 'web-service'... Each family gets its own balancer entry. It has no special meaning for the system.", "default": "default", "type": "string" }, "instance-count": { "description": "Number of Zopes to setup on this partition", "default": 1, "type": "integer" }, "thread-amount": { "description": "Number of worker threads for each created Zope process", "default": 4, "type": "integer" }, "timerserver-interval": { "description": "Timerserver tick perdiod, in seconds, or 0 to disable", "default": 5, "type": "number" }, "private-dev-shm": { "description": "Size of private /dev/shm for wendelin.core. If sysctl kernel.unprivileged_userns_clone exists, it must be set to 1.", "type": "string" }, "ssl-authentication": { "title": "Enable SSL Client authentication on this zope instance.", "description": "If set to true, will set SSL Client verification to required on apache VirtualHost which allow to access this zope instance.", "type": "boolean", "default": false }, "webdav": { "description": "Serve webdav queries, implies timerserver-interval=0 (disabled). Mixing webdav and non-webdav nodes in a single family will give unspecified results.", "default": false, "type": "boolean" }, "longrequest-logger-interval": { "description": "Period, in seconds, with which LongRequestLogger polls worker thread stack traces, or -1 to disable", "default": -1, "type": "integer" }, "longrequest-logger-timeout": { "description": "Transaction duration after which LongRequestLogger will start logging its stack trace, in seconds", "default": 1, "type": "integer" }, "large-file-threshold": { "description": "Requests bigger than this size get saved into a temporary file instead of being read completely into memory, in bytes", "default": "10MB", "type": "string" }, "port-base": { "allOf": [ { "$ref": "#/definitions/tcpv4port" }, { "description": "Start allocating ports at this value. Useful if one needs to make several partitions share the same port range (ie, several partitions bound to a single address)", "default": 2200 } ] } }, "type": "object" } }, "type": "object" }, "kumofs": { "description": "Persistent memcached service", "allOf": [ { "$ref": "./instance-kumofs-schema.json" }, { "properties": { "tcpv4-port": { "default": 2000 } } } ], "type": "object" }, "memcached": { "description": "Volatile memcached service", "allOf": [ { "$ref": "./instance-kumofs-schema.json" }, { "properties": { "tcpv4-port": { "default": 2010 } } } ], "type": "object" }, "cloudooo-url": { "description": "Format conversion service URL", "pattern": "^https?://", "type": "string", "format": "uri" }, "cloudooo-retry-count": { "description": "Define retry count for cloudooo in network error case in test", "type": "integer", "default": 2 }, "smtp": { "description": "Mail queuing and relay service", "allOf": [ { "$ref": "./instance-smtp-schema.json" }, { "properties": { "tcpv4-port": { "default": 2010 } } } ], "type": "object" }, "mariadb": { "description": "Relational database service", "allOf": [ { "$ref": "./instance-mariadb-schema.json" }, { "properties": { "tcpv4-port": { "default": 2099 } } } ], "type": "object" }, "zodb-zeo": { "description": "Common settings ZEO servers", "properties": { "tcpv4-port": { "allOf": [ { "$ref": "#/definitions/tcpv4port" }, { "description": "Start allocating ports at this value, going upward" } ] }, "backup-periodicity": { "description": "When to backup, specified in the same format as for systemd.time(7) calendar events (years & seconds not supported, DoW & DoM can not be combined). Enter 'never' to disable backups.", "default": "daily", "type": "string" }, "tidstorage-repozo-path": { "description": "Directory for backup timestamp and tidstorage status files.", "default": "~/srv/backup/tidstorage", "type": "string" } }, "type": "object" }, "zodb": { "description": "Zope Object DataBase mountpoints. See https://github.com/zopefoundation/ZODB/blob/4/src/ZODB/component.xml for extra options.", "items": { "required": [ "type" ], "properties": { "name": { "description": "Database name", "default": "main", "type": "string" }, "mount-point": { "description": "Mount point", "default": "/", "type": "string" }, "storage-dict": { "description": "Storage configuration. For NEO, 'logfile' is automatically set (see https://lab.nexedi.com/nexedi/neoppod/blob/master/neo/client/component.xml for other settings).", "properties": { "ssl": { "description": "For external NEO. Pass false if you want to disable SSL or pass custom values for ca/cert/key.", "default": true, "type": "boolean" } }, "patternProperties": { ".!$": { "$ref": "#/properties/zodb/items/patternProperties/.!$" } }, "additionalProperties": { "$ref": "#/properties/zodb/items/additionalProperties" }, "type": "object" }, "type": true, "server": true }, "oneOf": [ { "title": "zeo", "properties": { "type": { "description": "Storage type", "const": "zeo" }, "server": { "description": "Instantiate a server. If missing, 'storage-dict' must contain the necessary properties to mount the ZODB. The partition reference is 'zodb'.", "$ref": "./instance-zeo-schema.json" } } }, { "title": "neo", "properties": { "type": { "description": "Storage type", "const": "neo" }, "server": { "description": "Instantiate a server. If missing, 'storage-dict' must contain the necessary properties to mount the ZODB. Partitions references are 'neo-0', 'neo-1', ...", "$ref": "../neoppod/instance-neo-input-schema.json#/definitions/neo-cluster" } } } ], "patternProperties": { ".!$": { "description": "Override with the value of the first item whose zope id matches against the pattern.", "items": { "items": [ { "description": "Override pattern (Python regular expression).", "type": "string" }, { "description": "Override value (parameter for maching nodes).", "type": [ "integer", "string" ] } ], "type": "array" }, "type": "array" } }, "additionalProperties": { "type": [ "integer", "string" ] }, "type": "object" }, "type": "array" }, "jupyter": { "description": "Jupyter subinstance parameters", "properties": { "enable": { "description": "Whether to enable creation of associated Jupyter subinstance", "default": false, "type": "boolean" }, "zope-family": { "description": "Zope family to connect Jupyter to by default", "default": "<first instantiated Zope family>", "type": "string" } }, "type": "object" }, "wendelin-core-zblk-fmt": { "description": "In wendelin.core there are 2 formats for storing data, so called ZBlk0 and ZBlk1. See https://lab.nexedi.com/nexedi/wendelin.core/blob/2e5e1d3d/bigfile/file_zodb.py#L19 for more details.", "default": "", "type": "string" }, "caucase": { "description": "Caucase certificate authority parameters", "properties": { "url": { "title": "Caucase URL", "description": "URL of existing caucase instance to use. If empty, a new caucase instance will be deployed. If not empty, other properties in this section will be ignored.", "default": "", "type": "string", "format": "uri" } }, "additionalProperties": { "$ref": "../caucase/instance-caucase-input-schema.json" }, "type": "object" }, "test-runner": { "description": "Test runner parameters.", "properties": { "enabled": { "description": "Generate helper scripts to run test suite.", "default": true, "type": "boolean" }, "node-count": { "description": "Number of tests this instance can execute in parrallel. This must be at least equal to the number of nodes configured on testnode running the test", "default": 3, "type": "integer" }, "extra-database-count": { "description": "Number of extra databases this instance tests will need.", "default": 3, "type": "integer" } }, "type": "object" }, "balancer": { "description": "HTTP(S) load balancer proxy parameters", "properties": { "ssl": { "description": "HTTPS certificate generation parameters", "properties": { "frontend-caucase-url-list": { "title": "Frontend Caucase URL List", "description": "List of URLs of caucase service of frontend groups to authenticate access from them.", "type": "array", "items": { "type": "string", "format": "uri" }, "uniqueItems": true }, "caucase-url": { "title": "Caucase URL", "description": "URL of caucase service to use. If not set, global setting will be used.", "type": "string", "format": "uri" }, "csr": { "title": "csr", "description": "PEM-encoded certificate signature request to request server certificate with. If not provided, HTTPS will be disabled.", "type": "string" }, "max-crl-update-delay": { "title": "Periodicity of CRL update (days)", "description": "CRL will be updated from caucase at least this often.", "type": "number", "default": 1.0 } }, "type": "object" } }, "type": "object" } } }