Add minimal support for NEO-backed storage.
[slapos.git] / software / erp5 / instance-erp5-input-schema.json
1 {
2   "$schema": "http://json-schema.org/draft-04/schema#",
3   "extends": "./schema-definitions.json#",
4   "description": "Parameters to instantiate ERP5",
5   "additionalProperties": false,
6   "properties": {
7     "site-id": {
8       "description": "ERP5Site object's id",
9       "default": "erp5",
10       "type": "string"
11     },
12     "timezone": {
13       "description": "Main site's timezone",
14       "default": "UTC",
15       "type": "string"
16     },
17     "zope-partition-dict": {
18       "description": "Zope layout definition",
19       "patternProperties": {
20         ".*": {
21           "additionalProperties": false,
22           "properties": {
23             "family": {
24               "description": "The family this partition is part of. For example: 'public', 'admin', 'backoffice', 'web-service'... Each family gets its own frontend (=client-facing ip & port). It has no special meaning for the system.",
25               "default": "default",
26               "type": "string"
27             },
28             "instance-count": {
29               "description": "Number of Zopes to setup on this partition",
30               "default": 1,
31               "type": "integer"
32             },
33             "thread-amount": {
34               "description": "Number of worker threads for each created Zope process",
35               "default": 1,
36               "type": "integer"
37             },
38             "timerserver-interval": {
39               "description": "Timerserver tick perdiod, in seconds, or 0 to disable",
40               "default": 5,
41               "type": "integer"
42             },
43             "longrequest-logger-interval": {
44               "description": "Period, in seconds, with which LongRequestLogger polls worker thread stack traces, or -1 to disable",
45               "default": -1,
46               "type": "integer"
47             },
48             "longrequest-logger-timeout": {
49               "description": "Transaction duration after which LongRequestLogger will start logging its stack trace, in seconds",
50               "default": 1,
51               "type": "integer"
52             },
53             "port-base": {
54               "allOf": [{
55                 "$ref": "#/definitions/tcpv4port"
56               }, {
57                 "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)",
58                 "default": 2200
59               }]
60             },
61             "computer-guid": {
62               "description": "GUID of computer instance must be requested on",
63               "type": "string"
64             }
65           },
66           "type": "object"
67         }
68       },
69       "type": "object"
70     },
71     "frontend": {
72       "additionalProperties": false,
73       "properties": {
74         "software-url": {
75           "description": "Software URL of an existing frontend, no frontend will be requested if this value is empty",
76           "default": "",
77           "type": "string"
78         },
79         "instance-guid": {
80           "description": "Frontend's instance GUID, required if software-url is non-empty (not perfect: if frontend is moved and its instance GUID changes, you need to update this value)",
81           "type": "string"
82         },
83         "software-type": {
84           "description": "Frontend software type in given software relase",
85           "default": "RootSoftwareInsance",
86           "type": "string"
87         },
88         "domain": {
89           "description": "Domain name belonging to this instance",
90           "default": "",
91           "type": "string"
92         }
93       },
94       "default": {},
95       "type": "object"
96     },
97     "kumofs-computer-guid": {
98       "description": "GUID of computer instance must be requested on",
99       "type": "string"
100     },
101     "kumofs": {
102       "description": "Persistent memcached service",
103       "additionalProperties": {
104         "$ref": "./instance-kumofs-input-schema.json#properties"
105       },
106       "type": "object"
107     },
108     "memcached-computer-guid": {
109       "description": "GUID of computer instance must be requested on",
110       "type": "string"
111     },
112     "memcached": {
113       "description": "Volatile memcached service",
114       "additionalProperties": {
115         "$ref": "./instance-kumofs-input-schema.json#properties"
116       },
117       "type": "object"
118     },
119     "cloudooo-computer-guid": {
120       "description": "GUID of computer instance must be requested on",
121       "type": "string"
122     },
123     "cloudooo": {
124       "description": "Format conversion service",
125       "additionalProperties": {
126         "$ref": "./instance-cloudooo-input-schema.json#properties"
127       },
128       "type": "object"
129     },
130     "mariadb-computer-guid": {
131       "description": "GUID of computer instance must be requested on",
132       "type": "string"
133     },
134     "mariadb": {
135       "description": "Relational database service",
136       "additionalProperties": {
137         "$ref": "./instance-mariadb-input-schema.json#properties"
138       },
139       "type": "object"
140     },
141     "zodb-software-type": {
142       "description": "Zope Object DataBase implementation",
143       "default": "zeo",
144       "enum": ["zeo", "neo"],
145       "type": "string"
146     },
147     "zodb": {
148       "description": "Zope Object DataBase service",
149       "oneOf": [
150         {"$ref": "./instance-neo-input-schema.json#properties"},
151         {"$ref": "./instance-zeo-input-schema.json#properties"}
152       ]
153     }
154   }
155 }