instance-neo-input-schema.json 4.14 KB
Newer Older
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 6 7
  "require": [
    "cluster"
  ],
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  "properties": {
    "cluster": {
      "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.",
      "type": "string"
    },
    "partitions": {
      "description": "Number of partitions. You cannot change this value once you created a cluster.",
      "default": 12,
      "type": "integer"
    },
    "replicas": {
      "description": "Number of replicates.",
      "default": 0,
      "type": "integer"
    },
    "upstream-cluster": {
      "description": "Identifier of the cluster to backup.",
      "type": "string"
    },
    "upstream-masters": {
      "description": "Master nodes in the cluster to backup.",
      "type": "string"
    },
    "sla-dict": {
32
      "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', ...). The prefix 'node-' is mandatory and the number must start from 0. The total number of nodes here must be equal to the length of node-list.",
33 34
      "additionalProperties": {
        "type": "array",
35 36 37
        "items": {
          "type": "string"
        },
38
        "uniqueItems": true
39 40 41
      },
      "type": "object"
    },
42
    "ssl": {
43
      "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.",
44 45 46
      "default": true,
      "type": "boolean"
    },
47 48 49 50 51 52 53 54 55
    "_ca": {
      "type": "string"
    },
    "_cert": {
      "type": "string"
    },
    "_key": {
      "type": "string"
    },
56 57 58 59 60 61
    "node-list": {
      "description": "List of dictionaries containing parameters for each node.",
      "items": {
        "description": "Dictionary containing parameters required to configure individual nodes.",
        "default": {},
        "properties": {
62 63 64 65 66 67 68 69 70 71
          "admin": {
            "description": "Port of admin node. 0 to disable.",
            "default": 2050,
            "type": "integer"
          },
          "master": {
            "description": "Port of master node. 0 to disable.",
            "default": 2051,
            "type": "integer"
          },
72 73 74 75 76
          "storage-count": {
            "description": "Number of storage nodes to deploy. One master and one admin node is deployed with each storage.",
            "default": 1,
            "type": "integer"
          },
77
          "data-deduplication": {
78 79 80
            "description": "Set the --dedup option for storage nodes.",
            "default": false,
            "type": "boolean"
81
          },
82
          "disable-drop-partitions": {
83 84 85
            "description": "Set the --disable-drop-partitions option for storage nodes.",
            "default": false,
            "type": "boolean"
86
          },
87 88 89 90 91 92 93 94 95 96
          "mysql": {
            "description": "Dictionary containing parameters for MySQL.",
            "default": {},
            "properties": {
              "relaxed-writes": {
                "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",
                "default": false,
                "type": "boolean"
              }
            },
97 98 99
            "additionalProperties": {
              "description": "To configure important parameters like innodb_buffer_pool_size, tokudb_cache_size, etc.",
              "type": "string"
100 101 102 103 104 105 106
            },
            "type": "object"
          },
          "engine": {
            "description": "Configures storage engine, currently only InnoDB and TokuDB are supported. Defaults to NEO's default.",
            "type": "string"
          }
107 108
        },
        "type": "object"
109 110 111 112 113 114
      },
      "type": "array"
    }
  },
  "type": "object"
}