{
  "description": "InstanceManagerUpgradeControl is the singleton Longhorn CR that orchestrates\nrolling live upgrades of v2 instance managers across all cluster nodes.",
  "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": "InstanceManagerUpgradeControlSpec defines the desired state of the\nInstanceManagerUpgradeControl singleton.",
      "properties": {
        "startAt": {
          "description": "StartAt is the RFC3339 timestamp at which the upgrade cycle should begin.",
          "type": [
            "string",
            "null"
          ]
        },
        "targetImage": {
          "description": "TargetImage is the desired instance manager image for all nodes.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "InstanceManagerUpgradeControlStatus defines the observed state of the\nInstanceManagerUpgradeControl.",
      "properties": {
        "currentNode": {
          "description": "CurrentNode is the name of the node that is actively being upgraded.",
          "type": [
            "string",
            "null"
          ]
        },
        "nodes": {
          "additionalProperties": {
            "additionalProperties": false,
            "description": "NodeUpgradeInfo records the upgrade status for a single node.",
            "properties": {
              "completedAt": {
                "description": "CompletedAt is the RFC3339 timestamp when the upgrade finished on this node.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "errorMsg": {
                "description": "ErrorMsg records the last error encountered while upgrading this node.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "imuName": {
                "description": "IMUName is the name of the InstanceManagerUpgrade CR created for this node.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "retryCount": {
                "description": "RetryCount tracks how many times the upgrade has been attempted for this node.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "startedAt": {
                "description": "StartedAt is the RFC3339 timestamp when the upgrade began on this node.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "state": {
                "description": "State is the current upgrade state for this node.",
                "type": "string"
              }
            },
            "required": [
              "state"
            ],
            "type": "object"
          },
          "description": "Nodes holds the upgrade status for nodes participating in the current or\nmost recent upgrade cycle.",
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "ownerID": {
          "description": "OwnerID is the ID of the Longhorn manager pod that currently owns this CR.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}