NEO repository has moved to lab.nexedi.com
[slapos.git] / software / neoppod / instance-neo-input-schema.json
1 {
2   "$schema": "http://json-schema.org/draft-04/schema#",
3   "description": "Parameters to instantiate a NEO cluster. See https://lab.nexedi.com/nexedi/neoppod/blob/master/neo.conf for more information.",
4   "additionalProperties": false,
5   "required": ["cluster"],
6   "properties": {
7     "cluster": {
8       "description": "Cluster unique identifier. Your last line of defense against mixing up NEO clusters and corrupting your data. Choose a unique value for each of your cluster.",
9       "type": "string"
10     },
11     "partitions": {
12       "description": "Number of partitions. You cannot change this value once you created a cluster.",
13       "default": 12,
14       "type": "integer"
15     },
16     "replicas": {
17       "description": "Number of replicates.",
18       "default": 0,
19       "type": "integer"
20     },
21     "upstream-cluster": {
22       "description": "Identifier of the cluster to backup.",
23       "type": "string"
24     },
25     "upstream-masters": {
26       "description": "Master nodes in the cluster to backup.",
27       "type": "string"
28     },
29     "sla-dict": {
30       "description": "[NEO SR only] 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 ('node-0', 'node-1', ...).",
31       "additionalProperties": {
32         "type": "array",
33         "items": { "type": "string" },
34         "uniqueItems": true
35       },
36       "type": "object"
37     },
38     "ssl": {
39       "description": "Enable SSL. All nodes look for 3 files in ~/etc: ca.crt, neo.crt, neo.key. Waiting that SlapOS provides a way to manage certificates, the user must deploy them manually, or use the temporary _ca/_cert/_key parameters.",
40       "default": true,
41       "type": "boolean"
42     },
43     "_ca": {
44       "type": "string"
45     },
46     "_cert": {
47       "type": "string"
48     },
49     "_key": {
50       "type": "string"
51     },
52     "node-list": {
53       "description": "List of dictionaries containing parameters for each node.",
54       "items": {
55         "description": "Dictionary containing parameters required to configure individual nodes.",
56         "default": {},
57         "properties": {
58           "admin": {
59             "description": "Port of admin node. 0 to disable.",
60             "default": 2050,
61             "type": "integer"
62           },
63           "master": {
64             "description": "Port of master node. 0 to disable.",
65             "default": 2051,
66             "type": "integer"
67           },
68           "storage-count": {
69             "description": "Number of storage nodes to deploy. One master and one admin node is deployed with each storage.",
70             "default": 1,
71             "type": "integer"
72           },
73           "mysql": {
74             "description": "Dictionary containing parameters for MySQL.",
75             "default": {},
76             "properties": {
77               "relaxed-writes": {
78                 "description": "When enabled, sets innodb_flush_log_at_trx_commit = 0, innodb_flush_method = nosync, innodb_doublewrite = 0 and sync_frm = 0 - RTFM, those options are dangerous",
79                 "default": false,
80                 "type": "boolean"
81               }
82             },
83             "additionalProperties": {
84               "description": "To configure important parameters like innodb_buffer_pool_size, tokudb_cache_size, etc.",
85               "type": "string"
86             },
87             "type": "object"
88           },
89           "engine": {
90             "description": "Configures storage engine, currently only InnoDB and TokuDB are supported. Defaults to NEO's default.",
91             "type": "string"
92           }
93         },
94         "type": "object"
95       },
96       "type": "array"
97     }
98   },
99   "type": "object"
100 }