{
  "type": "object",
  "description": "allows customize `clickhouse-operator` settings, need restart clickhouse-operator pod after adding, more details https://github.com/Altinity/clickhouse-operator/blob/master/docs/operator_configuration.md",
  "x-kubernetes-preserve-unknown-fields": true,
  "properties": {
    "status": {
      "type": "object",
      "x-kubernetes-preserve-unknown-fields": true
    },
    "spec": {
      "type": "object",
      "description": "Allows to define settings of the clickhouse-operator.\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/config/config.yaml\nCheck into etc-clickhouse-operator* ConfigMaps if you need more control\n",
      "x-kubernetes-preserve-unknown-fields": true,
      "properties": {
        "watch": {
          "type": "object",
          "description": "Parameters for watch kubernetes resources which used by clickhouse-operator deployment",
          "properties": {
            "namespaces": {
              "type": "object",
              "description": "List of namespaces where clickhouse-operator watches for events.",
              "x-kubernetes-preserve-unknown-fields": true
            }
          },
          "additionalProperties": false
        },
        "clickhouse": {
          "type": "object",
          "description": "Clickhouse related parameters used by clickhouse-operator",
          "properties": {
            "configuration": {
              "type": "object",
              "properties": {
                "file": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "type": "object",
                      "description": "Each 'path' can be either absolute or relative.\nIn case path is absolute - it is used as is.\nIn case path is relative - it is relative to the folder where configuration file you are reading right now is located.\n",
                      "properties": {
                        "common": {
                          "type": "string",
                          "description": "Path to the folder where ClickHouse configuration files common for all instances within a CHI are located.\nDefault value - config.d\n"
                        },
                        "host": {
                          "type": "string",
                          "description": "Path to the folder where ClickHouse configuration files unique for each instance (host) within a CHI are located.\nDefault value - conf.d\n"
                        },
                        "user": {
                          "type": "string",
                          "description": "Path to the folder where ClickHouse configuration files with users settings are located.\nFiles are common for all instances within a CHI.\nDefault value - users.d\n"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "user": {
                  "type": "object",
                  "description": "Default parameters for any user which will create",
                  "properties": {
                    "default": {
                      "type": "object",
                      "properties": {
                        "profile": {
                          "type": "string",
                          "description": "ClickHouse server configuration `<profile>...</profile>` for any <user>"
                        },
                        "quota": {
                          "type": "string",
                          "description": "ClickHouse server configuration `<quota>...</quota>` for any <user>"
                        },
                        "networksIP": {
                          "type": "array",
                          "description": "ClickHouse server configuration `<networks><ip>...</ip></networks>` for any <user>",
                          "items": {
                            "type": "string"
                          }
                        },
                        "password": {
                          "type": "string",
                          "description": "ClickHouse server configuration `<password>...</password>` for any <user>"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "network": {
                  "type": "object",
                  "description": "Default network parameters for any user which will create",
                  "properties": {
                    "hostRegexpTemplate": {
                      "type": "string",
                      "description": "ClickHouse server configuration `<host_regexp>...</host_regexp>` for any <user>"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "configurationRestartPolicy": {
              "type": "object",
              "description": "Configuration restart policy describes what configuration changes require ClickHouse restart",
              "properties": {
                "rules": {
                  "type": "array",
                  "description": "Array of set of rules per specified ClickHouse versions",
                  "items": {
                    "type": "object",
                    "properties": {
                      "version": {
                        "type": "string",
                        "description": "ClickHouse version expression"
                      },
                      "rules": {
                        "type": "array",
                        "description": "Set of configuration rules for specified ClickHouse version",
                        "items": {
                          "type": "object",
                          "description": "setting: value pairs for configuration restart policy",
                          "x-kubernetes-preserve-unknown-fields": true
                        }
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "additionalProperties": false
            },
            "access": {
              "type": "object",
              "description": "parameters which use for connect to clickhouse from clickhouse-operator deployment",
              "properties": {
                "scheme": {
                  "type": "string",
                  "description": "The scheme to user for connecting to ClickHouse. Possible values: http, https, auto"
                },
                "username": {
                  "type": "string",
                  "description": "ClickHouse username to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName"
                },
                "password": {
                  "type": "string",
                  "description": "ClickHouse password to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName"
                },
                "rootCA": {
                  "type": "string",
                  "description": "Root certificate authority that clients use when verifying server certificates. Used for https connection to ClickHouse"
                },
                "secret": {
                  "type": "object",
                  "properties": {
                    "namespace": {
                      "type": "string",
                      "description": "Location of k8s Secret with username and password to be used by operator to connect to ClickHouse instances"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of k8s Secret with username and password to be used by operator to connect to ClickHouse instances"
                    }
                  },
                  "additionalProperties": false
                },
                "port": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 65535,
                  "description": "Port to be used by operator to connect to ClickHouse instances"
                },
                "timeouts": {
                  "type": "object",
                  "description": "Timeouts used to limit connection and queries from the operator to ClickHouse instances, In seconds",
                  "properties": {
                    "connect": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 10,
                      "description": "Timout to setup connection from the operator to ClickHouse instances. In seconds."
                    },
                    "query": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 600,
                      "description": "Timout to perform SQL query from the operator to ClickHouse instances. In seconds."
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "addons": {
              "type": "object",
              "description": "Configuration addons specifies additional settings",
              "properties": {
                "rules": {
                  "type": "array",
                  "description": "Array of set of rules per specified ClickHouse versions",
                  "items": {
                    "type": "object",
                    "properties": {
                      "version": {
                        "type": "string",
                        "description": "ClickHouse version expression"
                      },
                      "spec": {
                        "type": "object",
                        "description": "spec",
                        "properties": {
                          "configuration": {
                            "type": "object",
                            "description": "allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource",
                            "properties": {
                              "users": {
                                "type": "object",
                                "description": "see same section from CR spec",
                                "x-kubernetes-preserve-unknown-fields": true
                              },
                              "profiles": {
                                "type": "object",
                                "description": "see same section from CR spec",
                                "x-kubernetes-preserve-unknown-fields": true
                              },
                              "quotas": {
                                "type": "object",
                                "description": "see same section from CR spec",
                                "x-kubernetes-preserve-unknown-fields": true
                              },
                              "settings": {
                                "type": "object",
                                "description": "see same section from CR spec",
                                "x-kubernetes-preserve-unknown-fields": true
                              },
                              "files": {
                                "type": "object",
                                "description": "see same section from CR spec",
                                "x-kubernetes-preserve-unknown-fields": true
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "additionalProperties": false
            },
            "metrics": {
              "type": "object",
              "description": "parameters which use for connect to fetch metrics from clickhouse by clickhouse-operator",
              "properties": {
                "timeouts": {
                  "type": "object",
                  "description": "Timeouts used to limit connection and queries from the metrics exporter to ClickHouse instances\nSpecified in seconds.\n",
                  "properties": {
                    "collect": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 600,
                      "description": "Timeout used to limit metrics collection request. In seconds.\nUpon reaching this timeout metrics collection is aborted and no more metrics are collected in this cycle.\nAll collected metrics are returned.\n"
                    }
                  },
                  "additionalProperties": false
                },
                "tablesRegexp": {
                  "type": "string",
                  "description": "Regexp to match tables in system database to fetch metrics from.\nMultiple tables can be matched using regexp. Matched tables are merged using merge() table function.\nDefault is \"^(metrics|custom_metrics)$\".\n"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "template": {
          "type": "object",
          "description": "Parameters which are used if you want to generate ClickHouseInstallationTemplate custom resources from files which are stored inside clickhouse-operator deployment",
          "properties": {
            "chi": {
              "type": "object",
              "properties": {
                "policy": {
                  "type": "string",
                  "description": "CHI template updates handling policy\nPossible policy values:\n  - ReadOnStart. Accept CHIT updates on the operators start only.\n  - ApplyOnNextReconcile. Accept CHIT updates at all time. Apply news CHITs on next regular reconcile of the CHI\n",
                  "enum": [
                    "",
                    "ReadOnStart",
                    "ApplyOnNextReconcile"
                  ]
                },
                "path": {
                  "type": "string",
                  "description": "Path to folder where ClickHouseInstallationTemplate .yaml manifests are located."
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "reconcile": {
          "type": "object",
          "description": "allow tuning reconciling process",
          "properties": {
            "runtime": {
              "type": "object",
              "description": "runtime parameters for clickhouse-operator process which are used during reconcile cycle",
              "properties": {
                "reconcileCHIsThreadsNumber": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 65535,
                  "description": "How many goroutines will be used to reconcile CHIs in parallel, 10 by default"
                },
                "reconcileShardsThreadsNumber": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 65535,
                  "description": "How many goroutines will be used to reconcile shards of a cluster in parallel, 1 by default"
                },
                "reconcileShardsMaxConcurrencyPercent": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100,
                  "description": "The maximum percentage of cluster shards that may be reconciled in parallel, 50 percent by default."
                }
              },
              "additionalProperties": false
            },
            "statefulSet": {
              "type": "object",
              "description": "Allow change default behavior for reconciling StatefulSet which generated by clickhouse-operator",
              "properties": {
                "create": {
                  "type": "object",
                  "description": "Behavior during create StatefulSet",
                  "properties": {
                    "onFailure": {
                      "type": "string",
                      "description": "What to do in case created StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds\nPossible options:\n1. abort - do nothing, just break the process and wait for admin.\n2. delete - delete newly created problematic StatefulSet.\n3. ignore (default) - ignore error, pretend nothing happened and move on to the next StatefulSet.\n"
                    }
                  },
                  "additionalProperties": false
                },
                "update": {
                  "type": "object",
                  "description": "Behavior during update StatefulSet",
                  "properties": {
                    "timeout": {
                      "type": "integer",
                      "description": "How many seconds to wait for created/updated StatefulSet to be Ready"
                    },
                    "pollInterval": {
                      "type": "integer",
                      "description": "How many seconds to wait between checks for created/updated StatefulSet status"
                    },
                    "onFailure": {
                      "type": "string",
                      "description": "What to do in case updated StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds\nPossible options:\n1. abort - do nothing, just break the process and wait for admin.\n2. rollback (default) - delete Pod and rollback StatefulSet to previous Generation. Pod would be recreated by StatefulSet based on rollback-ed configuration.\n3. ignore - ignore error, pretend nothing happened and move on to the next StatefulSet.\n"
                    }
                  },
                  "additionalProperties": false
                },
                "recreate": {
                  "type": "object",
                  "description": "Behavior during recreate StatefulSet",
                  "properties": {
                    "onDataLoss": {
                      "type": "string",
                      "description": "What to do in case operator needs to recreate StatefulSet due to PVC data loss or missing volumes.\nPossible options:\n1. abort - abort the process, do nothing with the problematic StatefulSet.\n2. recreate (default) - proceed and recreate StatefulSet.\n"
                    },
                    "onUpdateFailure": {
                      "type": "string",
                      "description": "What to do in case operator needs to recreate StatefulSet due to update failure or StatefulSet not ready.\nPossible options:\n1. abort - abort the process, do nothing with the problematic StatefulSet.\n2. recreate (default) - proceed and recreate StatefulSet.\n"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "host": {
              "type": "object",
              "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host:\n  - to be excluded from a ClickHouse cluster\n  - to complete all running queries\n  - to be included into a ClickHouse cluster\nrespectfully before moving forward\n",
              "properties": {
                "wait": {
                  "type": "object",
                  "properties": {
                    "exclude": {
                      "type": "string",
                      "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host to be excluded from a ClickHouse cluster",
                      "enum": [
                        "",
                        "0",
                        "1",
                        "False",
                        "false",
                        "True",
                        "true",
                        "No",
                        "no",
                        "Yes",
                        "yes",
                        "Off",
                        "off",
                        "On",
                        "on",
                        "Disable",
                        "disable",
                        "Enable",
                        "enable",
                        "Disabled",
                        "disabled",
                        "Enabled",
                        "enabled"
                      ]
                    },
                    "queries": {
                      "type": "string",
                      "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host to complete all running queries",
                      "enum": [
                        "",
                        "0",
                        "1",
                        "False",
                        "false",
                        "True",
                        "true",
                        "No",
                        "no",
                        "Yes",
                        "yes",
                        "Off",
                        "off",
                        "On",
                        "on",
                        "Disable",
                        "disable",
                        "Enable",
                        "enable",
                        "Disabled",
                        "disabled",
                        "Enabled",
                        "enabled"
                      ]
                    },
                    "include": {
                      "type": "string",
                      "description": "Whether the operator during reconcile procedure should wait for a ClickHouse host to be included into a ClickHouse cluster",
                      "enum": [
                        "",
                        "0",
                        "1",
                        "False",
                        "false",
                        "True",
                        "true",
                        "No",
                        "no",
                        "Yes",
                        "yes",
                        "Off",
                        "off",
                        "On",
                        "on",
                        "Disable",
                        "disable",
                        "Enable",
                        "enable",
                        "Disabled",
                        "disabled",
                        "Enabled",
                        "enabled"
                      ]
                    },
                    "replicas": {
                      "type": "object",
                      "description": "Whether the operator during reconcile procedure should wait for replicas to catch-up",
                      "properties": {
                        "all": {
                          "type": "string",
                          "description": "Whether the operator during reconcile procedure should wait for all replicas to catch-up",
                          "enum": [
                            "",
                            "0",
                            "1",
                            "False",
                            "false",
                            "True",
                            "true",
                            "No",
                            "no",
                            "Yes",
                            "yes",
                            "Off",
                            "off",
                            "On",
                            "on",
                            "Disable",
                            "disable",
                            "Enable",
                            "enable",
                            "Disabled",
                            "disabled",
                            "Enabled",
                            "enabled"
                          ]
                        },
                        "new": {
                          "type": "string",
                          "description": "Whether the operator during reconcile procedure should wait for new replicas to catch-up",
                          "enum": [
                            "",
                            "0",
                            "1",
                            "False",
                            "false",
                            "True",
                            "true",
                            "No",
                            "no",
                            "Yes",
                            "yes",
                            "Off",
                            "off",
                            "On",
                            "on",
                            "Disable",
                            "disable",
                            "Enable",
                            "enable",
                            "Disabled",
                            "disabled",
                            "Enabled",
                            "enabled"
                          ]
                        },
                        "delay": {
                          "type": "integer",
                          "description": "replication max absolute delay to consider replica is not delayed"
                        }
                      },
                      "additionalProperties": false
                    },
                    "probes": {
                      "type": "object",
                      "description": "What probes the operator should wait during host launch procedure",
                      "properties": {
                        "startup": {
                          "type": "string",
                          "description": "Whether the operator during host launch procedure should wait for startup probe to succeed.\nIn case probe is unspecified wait is assumed to be completed successfully.\nDefault option value is to do not wait.\n",
                          "enum": [
                            "",
                            "0",
                            "1",
                            "False",
                            "false",
                            "True",
                            "true",
                            "No",
                            "no",
                            "Yes",
                            "yes",
                            "Off",
                            "off",
                            "On",
                            "on",
                            "Disable",
                            "disable",
                            "Enable",
                            "enable",
                            "Disabled",
                            "disabled",
                            "Enabled",
                            "enabled"
                          ]
                        },
                        "readiness": {
                          "type": "string",
                          "description": "Whether the operator during host launch procedure should wait for readiness probe to succeed.\nIn case probe is unspecified wait is assumed to be completed successfully.\nDefault option value is to wait.\n",
                          "enum": [
                            "",
                            "0",
                            "1",
                            "False",
                            "false",
                            "True",
                            "true",
                            "No",
                            "no",
                            "Yes",
                            "yes",
                            "Off",
                            "off",
                            "On",
                            "on",
                            "Disable",
                            "disable",
                            "Enable",
                            "enable",
                            "Disabled",
                            "disabled",
                            "Enabled",
                            "enabled"
                          ]
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "drop": {
                  "type": "object",
                  "properties": {
                    "replicas": {
                      "type": "object",
                      "description": "Whether the operator during reconcile procedure should drop replicas when replica is deleted or recreated\n",
                      "properties": {
                        "onDelete": {
                          "type": "string",
                          "description": "Whether the operator during reconcile procedure should drop replicas when replica is deleted\n",
                          "enum": [
                            "",
                            "0",
                            "1",
                            "False",
                            "false",
                            "True",
                            "true",
                            "No",
                            "no",
                            "Yes",
                            "yes",
                            "Off",
                            "off",
                            "On",
                            "on",
                            "Disable",
                            "disable",
                            "Enable",
                            "enable",
                            "Disabled",
                            "disabled",
                            "Enabled",
                            "enabled"
                          ]
                        },
                        "onLostVolume": {
                          "type": "string",
                          "description": "Whether the operator during reconcile procedure should drop replicas when replica volume is lost\n",
                          "enum": [
                            "",
                            "0",
                            "1",
                            "False",
                            "false",
                            "True",
                            "true",
                            "No",
                            "no",
                            "Yes",
                            "yes",
                            "Off",
                            "off",
                            "On",
                            "on",
                            "Disable",
                            "disable",
                            "Enable",
                            "enable",
                            "Disabled",
                            "disabled",
                            "Enabled",
                            "enabled"
                          ]
                        },
                        "active": {
                          "type": "string",
                          "description": "Whether the operator during reconcile procedure should drop active replicas when replica is deleted or recreated\n",
                          "enum": [
                            "",
                            "0",
                            "1",
                            "False",
                            "false",
                            "True",
                            "true",
                            "No",
                            "no",
                            "Yes",
                            "yes",
                            "Off",
                            "off",
                            "On",
                            "on",
                            "Disable",
                            "disable",
                            "Enable",
                            "enable",
                            "Disabled",
                            "disabled",
                            "Enabled",
                            "enabled"
                          ]
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "annotation": {
          "type": "object",
          "description": "defines which metadata.annotations items will include or exclude during render StatefulSet, Pod, PVC resources",
          "properties": {
            "include": {
              "type": "array",
              "description": "When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`,\ninclude annotations with names from the following list\n",
              "items": {
                "type": "string"
              }
            },
            "exclude": {
              "type": "array",
              "description": "When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`,\nexclude annotations with names from the following list\n",
              "items": {
                "type": "string"
              }
            }
          },
          "additionalProperties": false
        },
        "label": {
          "type": "object",
          "description": "defines which metadata.labels will include or exclude during render StatefulSet, Pod, PVC resources",
          "properties": {
            "include": {
              "type": "array",
              "description": "When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`,\ninclude labels from the following list\n",
              "items": {
                "type": "string"
              }
            },
            "exclude": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`,\nexclude labels from the following list\n"
            },
            "appendScope": {
              "type": "string",
              "description": "Whether to append *Scope* labels to StatefulSet and Pod\n- \"LabelShardScopeIndex\"\n- \"LabelReplicaScopeIndex\"\n- \"LabelCHIScopeIndex\"\n- \"LabelCHIScopeCycleSize\"\n- \"LabelCHIScopeCycleIndex\"\n- \"LabelCHIScopeCycleOffset\"\n- \"LabelClusterScopeIndex\"\n- \"LabelClusterScopeCycleSize\"\n- \"LabelClusterScopeCycleIndex\"\n- \"LabelClusterScopeCycleOffset\"\n",
              "enum": [
                "",
                "0",
                "1",
                "False",
                "false",
                "True",
                "true",
                "No",
                "no",
                "Yes",
                "yes",
                "Off",
                "off",
                "On",
                "on",
                "Disable",
                "disable",
                "Enable",
                "enable",
                "Disabled",
                "disabled",
                "Enabled",
                "enabled"
              ]
            }
          },
          "additionalProperties": false
        },
        "metrics": {
          "type": "object",
          "description": "defines metrics exporter options",
          "properties": {
            "labels": {
              "type": "object",
              "description": "defines metric labels options",
              "properties": {
                "exclude": {
                  "type": "array",
                  "description": "When adding labels to a metric exclude labels with names from the following list\n",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "status": {
          "type": "object",
          "description": "defines status options",
          "properties": {
            "fields": {
              "type": "object",
              "description": "defines status fields options",
              "properties": {
                "action": {
                  "type": "string",
                  "description": "Whether the operator should fill status field 'action'",
                  "enum": [
                    "",
                    "0",
                    "1",
                    "False",
                    "false",
                    "True",
                    "true",
                    "No",
                    "no",
                    "Yes",
                    "yes",
                    "Off",
                    "off",
                    "On",
                    "on",
                    "Disable",
                    "disable",
                    "Enable",
                    "enable",
                    "Disabled",
                    "disabled",
                    "Enabled",
                    "enabled"
                  ]
                },
                "actions": {
                  "type": "string",
                  "description": "Whether the operator should fill status field 'actions'",
                  "enum": [
                    "",
                    "0",
                    "1",
                    "False",
                    "false",
                    "True",
                    "true",
                    "No",
                    "no",
                    "Yes",
                    "yes",
                    "Off",
                    "off",
                    "On",
                    "on",
                    "Disable",
                    "disable",
                    "Enable",
                    "enable",
                    "Disabled",
                    "disabled",
                    "Enabled",
                    "enabled"
                  ]
                },
                "error": {
                  "type": "string",
                  "description": "Whether the operator should fill status field 'error'",
                  "enum": [
                    "",
                    "0",
                    "1",
                    "False",
                    "false",
                    "True",
                    "true",
                    "No",
                    "no",
                    "Yes",
                    "yes",
                    "Off",
                    "off",
                    "On",
                    "on",
                    "Disable",
                    "disable",
                    "Enable",
                    "enable",
                    "Disabled",
                    "disabled",
                    "Enabled",
                    "enabled"
                  ]
                },
                "errors": {
                  "type": "string",
                  "description": "Whether the operator should fill status field 'errors'",
                  "enum": [
                    "",
                    "0",
                    "1",
                    "False",
                    "false",
                    "True",
                    "true",
                    "No",
                    "no",
                    "Yes",
                    "yes",
                    "Off",
                    "off",
                    "On",
                    "on",
                    "Disable",
                    "disable",
                    "Enable",
                    "enable",
                    "Disabled",
                    "disabled",
                    "Enabled",
                    "enabled"
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "statefulSet": {
          "type": "object",
          "description": "define StatefulSet-specific parameters",
          "properties": {
            "revisionHistoryLimit": {
              "type": "integer",
              "description": "revisionHistoryLimit is the maximum number of revisions that will be\nmaintained in the StatefulSet's revision history.                         \nLook details in `statefulset.spec.revisionHistoryLimit`\n"
            }
          },
          "additionalProperties": false
        },
        "pod": {
          "type": "object",
          "description": "define pod specific parameters",
          "properties": {
            "terminationGracePeriod": {
              "type": "integer",
              "description": "Optional duration in seconds the pod needs to terminate gracefully. \nLook details in `pod.spec.terminationGracePeriodSeconds`\n"
            }
          },
          "additionalProperties": false
        },
        "logger": {
          "type": "object",
          "description": "allow setup clickhouse-operator logger behavior",
          "properties": {
            "logtostderr": {
              "type": "string",
              "description": "boolean, allows logs to stderr"
            },
            "alsologtostderr": {
              "type": "string",
              "description": "boolean allows logs to stderr and files both"
            },
            "v": {
              "type": "string",
              "description": "verbosity level of clickhouse-operator log, default - 1 max - 9"
            },
            "stderrthreshold": {
              "type": "string"
            },
            "vmodule": {
              "type": "string",
              "description": "Comma-separated list of filename=N, where filename (can be a pattern) must have no .go ext, and N is a V level.\nEx.: file*=2 sets the 'V' to 2 in all files with names like file*.\n"
            },
            "log_backtrace_at": {
              "type": "string",
              "description": "It can be set to a file and line number with a logging line.\nEx.: file.go:123\nEach time when this line is being executed, a stack trace will be written to the Info log.\n"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  }
}
