{
  "description": "Engine is where Longhorn stores engine object.",
  "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": "EngineSpec defines the desired state of the Longhorn engine",
      "properties": {
        "active": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "backupVolume": {
          "type": [
            "string",
            "null"
          ]
        },
        "dataEngine": {
          "enum": [
            "v1",
            "v2"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "desireState": {
          "type": [
            "string",
            "null"
          ]
        },
        "disableFrontend": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "frontend": {
          "enum": [
            "blockdev",
            "iscsi",
            "nvmf",
            "ublk",
            ""
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "image": {
          "type": [
            "string",
            "null"
          ]
        },
        "logRequested": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "nodeID": {
          "type": [
            "string",
            "null"
          ]
        },
        "rebuildConcurrentSyncLimit": {
          "description": "RebuildConcurrentSyncLimit controls the maximum number of file synchronization operations that can run\nconcurrently during a single replica rebuild.\nIt is determined by the global setting or the volume spec field with the same name.",
          "maximum": 5,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "replicaAddressMap": {
          "additionalProperties": {
            "type": "string"
          },
          "type": [
            "object",
            "null"
          ]
        },
        "requestedBackupRestore": {
          "type": [
            "string",
            "null"
          ]
        },
        "requestedDataSource": {
          "type": [
            "string",
            "null"
          ]
        },
        "revisionCounterDisabled": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "salvageRequested": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "snapshotMaxCount": {
          "type": [
            "integer",
            "null"
          ]
        },
        "snapshotMaxSize": {
          "format": "int64",
          "type": [
            "string",
            "null"
          ]
        },
        "ublkNumberOfQueue": {
          "description": "ublkNumberOfQueue controls the number of queues for ublk frontend.",
          "type": [
            "integer",
            "null"
          ]
        },
        "ublkQueueDepth": {
          "description": "ublkQueueDepth controls the depth of each queue for ublk frontend.",
          "type": [
            "integer",
            "null"
          ]
        },
        "unmapMarkSnapChainRemovedEnabled": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "upgradedReplicaAddressMap": {
          "additionalProperties": {
            "type": "string"
          },
          "type": [
            "object",
            "null"
          ]
        },
        "volumeName": {
          "type": [
            "string",
            "null"
          ]
        },
        "volumeSize": {
          "format": "int64",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "EngineStatus defines the observed state of the Longhorn engine",
      "properties": {
        "backupStatus": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "backupURL": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "progress": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "replicaAddress": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "snapshotName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "state": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "cloneStatus": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "fromReplicaAddress": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "isCloning": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "progress": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "snapshotName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "state": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "conditions": {
          "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"
          ]
        },
        "currentImage": {
          "type": [
            "string",
            "null"
          ]
        },
        "currentReplicaAddressMap": {
          "additionalProperties": {
            "type": "string"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "currentSize": {
          "format": "int64",
          "type": [
            "string",
            "null"
          ]
        },
        "currentState": {
          "type": [
            "string",
            "null"
          ]
        },
        "endpoint": {
          "type": [
            "string",
            "null"
          ]
        },
        "instanceManagerName": {
          "type": [
            "string",
            "null"
          ]
        },
        "ip": {
          "type": [
            "string",
            "null"
          ]
        },
        "isExpanding": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "lastExpansionError": {
          "type": [
            "string",
            "null"
          ]
        },
        "lastExpansionFailedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "lastRestoredBackup": {
          "type": [
            "string",
            "null"
          ]
        },
        "logFetched": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "ownerID": {
          "type": [
            "string",
            "null"
          ]
        },
        "port": {
          "type": [
            "integer",
            "null"
          ]
        },
        "purgeStatus": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "isPurging": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "progress": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "state": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "rebuildConcurrentSyncLimit": {
          "description": "RebuildConcurrentSyncLimit controls the maximum number of file synchronization operations that can run\nconcurrently during a single replica rebuild.\nIt is determined by the global setting or the volume spec field with the same name.",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "rebuildStatus": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "appliedRebuildingMBps": {
                "format": "int64",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "fromReplicaAddress": {
                "description": "Deprecated. We are now using FromReplicaAddressList to list all source replicas.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "fromReplicaAddressList": {
                "items": {
                  "type": "string"
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "isRebuilding": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "progress": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "state": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "replicaModeMap": {
          "additionalProperties": {
            "type": "string"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "replicaTransitionTimeMap": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ReplicaTransitionTimeMap records the time a replica in ReplicaModeMap transitions from one mode to another (or\nfrom not being in the ReplicaModeMap to being in it). This information is sometimes required by other controllers\n(e.g. the volume controller uses it to determine the correct value for replica.Spec.lastHealthyAt).",
          "type": [
            "object",
            "null"
          ]
        },
        "restoreStatus": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "backupURL": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "currentRestoringBackup": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "filename": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "isRestoring": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "lastRestored": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "progress": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "state": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "salvageExecuted": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "snapshotMaxCount": {
          "type": [
            "integer",
            "null"
          ]
        },
        "snapshotMaxSize": {
          "format": "int64",
          "type": [
            "string",
            "null"
          ]
        },
        "snapshots": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "children": {
                "additionalProperties": {
                  "type": "boolean"
                },
                "nullable": true,
                "type": [
                  "object",
                  "null"
                ]
              },
              "created": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "labels": {
                "additionalProperties": {
                  "type": "string"
                },
                "nullable": true,
                "type": [
                  "object",
                  "null"
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "parent": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "removed": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "size": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "usercreated": {
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "snapshotsError": {
          "type": [
            "string",
            "null"
          ]
        },
        "started": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "starting": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "storageIP": {
          "type": [
            "string",
            "null"
          ]
        },
        "ublkID": {
          "format": "int32",
          "type": [
            "integer",
            "null"
          ]
        },
        "unmapMarkSnapChainRemovedEnabled": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "uuid": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}