{
  "properties": {
    "metadata": {
      "properties": {
        "name": {
          "maxLength": 40,
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "spec": {
      "properties": {
        "backupProfiles": {
          "description": "Backup profile specifications for the cluster, which can be referenced from backup schedules and one-off backup jobs",
          "items": {
            "properties": {
              "dumpInstance": {
                "properties": {
                  "dumpOptions": {
                    "description": "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()",
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true
                  },
                  "storage": {
                    "properties": {
                      "azure": {
                        "properties": {
                          "config": {
                            "description": "Name of a Secret with Azure BLOB Storage configuration and credentials",
                            "type": "string"
                          },
                          "containerName": {
                            "description": "Name of the Azure  BLOB Storage container where the dump is stored",
                            "type": "string"
                          },
                          "prefix": {
                            "description": "Path in the container where the dump files are stored",
                            "type": "string"
                          }
                        },
                        "required": [
                          "containerName",
                          "config"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "ociObjectStorage": {
                        "properties": {
                          "bucketName": {
                            "description": "Name of the OCI bucket where backup is stored",
                            "type": "string"
                          },
                          "credentials": {
                            "description": "Name of a Secret with data for accessing the bucket",
                            "type": "string"
                          },
                          "prefix": {
                            "description": "Path in bucket where backup is stored",
                            "type": "string"
                          }
                        },
                        "required": [
                          "bucketName",
                          "credentials"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "persistentVolumeClaim": {
                        "description": "Specification of the PVC to be used. Used 'as is' in pod executing the backup.",
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true
                      },
                      "s3": {
                        "properties": {
                          "bucketName": {
                            "description": "Name of the S3 bucket where the dump is stored",
                            "type": "string"
                          },
                          "config": {
                            "description": "Name of a Secret with S3 configuration and credentials",
                            "type": "string"
                          },
                          "endpoint": {
                            "description": "Override endpoint URL",
                            "type": "string"
                          },
                          "prefix": {
                            "description": "Path in the bucket where the dump files are stored",
                            "type": "string"
                          },
                          "profile": {
                            "default": "",
                            "description": "Profile being used in configuration files",
                            "type": "string"
                          }
                        },
                        "required": [
                          "bucketName",
                          "config"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true,
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "name": {
                "description": "Embedded backup profile, referenced as backupProfileName elsewhere",
                "type": "string"
              },
              "podAnnotations": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "podLabels": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "snapshot": {
                "properties": {
                  "storage": {
                    "properties": {
                      "azure": {
                        "properties": {
                          "config": {
                            "description": "Name of a Secret with Azure BLOB Storage configuration and credentials",
                            "type": "string"
                          },
                          "containerName": {
                            "description": "Name of the Azure  BLOB Storage container where the dump is stored",
                            "type": "string"
                          },
                          "prefix": {
                            "description": "Path in the container where the dump files are stored",
                            "type": "string"
                          }
                        },
                        "required": [
                          "containerName",
                          "config"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "ociObjectStorage": {
                        "properties": {
                          "bucketName": {
                            "description": "Bucket name where backup is stored",
                            "type": "string"
                          },
                          "credentials": {
                            "description": "Name of a Secret with data for accessing the bucket",
                            "type": "string"
                          },
                          "prefix": {
                            "description": "Path in bucket where backup is stored",
                            "type": "string"
                          }
                        },
                        "required": [
                          "bucketName",
                          "credentials"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "persistentVolumeClaim": {
                        "description": "Specification of the PVC to be used. Used 'as is' in pod executing the backup.",
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true
                      },
                      "s3": {
                        "properties": {
                          "bucketName": {
                            "description": "Name of the S3 bucket where the dump is stored",
                            "type": "string"
                          },
                          "config": {
                            "description": "Name of a Secret with S3 configuration and credentials",
                            "type": "string"
                          },
                          "endpoint": {
                            "description": "Override endpoint URL",
                            "type": "string"
                          },
                          "prefix": {
                            "description": "Path in the bucket where the dump files are stored",
                            "type": "string"
                          },
                          "profile": {
                            "default": "",
                            "description": "Profile being used in configuration files",
                            "type": "string"
                          }
                        },
                        "required": [
                          "bucketName",
                          "config"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true,
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "required": [
              "name"
            ],
            "type": "object",
            "x-kubernetes-preserve-unknown-fields": true,
            "additionalProperties": false
          },
          "type": "array"
        },
        "backupSchedules": {
          "description": "Schedules for periodically executed backups",
          "items": {
            "properties": {
              "backupProfile": {
                "description": "backupProfile specification if backupProfileName is not specified",
                "properties": {
                  "dumpInstance": {
                    "properties": {
                      "dumpOptions": {
                        "description": "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()",
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true
                      },
                      "storage": {
                        "properties": {
                          "azure": {
                            "properties": {
                              "config": {
                                "description": "Name of a Secret with Azure BLOB Storage configuration and credentials",
                                "type": "string"
                              },
                              "containerName": {
                                "description": "Name of the Azure  BLOB Storage container where the dump is stored",
                                "type": "string"
                              },
                              "prefix": {
                                "description": "Path in the container where the dump files are stored",
                                "type": "string"
                              }
                            },
                            "required": [
                              "containerName",
                              "config"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "ociObjectStorage": {
                            "properties": {
                              "bucketName": {
                                "description": "Name of the OCI Bucket where backup is stored",
                                "type": "string"
                              },
                              "credentials": {
                                "description": "Name of a Secret with data for accessing the bucket",
                                "type": "string"
                              },
                              "prefix": {
                                "description": "Path in bucket where backup is stored",
                                "type": "string"
                              }
                            },
                            "required": [
                              "bucketName",
                              "credentials"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "persistentVolumeClaim": {
                            "description": "Specification of the PVC to be used. Used 'as is' in pod executing the backup.",
                            "type": "object",
                            "x-kubernetes-preserve-unknown-fields": true
                          },
                          "s3": {
                            "properties": {
                              "bucketName": {
                                "description": "Name of the S3 bucket where the dump is stored",
                                "type": "string"
                              },
                              "config": {
                                "description": "Name of a Secret with S3 configuration and credentials",
                                "type": "string"
                              },
                              "endpoint": {
                                "description": "Override endpoint URL",
                                "type": "string"
                              },
                              "prefix": {
                                "description": "Path in the bucket where the dump files are stored",
                                "type": "string"
                              },
                              "profile": {
                                "default": "",
                                "description": "Profile being used in configuration files",
                                "type": "string"
                              }
                            },
                            "required": [
                              "bucketName",
                              "config"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true,
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "podAnnotations": {
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true
                  },
                  "podLabels": {
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true
                  }
                },
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true,
                "additionalProperties": false
              },
              "backupProfileName": {
                "description": "Name of the backupProfile to be used",
                "type": "string"
              },
              "deleteBackupData": {
                "default": false,
                "description": "Whether to delete the backup data in case the MySQLBackup object created by the job is deleted",
                "type": "boolean"
              },
              "enabled": {
                "default": true,
                "description": "Whether the schedule is enabled or not",
                "type": "boolean"
              },
              "name": {
                "description": "Name of the backup schedule",
                "type": "string"
              },
              "schedule": {
                "description": "The schedule of the job, syntax as a cron expression",
                "type": "string"
              },
              "timeZone": {
                "description": "Timezone for the backup schedule, example: 'America/New_York'",
                "type": "string"
              }
            },
            "required": [
              "name",
              "schedule"
            ],
            "type": "object",
            "x-kubernetes-preserve-unknown-fields": true,
            "additionalProperties": false
          },
          "type": "array"
        },
        "baseServerId": {
          "default": 1000,
          "description": "Base value for MySQL server_id for instances in the cluster",
          "maximum": 4294967195,
          "minimum": 0,
          "type": "integer"
        },
        "datadirVolumeClaimTemplate": {
          "description": "Template for a PersistentVolumeClaim, to be used as datadir",
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "edition": {
          "description": "MySQL Server Edition (community or enterprise)",
          "pattern": "^(community|enterprise)$",
          "type": "string"
        },
        "imagePullPolicy": {
          "description": "Defaults to Always, but set to IfNotPresent in deploy-operator.yaml when deploying Operator",
          "type": "string"
        },
        "imagePullSecrets": {
          "items": {
            "properties": {
              "name": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "imageRepository": {
          "description": "Repository where images are pulled from; defaults to container-registry.oracle.com/mysql",
          "type": "string"
        },
        "initDB": {
          "properties": {
            "clone": {
              "properties": {
                "donorUrl": {
                  "description": "URL of the cluster to clone from",
                  "type": "string"
                },
                "rootUser": {
                  "default": "root",
                  "description": "User name used for cloning",
                  "type": "string"
                },
                "secretKeyRef": {
                  "properties": {
                    "name": {
                      "description": "Secret name with key 'rootPassword' storing the password for the user specified in rootUser",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "donorUrl",
                "secretKeyRef"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "dump": {
              "properties": {
                "name": {
                  "description": "Name of the dump. Not used by the operator, but a descriptive hint for the cluster administrator",
                  "type": "string"
                },
                "options": {
                  "description": "A dictionary of key-value pairs passed directly to MySQL Shell's loadDump()",
                  "type": "object",
                  "x-kubernetes-preserve-unknown-fields": true
                },
                "path": {
                  "description": "Path to the dump in the PVC. Use when specifying persistentVolumeClaim. Omit for ociObjectStorage, S3, or azure.",
                  "type": "string"
                },
                "storage": {
                  "properties": {
                    "azure": {
                      "properties": {
                        "config": {
                          "description": "Name of a Secret with Azure BLOB Storage configuration and credentials",
                          "type": "string"
                        },
                        "containerName": {
                          "description": "Name of the Azure  BLOB Storage container where the dump is stored",
                          "type": "string"
                        },
                        "prefix": {
                          "description": "Path in the container where the dump files are stored",
                          "type": "string"
                        }
                      },
                      "required": [
                        "containerName",
                        "prefix",
                        "config"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "ociObjectStorage": {
                      "properties": {
                        "bucketName": {
                          "description": "Name of the OCI bucket where the dump is stored",
                          "type": "string"
                        },
                        "credentials": {
                          "description": "Name of a Secret with data for accessing the bucket",
                          "type": "string"
                        },
                        "prefix": {
                          "description": "Path in the bucket where the dump files are stored",
                          "type": "string"
                        }
                      },
                      "required": [
                        "bucketName",
                        "prefix",
                        "credentials"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "persistentVolumeClaim": {
                      "description": "Specification of the PVC to be used. Used 'as is' in the cloning pod.",
                      "type": "object",
                      "x-kubernetes-preserve-unknown-fields": true
                    },
                    "s3": {
                      "properties": {
                        "bucketName": {
                          "description": "Name of the S3 bucket where the dump is stored",
                          "type": "string"
                        },
                        "config": {
                          "description": "Name of a Secret with S3 configuration and credentials",
                          "type": "string"
                        },
                        "endpoint": {
                          "description": "Override endpoint URL",
                          "type": "string"
                        },
                        "prefix": {
                          "description": "Path in the bucket where the dump files are stored",
                          "type": "string"
                        },
                        "profile": {
                          "default": "",
                          "description": "Profile being used in configuration files",
                          "type": "string"
                        }
                      },
                      "required": [
                        "bucketName",
                        "prefix",
                        "config"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "x-kubernetes-preserve-unknown-fields": true,
                  "additionalProperties": false
                }
              },
              "required": [
                "storage"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true,
          "additionalProperties": false
        },
        "instances": {
          "default": 1,
          "description": "Number of MySQL replica instances for the cluster",
          "maximum": 9,
          "minimum": 1,
          "type": "integer"
        },
        "keyring": {
          "description": "Keyring specification",
          "properties": {
            "encryptedFile": {
              "description": "Keyring 'Encrypted File' specification",
              "properties": {
                "fileName": {
                  "default": "mysql_keyring",
                  "description": "Path to the keyring file name inside the storage volume (will be prefixed by mount path)",
                  "type": "string"
                },
                "password": {
                  "description": "Name of a secret that contains password for the keyring in the key 'keyring_password'",
                  "type": "string"
                },
                "readOnly": {
                  "default": false,
                  "description": "Whether to open the keyring file in read-only mode",
                  "type": "boolean"
                },
                "storage": {
                  "description": "Specification of the volume to be mounted where the keyring file resides",
                  "type": "object",
                  "x-kubernetes-preserve-unknown-fields": true
                }
              },
              "required": [
                "storage",
                "password"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "file": {
              "description": "Keyring 'File' specification",
              "properties": {
                "fileName": {
                  "default": "mysql_keyring",
                  "description": "Path to the keyring file name inside the storage volume (will be prefixed by mount path)",
                  "type": "string"
                },
                "readOnly": {
                  "default": false,
                  "description": "Whether to open the keyring file in read-only mode",
                  "type": "boolean"
                },
                "storage": {
                  "description": "Specification of the volume to be mounted where the keyring file resides",
                  "type": "object",
                  "x-kubernetes-preserve-unknown-fields": true
                }
              },
              "required": [
                "storage"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "oci": {
              "description": "Keyring 'OCI' specification",
              "properties": {
                "caCertificate": {
                  "description": "Secret that contains ca.crt field with CA certificate bundle file that the keyring_oci plugin uses for Oracle Cloud Infrastructure certificate verification",
                  "type": "string"
                },
                "compartment": {
                  "description": "Compartment identifier in the form ocid1.compartment.oc1...",
                  "pattern": "^ocid1\\.compartment\\.",
                  "type": "string"
                },
                "endpoints": {
                  "properties": {
                    "encryption": {
                      "description": "Encryption endpoint URI like {identifier}-crypto.kms.{region}.oraclecloud.com",
                      "type": "string"
                    },
                    "management": {
                      "description": "Management endpoint URI like {identifier}-management.kms.{region}.oraclecloud.com",
                      "type": "string"
                    },
                    "secrets": {
                      "description": "Secrets endpoint URI like secrets.vaults.{region}.oci.oraclecloud.com",
                      "type": "string"
                    },
                    "vaults": {
                      "description": "Vaults endpoint URI like vaults.{region}.oci.oraclecloud.com",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "keyFingerprint": {
                  "description": "Private key fingerprint",
                  "pattern": "([0-9a-f]{2}:){15}[0-9a-f]{2}$",
                  "type": "string"
                },
                "keySecret": {
                  "description": "A secret that contains the private key under the field 'privatekey'",
                  "type": "string"
                },
                "masterKey": {
                  "description": "Master key identified in the form ocid1.key.oc1...",
                  "pattern": "^ocid1\\.key\\.",
                  "type": "string"
                },
                "tenancy": {
                  "description": "Tenancy identifier in the form ocid1.tenancy.oc1...",
                  "pattern": "^ocid1\\.tenancy\\.",
                  "type": "string"
                },
                "user": {
                  "description": "User identifier in the form of ocid1.user.oc1...",
                  "pattern": "^ocid1\\.user\\.",
                  "type": "string"
                },
                "virtualVault": {
                  "description": "Vault identifier in the form ocid1.vault.oc1...",
                  "pattern": "^ocid1\\.vault\\.",
                  "type": "string"
                }
              },
              "required": [
                "user",
                "keySecret",
                "keyFingerprint",
                "tenancy"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "logs": {
          "properties": {
            "collector": {
              "oneOf": [
                {
                  "required": [
                    "image",
                    "fluentd"
                  ]
                }
              ],
              "properties": {
                "containerName": {
                  "default": "logcollector",
                  "description": "Name of the collector container sidecar",
                  "type": "string"
                },
                "env": {
                  "items": {
                    "description": "Environment variables to be passed to the image. Definition will be directly copied like podSpec fields are",
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true
                  },
                  "type": "array"
                },
                "fluentd": {
                  "description": "Properties of the fluentd log collector",
                  "oneOf": [
                    {
                      "required": [
                        "sinks"
                      ]
                    }
                  ],
                  "properties": {
                    "additionalFilterConfiguration": {
                      "description": "Raw configuration of additional Fluentd filters to be added to the configuration file",
                      "type": "string"
                    },
                    "errorLog": {
                      "properties": {
                        "options": {
                          "description": "fluentd specific options for the error log",
                          "type": "object",
                          "x-kubernetes-preserve-unknown-fields": true
                        },
                        "tag": {
                          "default": "",
                          "description": "Tag for the error log records",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "generalLog": {
                      "properties": {
                        "options": {
                          "description": "fluentd specific options for the general log",
                          "type": "object",
                          "x-kubernetes-preserve-unknown-fields": true
                        },
                        "tag": {
                          "default": "",
                          "description": "Tag for the general log records",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "recordAugmentation": {
                      "properties": {
                        "annotations": {
                          "items": {
                            "properties": {
                              "annotationName": {
                                "description": "Name of the pod label that holds the value to be stored under fieldName in the log record",
                                "type": "string"
                              },
                              "fieldName": {
                                "description": "Name of the field added to the log record with value from annotationName",
                                "type": "string"
                              }
                            },
                            "required": [
                              "fieldName",
                              "annotationName"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "enabled": {
                          "default": false,
                          "description": "Whether to enable record augmentation with additional data",
                          "type": "boolean"
                        },
                        "labels": {
                          "items": {
                            "properties": {
                              "fieldName": {
                                "description": "Name of the field added to the log record with value from labelName",
                                "type": "string"
                              },
                              "labelName": {
                                "description": "Name of the pod label that holds the value to be stored under fieldName in the log record",
                                "type": "string"
                              }
                            },
                            "required": [
                              "fieldName",
                              "labelName"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "podFields": {
                          "items": {
                            "properties": {
                              "fieldName": {
                                "description": "Name of the field added to the log record with value taken from a field with path stored in fieldPath",
                                "type": "string"
                              },
                              "fieldPath": {
                                "description": "Value for the field fieldName. The path should be of the same syntax as the one used for mounting environment variables from field reference - valueFrom.fieldRef.fieldPath . The field will be mounted in the pod as a environment variable, prefixed with a prefix and used then added to the log record. Examples for fieldRef are : spec.nodeName, metadata.namespace, status.podIP, etc.",
                                "type": "string"
                              }
                            },
                            "required": [
                              "fieldName",
                              "fieldPath"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "resourceFields": {
                          "items": {
                            "properties": {
                              "containerName": {
                                "type": "string"
                              },
                              "fieldName": {
                                "description": "Name of the field added to the log record with value taken from a field with path stored in fieldPath",
                                "type": "string"
                              },
                              "resource": {
                                "description": "See https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-container-fields-as-values-for-environment-variables",
                                "type": "string"
                              }
                            },
                            "required": [
                              "fieldName",
                              "containerName",
                              "resource"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "staticFields": {
                          "items": {
                            "properties": {
                              "fieldName": {
                                "description": "Name of the field added to the log record with value from fieldValue",
                                "type": "string"
                              },
                              "fieldValue": {
                                "description": "Value for the static field with name taken from fieldName",
                                "type": "string"
                              }
                            },
                            "required": [
                              "fieldName",
                              "fieldValue"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "sinks": {
                      "items": {
                        "properties": {
                          "name": {
                            "description": "Name of the sink. Used only for documentation purposes",
                            "type": "string"
                          },
                          "rawConfig": {
                            "description": "Raw configuration of the sink",
                            "type": "string"
                          }
                        },
                        "required": [
                          "name",
                          "rawConfig"
                        ],
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true,
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "slowQueryLog": {
                      "properties": {
                        "options": {
                          "description": "fluentd specific options for the slow log",
                          "type": "object",
                          "x-kubernetes-preserve-unknown-fields": true
                        },
                        "tag": {
                          "default": "",
                          "description": "Tag for the slow log records",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "image": {
                  "description": "Name of an image, including registry and repository, to be used for the log collector sidecar. If provided it needs to be an image for the configured collector type.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "error": {
              "properties": {
                "collect": {
                  "default": false,
                  "description": "Whether error logging data should be collected. Implies that the logging should be enabled. If enabled the error log will be switched to JSON format output",
                  "type": "boolean"
                },
                "verbosity": {
                  "default": 3,
                  "description": "Log error verbosity. For details, see the MySQL Server --log-error-verbosity documentation.",
                  "maximum": 3,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "general": {
              "properties": {
                "collect": {
                  "default": false,
                  "description": "Whether general logging data should be collected. Implies that the logging should be enabled.",
                  "type": "boolean"
                },
                "enabled": {
                  "default": false,
                  "description": "Whether general logging should be enabled",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "slowQuery": {
              "properties": {
                "collect": {
                  "default": false,
                  "description": "Whether slow query logging data should be collected. Implies that the logging should be enabled.",
                  "type": "boolean"
                },
                "enabled": {
                  "default": false,
                  "description": "Whether slow query logging should be enabled",
                  "type": "boolean"
                },
                "longQueryTime": {
                  "default": 10,
                  "description": "Long query time threshold",
                  "minimum": 0,
                  "type": "number"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "metrics": {
          "description": "Configuration of a Prometheus-style metrics provider",
          "properties": {
            "enable": {
              "default": false,
              "description": "Toggle to enable or disable the metrics sidecar",
              "type": "boolean"
            },
            "image": {
              "description": "Name of an image to be used for the metrics sidecar, if provided metrics will be enabled",
              "type": "string"
            },
            "monitor": {
              "default": false,
              "description": "Create a ServiceMonitor for Prometheus Operator",
              "type": "boolean"
            },
            "monitorSpec": {
              "default": {},
              "description": "Custom configuration for the ServiceMonitor object",
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            },
            "options": {
              "description": "Options passed to the metrics provider as command line arguments",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "tlsSecret": {
              "description": "Name of a Secret with TLS certificate, key and CA, which will be mounted at /tls into the container an can be used from webConfig",
              "type": "string"
            },
            "webConfig": {
              "description": "Name of a ConfigMap with a web.config file, if this option is provided a command line option --web.config.file is added",
              "type": "string"
            }
          },
          "required": [
            "enable",
            "image"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "mycnf": {
          "description": "Custom configuration additions for my.cnf",
          "type": "string"
        },
        "podAnnotations": {
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "podLabels": {
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "podSpec": {
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "readReplicas": {
          "items": {
            "properties": {
              "baseServerId": {
                "default": 0,
                "description": "Base value for MySQL server_id for instances of the readReplica, if 0 it will be assigned automatically",
                "maximum": 4294967195,
                "minimum": 0,
                "type": "integer"
              },
              "datadirVolumeClaimTemplate": {
                "description": "Template for a PersistentVolumeClaim, to be used as datadir",
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "instances": {
                "default": 1,
                "description": "Number of MySQL instances for the set of read replica",
                "maximum": 999,
                "minimum": 1,
                "type": "integer"
              },
              "mycnf": {
                "description": "Custom configuration additions for my.cnf",
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "podAnnotations": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "podLabels": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "podSpec": {
                "type": "object",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "version": {
                "description": "MySQL Server version",
                "pattern": "^\\d+\\.\\d+\\.\\d+(-.+)?",
                "type": "string"
              }
            },
            "required": [
              "name",
              "baseServerId"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "router": {
          "description": "MySQL Router specification",
          "properties": {
            "bootstrapOptions": {
              "description": "Command line options passed to MySQL Router while bootstrapping",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "instances": {
              "default": 1,
              "description": "Number of MySQL Router instances to deploy",
              "minimum": 0,
              "type": "integer"
            },
            "options": {
              "description": "Command line options passed to MySQL Router while running",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "podAnnotations": {
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            },
            "podLabels": {
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            },
            "podSpec": {
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            },
            "routingOptions": {
              "description": "Set routing options for the cluster",
              "properties": {
                "invalidated_cluster_policy": {
                  "enum": [
                    "drop_all",
                    "accept_ro"
                  ],
                  "type": "string"
                },
                "read_only_targets": {
                  "enum": [
                    "all",
                    "read_replicas",
                    "secondaries"
                  ],
                  "type": "string"
                },
                "stats_updates_frequency": {
                  "default": 0,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "tlsSecretName": {
              "description": "Name of a TLS type Secret containing MySQL Router certificate and private key used for SSL",
              "type": "string"
            },
            "version": {
              "description": "Override MySQL Router version",
              "pattern": "^\\d+\\.\\d+\\.\\d+(-.+)?",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "secretName": {
          "description": "Name of a generic type Secret containing root/default account password",
          "type": "string"
        },
        "service": {
          "description": "Configuration of the Service used by applications connecting to the InnoDB Cluster",
          "properties": {
            "annotations": {
              "description": "Custom annotations for the Service",
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            },
            "defaultPort": {
              "default": "mysql-rw",
              "description": "Target for the Service's default (3306) port. If mysql-rw traffic will go to the primary and allow read and write operations, with mysql-ro traffic goes to the replica and allows only read operations, with mysql-rw-split the router's read-write-splitting will be targeted",
              "enum": [
                "mysql-rw",
                "mysql-ro",
                "mysql-rw-split"
              ],
              "type": "string"
            },
            "labels": {
              "description": "Custom labels for the Service",
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            },
            "type": {
              "default": "ClusterIP",
              "enum": [
                "ClusterIP",
                "NodePort",
                "LoadBalancer"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "serviceAccountName": {
          "type": "string"
        },
        "tlsCASecretName": {
          "description": "Name of a generic type Secret containing CA (ca.pem) and optional CRL (crl.pem) for SSL",
          "type": "string"
        },
        "tlsSecretName": {
          "description": "Name of a TLS type Secret containing Server certificate and private key for SSL",
          "type": "string"
        },
        "tlsUseSelfSigned": {
          "default": false,
          "description": "Enables use of self-signed TLS certificates, reducing or disabling TLS based security verifications",
          "type": "boolean"
        },
        "version": {
          "description": "MySQL Server version",
          "pattern": "^\\d+\\.\\d+\\.\\d+(-.+)?",
          "type": "string"
        }
      },
      "required": [
        "secretName"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "type": "object",
      "x-kubernetes-preserve-unknown-fields": true
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
