instance-erp5-input-schema.json 11.4 KB
Newer Older
1 2 3 4 5
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Parameters to instantiate ERP5",
  "additionalProperties": false,
  "properties": {
6
    "sla-dict": {
7
      "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-\").",
8 9 10 11
      "additionalProperties": {
        "type": "array",
        "items": { "type": "string" },
        "uniqueItems": true
12 13 14
      },
      "type": "object"
    },
15 16 17 18 19 20
    "site-id": {
      "description": "ERP5Site object's id",
      "default": "erp5",
      "type": "string"
    },
    "timezone": {
21
      "description": "Zope's timezone. Possible values are determined by host's libc, and typically come from a separate package (tzdata, ...)",
22 23 24
      "default": "UTC",
      "type": "string"
    },
25 26 27
    "deadlock-debugger-password": {
      "description": "Password for /manage_debug_threads",
      "type": "string"
28
    },
29 30 31 32 33 34 35 36 37
    "inituser-login": {
      "description": "Login of the initial/rescue user",
      "default": "zope",
      "type": "string"
    },
    "inituser-password": {
      "description": "Password of the initial/rescue user",
      "type": "string"
    },
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
    "monitor-port": {
      "title": "Monitor Port",
      "description": "Allow to manually change the port on wich the apache server running monitoring interface is listening. The default value for the webrunner is different from the default value of the standalone stack-monitor server (default 9684)",
      "type": "integer",
       "minimum": 9683,
       "exclusiveMinimum": true
    },
    "monitor-interface-url": {
      "title": "Monitor Web Interface URL",
      "description": "Give Url of HTML web interface that will be used to render this monitor instance.",
      "type": "string",
      "format": "uri",
      "default": "https://monitor.app.officejs.com"
    },
    "monitor-cors-domains": {
      "title": "Monitor CORS domains",
      "description": "List of cors domains separated with space. Needed for ajax query on this monitor instance from a different domain.",
      "type": "string",
      "default": "monitor.app.officejs.com"
    },
    "monitor-password": {
      "description": "Password to access the monitor",
      "type": "string"
    },
    "monitor-user": {
      "description": "User to access the monitor",
      "type": "string"
    },
66
    "developer-list": {
67
      "description": "List of logins which should get the Developper role (required to modify portal_components' content), defaulting to inituser-login's value",
68
      "items": {
69
        "pattern": "^\\S+$",
70 71 72 73 74
        "type": "string"
      },
      "uniqueItems": true,
      "type": "array"
    },
75
    "hostalias-dict": {
76
      "description": "Hostname-to-domain-name mapping",
77
      "default": {},
78 79 80
      "additionalProperties": {
        "description": "A hostname to which current entry will resolve",
        "type": "string"
81 82 83
      },
      "type": "object"
    },
84
    "hosts-dict": {
85
      "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)",
86 87
      "patternProperties": {
        ".*": {
88
          "description": "An IP or domain name to which current entry will resolve",
89 90 91 92 93
          "type": "string"
        }
      },
      "type": "object"
    },
94 95 96 97
    "frontend": {
      "description": "Front-end slave instance request parameters",
      "properties": {
        "software-url": {
98
          "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\"]}).",
99 100 101 102 103 104 105 106 107 108 109
          "default": "",
          "type": "string"
        },
        "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",
110
          "type": "object"
111
        }
112 113 114
      },
      "type": "object"
    },
115 116
    "zope-partition-dict": {
      "description": "Zope layout definition",
117
      "default": {"1": {}},
118 119 120 121 122
      "patternProperties": {
        ".*": {
          "additionalProperties": false,
          "properties": {
            "family": {
123
              "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.",
124 125 126 127 128 129 130 131 132 133
              "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",
134
              "default": 4,
135 136 137 138 139 140 141
              "type": "integer"
            },
            "timerserver-interval": {
              "description": "Timerserver tick perdiod, in seconds, or 0 to disable",
              "default": 5,
              "type": "integer"
            },
142 143 144 145 146
            "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"
            },
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
            "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"
            },
            "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
              }]
