{
  "type": "object",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Input Parameters",
  "properties": {
    "slave-frontend": {
      "title": "Web frontend",
      "description": "Front end used to provide web access for internal services at the kvm.",
      "properties": {
        "slave-domain": {
          "title": "Slave frontend domain",
          "description": "Unique domain name for this slave frontend.",
          "type": "string",
          "default": ""
        },
        "instance-guid": {
          "title": "Main Frontend Instance ID",
          "description": "Unique identifier of the frontend instance, like \"SOFTINST-11031\".",
          "type": "string",
          "default": ""
        },
        "frontend-software-type": {
          "title": "Frontend Software Type",
          "description": "Type of the frontend instance, like \"frontend\".",
          "type": "string"
        },
        "frontend-software-url": {
          "title": "Frontend Software URL",
          "description": "Software Release URL of the frontend instance, like \"http://example.com/path/to/software.cfg\".",
          "type": "string",
          "format": "uri",
          "default": "http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg"
        }
      },
      "type": "object"
    },
    "computer-memory-percent-threshold": {
      "title": "Computer memory percent threshold.",
      "description": "Computer memory percent threshold.",
      "type": "integer",
      "default": 80
    },
    "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"
    },
    "mail-from": {
      "title": "Mail From",
      "description": "Mail From address",
      "type": "string",
      "default": ""
    },
    "mail-smtp-addr": {
      "title": "Mail SMTP address",
      "description": "Mail SMTP address. Default: localhost",
      "type": "string",
      "default": "localhost"
    },
    "mail-smtp-port": {
      "title": "Mail SMTP port",
      "description": "Mail SMTP port. Default: 25",
      "type": "integer",
      "default": "25"
    },
    "mail-smtp-password": {
      "title": "Mail SMTP password",
      "description": "Mail SMTP password",
      "type": "string",
      "default": ""
    },
    "mail-smtp-user": {
      "title": "Mail SMTP User",
      "description": "Mail SMTP User",
      "type": "string",
      "default": ""
    },
    "mail-to": {
      "title": "Mail To",
      "description": "",
      "type": "string",
      "default": ""
    },
    "http-session-lifetime": {
      "title": "Web Session life time in s",
      "description": "Web interface Session life time in seconds. Default 86400",
      "type": "integer",
      "default": 86400
    },
    "http-refresh-interval": {
      "title": "Web refresh interval in s",
      "description": "Web interface refresh interval in s. Default 4s.",
      "type": "integer",
      "default": 4
    },
    "require-ssl": {
      "title": "Enable REQUIRE SSL for repman database users",
      "description": "Enable secure connection between repman and mariadb databases. This option is an initial value, used only when creating database users.",
      "type": "boolean",
      "default": false
    },
    "repman-cluster-dict": {
      "title": "Replication Manager clusters definition",
      "description": "Replication Manager clusters definition",
      "patternProperties": {
        ".*": {
          "properties": {
            "database-amount": {
              "title": "Amount of databases for cluster",
              "description": "Database amount to deploy with this cluster. Minimal amount is 2 required to enable replication.",
              "type": "integer",
              "default": 2,
              "minimum": 2
            },
            "-sla-0-computer_guid": {
              "title": "Prefered Master Computer Guid",
              "description": "Computer Guid for prefered Master database.",
              "type": "string",
              "default": ""
            },
            "-sla-1-computer_guid": {
              "title": "Slave 1 Computer Guid",
              "description": "Computer Guid for the first slave database.",
              "type": "string",
              "default": ""
            },
            "-sla-2-computer_guid": {
              "title": "Slave 2 Computer Guid",
              "description": "Computer Guid for the second slave database.",
              "type": "string",
              "default": ""
            },
            "-sla-3-computer_guid": {
              "title": "Slave 3 Computer Guid",
              "description": "Computer Guid for the third slave database.",
              "type": "string",
              "default": ""
            },
            "-sla-4-computer_guid": {
              "title": "Slave 4 Computer Guid",
              "description": "Computer Guid for the fourth slave database.",
              "type": "string",
              "default": ""
            },
            "tags": {
              "title": "Provisioning db tag list",
              "description": "Provisioning db tags. Set one tag per line.",
              "type": "array",
              "items": {
                "type": "string"
              },
              "default": [
                "gtidstrict",
                "bind",
                "pkg",
                "innodb",
                "noquerycache",
                "slow",
                "pfs",
                "linux",
                "readonly",
                "diskmonitor",
                "sqlerror",
                "compressbinlog",
                "bm4ci",
                "mroonga",
                "utctime",
                "readcommitted",
                "nohandshake",
                "ssl"
              ]
            },
            "proxysql-user": {
              "title": "Proxysql username",
              "description": "Proxysql external user, default is 'external'.",
              "type": "string",
              "default": "external"
            },
            "proxy-tags": {
              "title": "Proxy tag list",
              "description": "playbook configuration tags. Default: [\"pkg\", \"masterslave\", \"linux\", \"noreadwritesplit\", \"ssl\"]",
              "type": "array",
              "items": {
                "type": "string"
              },
              "default": [
                "pkg",
                "masterslave",
                "linux",
                "noreadwritesplit",
                "ssl"
              ]
            },
            "logical-backup-cron": {
              "title": "Mysqldump backup cron definition.",
              "description": "Logical backup cron expression represents a set of times, using cron format.",
              "type": "string",
              "default": "0 21 * * *"
            },
            "physical-backup-cron": {
              "title": "Mariabackup cron definition",
              "description": "Physical backup cron expression represents a set of times, using cron format.",
              "type": "string",
              "default": "0 1 * * *"
            },
            "proxy-cpu-cores": {
              "title": "Proxy Cpu cores",
              "description": "Proxy Cpu cores. Default: 2",
              "type": "integer",
              "default": 2,
              "minimum": 1
            },
            "proxy-memory": {
              "title": "Proxy Memory usage in giga bytes",
              "description": "Proxy Memory usage in giga bytes. Default: 1G",
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "db-cpu-cores": {
              "title": "Database Cpu cores",
              "description": "Database Cpu cores. Default: 2",
              "type": "integer",
              "default": 2,
              "minimum": 1
            },
            "db-disk-iops": {
              "title": "Database Rnd IO/s",
              "description": "Rnd IO/s in seconds for micro service VM (default 300).",
              "type": "integer",
              "default": 300
            },
            "db-memory": {
              "title": "Database memory in M",
              "description": "Memory in M for micro service VM (default 256)",
              "type": "integer",
              "default": 256,
              "minimum": 256,
              "multipleOf": 256
            },
            "db-memory-shared-pct": {
              "title": "Percent memory list shared per buffer",
              "description": "Percent memory shared per buffer. Default: [\"threads:16\", \"innodb:60\", \"myisam:10\", \"aria:10\", \"rocksdb:1\", \"s3:1\", \"archive:1\", \"querycache:0\"]",
              "type": "array",
              "items": {
                "type": "string"
              },
              "default": [
                "threads:16",
                "innodb:60",
                "myisam:10",
                "aria:10",
                "rocksdb:1",
                "s3:1",
                "archive:1",
                "querycache:0"
              ]
            },
            "db-memory-threaded-pct": {
              "title": "Percent memory allocted per threads",
              "description": "Percent memory allocted per threads. Default: [\"tmp:70\", \"join:20\", \"sort:10\"]",
              "type": "array",
              "items": {
                "type": "string"
              },
              "default": [
                "tmp:70",
                "join:20",
                "sort:10"
              ]
            },
            "innodb-file-per-table": {
              "title": "enable Innodb file per table",
              "description": "enable Innodb file per table. Possible value: 0=disabled, 1=enabled",
              "type": "integer",
              "default": 1,
              "minimum": 0,
              "maximum": 1
            },
            "use-ipv6": {
              "title": "Mariadb server listen on IPv6",
              "description": "Listen on IPv6 instead of IPv4.",
              "type": "boolean",
              "default": true
            },
            "autorejoin": {
              "title": "Automatic rejoin a failed master db",
              "description": "Automatic rejoin a failed master (default: true).",
              "type": "boolean",
              "default": true
            },
            "autoseed": {
              "title": "Automatic join a standalone node",
              "description": "Automatic join a standalone mariadb node to the cluster.",
              "type": "boolean",
              "default": true
            },
            "failover-mode": {
              "title": "Failover mode",
              "description": "Failover is manual or automatic (default \"manual\").",
              "type": "string",
              "default": "manual",
              "enum": [
                "manual",
                "automatic"
              ]
            },
            "failover-limit": {
              "title": "Failover amount limit",
              "description": "Failover is canceld if already failover this number of time (0: unlimited) (default 5).",
              "type": "integer",
              "default": 5
            },
            "failover-falsepositive-heartbeat": {
              "title": "Failover check slaves do not receive heartbeat",
              "description": "Failover checks that slaves do not receive heartbeat (default true).",
              "type": "boolean",
              "default": true
            },
            "failover-falsepositive-heartbeat-timeout": {
              "title": "Failover check slaves do not receive heartbeat timeout",
              "description": "Failover checks that slaves do not receive heartbeat detection timeout  (default 3).",
              "type": "integer",
              "default": 3
            },
            "failover-falsepositive-ping-counter": {
              "title": "Failover amount of ping failures",
              "description": "Failover after this number of ping failures (interval 1s) (default 5).",
              "type": "integer",
              "default": 5
            },
            "failover-max-slave-delay": {
              "title": "Failover election ignore slave with replication delay",
              "description": "Election ignore slave with replication delay over this time in sec (default 30).",
              "type": "integer",
              "default": 30
            },
            "failover-readonly-state": {
              "title": "Failover Switchover set slaves as read-only",
              "description": "Failover Switchover set slaves as read-only (default true).",
              "type": "boolean",
              "default": true
            },
            "failover-restart-unsafe": {
              "title": "Failover when cluster down if a slave is start first",
              "description": "Failover when cluster down if a slave is start first.",
              "type": "boolean",
              "default": false
            },
            "failover-time-limit": {
              "title": "Cancel failover if time in sec not passed after previous failover",
              "description": "Failover is canceled if timer in sec is not passed with previous failover (0: do not wait).",
              "type": "integer",
              "default": 0
            },
            "switchover-at-equal-gtid": {
              "title": "Switchover only when slaves are fully in sync",
              "description": "Switchover only when slaves are fully in sync.",
              "type": "boolean",
              "default": false
            },
            "switchover-slave-wait-catch": {
              "title": "Switchover wait for slave to catch with replication",
              "description": "Switchover wait for slave to catch with replication, not needed in GTID mode but enable to detect possible issues like witing on old master (default true).",
              "type": "boolean",
              "default": true
            },
            "switchover-wait-kill": {
              "title": "Switchover wait ms before killing threads on demoted master",
              "description": "Switchover wait this many milliseconds before killing threads on demoted master (default 5000).",
              "type": "integer",
              "default": 5000
            },
            "switchover-wait-trx": {
              "title": "Cancel switchover after timeout seconds if can't aquire FTWRL",
              "description": "Switchover is cancel after this timeout in second if can't aquire FTWRL (default 10).",
              "type": "integer",
              "default": 10
            },
            "switchover-wait-write-query": {
              "title": "Cancel switchover after timeout if a write query is running",
              "description": "Switchover is canceled if a write query is running for this time (default 10).",
              "type": "integer",
              "default": 10
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    }
  }
}
