{
  "description": "InstanceManagerUpgrade is the Longhorn CR that tracks the live upgrade of a\nv2 instance manager.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "InstanceManagerUpgradeSpec defines the desired state of the InstanceManagerUpgrade.",
      "properties": {
        "nodeID": {
          "description": "NodeID is the node where the source instance manager is running.",
          "type": "string"
        },
        "targetImage": {
          "description": "TargetImage is the desired instance manager image after upgrade.",
          "type": "string"
        }
      },
      "required": [
        "nodeID",
        "targetImage"
      ],
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "InstanceManagerUpgradeStatus defines the observed state of the InstanceManagerUpgrade.",
      "properties": {
        "abortReason": {
          "description": "AbortReason explains why AbortRequested was set.",
          "type": [
            "string",
            "null"
          ]
        },
        "abortRequested": {
          "description": "AbortRequested is set by the controller when an abort condition is detected.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "conditions": {
          "description": "Conditions records the current conditions of the upgrade.",
          "items": {
            "additionalProperties": false,
            "properties": {
              "lastProbeTime": {
                "description": "Last time we probed the condition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "message": {
                "description": "Human-readable message indicating details about last transition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason": {
                "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "description": "Status is the status of the condition.\nCan be True, False, Unknown.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "type": {
                "description": "Type is the type of the condition.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "nullable": true,
          "type": [
            "array",
            "null"
          ]
        },
        "engines": {
          "additionalProperties": {
            "additionalProperties": false,
            "description": "EngineRelocation records the relocation metadata of an engine during an\ninstance manager upgrade.",
            "properties": {
              "originalNodeID": {
                "description": "OriginalNodeID is the node where the engine was originally running.",
                "type": "string"
              },
              "temporaryNodeID": {
                "description": "TemporaryNodeID is the node the engine is temporarily relocated to while\nthe source instance manager is being upgraded.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "originalNodeID"
            ],
            "type": "object"
          },
          "description": "Engines records the relocation plan for each engine managed by the source\ninstance manager. The map key is the volume name.",
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "errorMsg": {
          "description": "ErrorMsg records the terminal error encountered during the upgrade, if any.",
          "type": [
            "string",
            "null"
          ]
        },
        "ownerID": {
          "description": "OwnerID is the owner node ID of this InstanceManagerUpgrade.",
          "type": [
            "string",
            "null"
          ]
        },
        "plannedDetachedReplicas": {
          "additionalProperties": {
            "items": {
              "additionalProperties": false,
              "description": "PlannedDetachedReplica records a backend that should be temporarily detached\nfrom an engine during an instance manager upgrade.",
              "properties": {
                "address": {
                  "description": "Address is the raw replica backend address recorded when the detach plan\nis created.",
                  "type": "string"
                },
                "name": {
                  "description": "Name is the replica name.",
                  "type": "string"
                }
              },
              "required": [
                "address",
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "description": "PlannedDetachedReplicas records the replicas that should be temporarily\ndetached from engines during the instance manager upgrade. The map key is\nthe volume name.",
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "startedAt": {
          "description": "StartedAt records when the timed or active portion of the upgrade began.",
          "type": [
            "string",
            "null"
          ]
        },
        "state": {
          "description": "State indicates the overall progress of the instance manager upgrade.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}