{
    "description": "KubeStorageVersionMigrator provides information to configure an operator to manage kube-storage-version-migrator. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).",
    "properties": {
        "apiVersion": {
            "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
            "type": "string"
        },
        "kind": {
            "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
            "type": "string"
        },
        "metadata": {
            "type": "object"
        },
        "spec": {
            "properties": {
                "logLevel": {
                    "default": "Normal",
                    "description": "logLevel is an intent based logging for an overall component.  It does not give fine grained control, but it is a simple way to manage coarse grained logging choices that operators have to interpret for their operands. \n Valid values are: \"Normal\", \"Debug\", \"Trace\", \"TraceAll\". Defaults to \"Normal\".",
                    "enum": [
                        "",
                        "Normal",
                        "Debug",
                        "Trace",
                        "TraceAll"
                    ],
                    "type": "string"
                },
                "managementState": {
                    "description": "managementState indicates whether and how the operator should manage the component",
                    "pattern": "^(Managed|Unmanaged|Force|Removed)$",
                    "type": "string"
                },
                "observedConfig": {
                    "description": "observedConfig holds a sparse config that controller has observed from the cluster state.  It exists in spec because it is an input to the level for the operator",
                    "type": [
                        "object",
                        "null"
                    ],
                    "x-kubernetes-preserve-unknown-fields": true
                },
                "operatorLogLevel": {
                    "default": "Normal",
                    "description": "operatorLogLevel is an intent based logging for the operator itself.  It does not give fine grained control, but it is a simple way to manage coarse grained logging choices that operators have to interpret for themselves. \n Valid values are: \"Normal\", \"Debug\", \"Trace\", \"TraceAll\". Defaults to \"Normal\".",
                    "enum": [
                        "",
                        "Normal",
                        "Debug",
                        "Trace",
                        "TraceAll"
                    ],
                    "type": "string"
                },
                "unsupportedConfigOverrides": {
                    "description": "unsupportedConfigOverrides holds a sparse config that will override any previously set options.  It only needs to be the fields to override it will end up overlaying in the following order: 1. hardcoded defaults 2. observedConfig 3. unsupportedConfigOverrides",
                    "type": [
                        "object",
                        "null"
                    ],
                    "x-kubernetes-preserve-unknown-fields": true
                }
            },
            "type": "object",
            "additionalProperties": false
        },
        "status": {
            "properties": {
                "conditions": {
                    "description": "conditions is a list of conditions and their status",
                    "items": {
                        "description": "OperatorCondition is just the standard condition fields.",
                        "properties": {
                            "lastTransitionTime": {
                                "format": "date-time",
                                "type": "string"
                            },
                            "message": {
                                "type": "string"
                            },
                            "reason": {
                                "type": "string"
                            },
                            "status": {
                                "type": "string"
                            },
                            "type": {
                                "type": "string"
                            }
                        },
                        "type": "object",
                        "additionalProperties": false
                    },
                    "type": "array"
                },
                "generations": {
                    "description": "generations are used to determine when an item needs to be reconciled or has changed in a way that needs a reaction.",
                    "items": {
                        "description": "GenerationStatus keeps track of the generation for a given resource so that decisions about forced updates can be made.",
                        "properties": {
                            "group": {
                                "description": "group is the group of the thing you're tracking",
                                "type": "string"
                            },
                            "hash": {
                                "description": "hash is an optional field set for resources without generation that are content sensitive like secrets and configmaps",
                                "type": "string"
                            },
                            "lastGeneration": {
                                "description": "lastGeneration is the last generation of the workload controller involved",
                                "format": "int64",
                                "type": "integer",
                                "minimum": -9223372036854776000,
                                "maximum": 9223372036854776000
                            },
                            "name": {
                                "description": "name is the name of the thing you're tracking",
                                "type": "string"
                            },
                            "namespace": {
                                "description": "namespace is where the thing you're tracking is",
                                "type": "string"
                            },
                            "resource": {
                                "description": "resource is the resource type of the thing you're tracking",
                                "type": "string"
                            }
                        },
                        "type": "object",
                        "additionalProperties": false
                    },
                    "type": "array"
                },
                "observedGeneration": {
                    "description": "observedGeneration is the last generation change you've dealt with",
                    "format": "int64",
                    "type": "integer",
                    "minimum": -9223372036854776000,
                    "maximum": 9223372036854776000
                },
                "readyReplicas": {
                    "description": "readyReplicas indicates how many replicas are ready and at the desired state",
                    "format": "int32",
                    "type": "integer",
                    "minimum": -2147483648,
                    "maximum": 2147483647
                },
                "version": {
                    "description": "version is the level this availability applies to",
                    "type": "string"
                }
            },
            "type": "object",
            "additionalProperties": false
        }
    },
    "required": [
        "spec"
    ],
    "type": "object",
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-04/schema#"
}