164 165 166 167 168 169 170 171
            },
            "monitor-password": {
              "description": "Password to access the monitor",
              "type": "string"
            },
            "monitor-user": {
              "description": "User to access the monitor",
              "type": "string"
172
            }
173 174 175 176 177 178 179 180 181
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "kumofs": {
      "description": "Persistent memcached service",
      "additionalProperties": {
182
        "$ref": "./instance-kumofs-schema.json#/properties"
183 184 185 186 187 188
      },
      "type": "object"
    },
    "memcached": {
      "description": "Volatile memcached service",
      "additionalProperties": {
189
        "$ref": "./instance-kumofs-schema.json#/properties"
190 191 192 193 194 195
      },
      "type": "object"
    },
    "cloudooo": {
      "description": "Format conversion service",
      "additionalProperties": {
196
        "$ref": "./instance-cloudooo-schema.json#/properties"
197 198 199
      },
      "type": "object"
    },
200 201 202 203 204 205 206
    "smtp": {
      "description": "Mail queuing and relay service",
      "additionalProperties": {
        "$ref": "./instance-smtp-schema.json#/properties"
      },
      "type": "object"
    },
207 208 209
    "mariadb": {
      "description": "Relational database service",
      "additionalProperties": {
210
        "$ref": "./instance-mariadb-schema.json#/properties"
211 212 213
      },
      "type": "object"
    },
214 215 216 217 218 219 220 221 222 223 224 225 226
    "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",
227
          "type": "string"
228
        },
229 230 231
        "tidstorage-repozo-path": {
          "description": "Directory for backup timestamp and tidstorage status files.",
          "default": "~/srv/backup/tidstorage",
232 233 234 235
          "type": "string"
        }
      },
      "type": "object"
236 237
    },
    "zodb": {
238
      "description": "Zope Object DataBase mountpoints. See https://github.com/zopefoundation/ZODB/blob/3.10/src/ZODB/component.xml for extra options.",
239
      "items": {
240
        "required": ["type"],
241 242 243 244 245 246
        "properties": {
          "name": {
            "description": "Database name",
            "default": "main",
            "type": "string"
          },
247
          "mount-point": {
248 249 250 251
            "description": "Mount point",
            "default": "/",
            "type": "string"
          },
252
          "type": {
253
            "description": "Storage type",
254
            "enum": ["zeo", "neo"],
255 256
            "type": "string"
          },
257
          "server": {
258
            "description": "Instantiate a server. If missing, 'storage-dict' must contain the necessary properties to mount the ZODB. For ZEO, the partition reference is 'zodb'. For NEO, they are 'neo-0', 'neo-1', ...",
259
            "anyOf": [
260 261
              {"$ref": "./instance-zeo-schema.json"},
              {"$ref": "../neoppod/instance-neo-input-schema.json"}
262 263
            ]
          },
264
          "storage-dict": {
265
            "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).",
266 267 268 269 270 271 272
            "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"
              }
            },
273
            "additionalProperties": {"type": "string"},
274
            "type": "object"
275 276 277 278 279 280 281 282
          },
          "monitor-password": {
            "description": "Password to access the monitor",
            "type": "string"
          },
          "monitor-user": {
            "description": "User to access the monitor",
            "type": "string"
283
          }
284
        },
285
        "additionalProperties": {"type": "string"},
286 287 288
        "type": "object"
      },
      "type": "array"
289 290
    },
    "jupyter": {
291
      "description": "Jupyter subinstance parameters",
292 293
      "properties": {
        "enable": {
294
          "description": "Whether to enable creation of associated Jupyter subinstance",
295 296 297 298 299 300 301 302 303 304
          "default": false,
          "type": "boolean"
        },
        "zope-family": {
          "description": "Zope family to connect Jupyter to by default",
          "default": "<first instantiated Zope family>",
          "type": "string"
        }
      },
      "type": "object"
305 306 307
    },
    "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.",
308
      "default": "",
309
      "type": "string"
310 311 312
    }
  }
}