{
  "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"
    },
    "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"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "EngineSpec defines the desired state of the Longhorn engine",
      "properties": {
        "active": {
          "type": "boolean"
        },
        "backupVolume": {
          "type": "string"
        },
        "dataEngine": {
          "enum": [
            "v1",
            "v2"
          ],
          "type": "string"
        },
        "desireState": {
          "type": "string"
        },
        "disableFrontend": {
          "type": "boolean"
        },
        "frontend": {
          "enum": [
            "blockdev",
            "iscsi",
            "nvmf",
            "ublk",
            ""
          ],
          "type": "string"
        },
        "image": {
          "type": "string"
        },
        "logRequested": {
          "type": "boolean"
        },
        "nodeID": {
          "type": "string"
        },
        "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"
        },
        "replicaAddressMap": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "requestedBackupRestore": {
          "type": "string"
        },
        "requestedDataSource": {
          "type": "string"
        },
        "revisionCounterDisabled": {
          "type": "boolean"
        },
        "salvageRequested": {
          "type": "boolean"
        },
        "snapshotMaxCount": {
          "type": "integer"
        },
        "snapshotMaxSize": {
          "format": "int64",
          "type": "string"
        },
        "ublkNumberOfQueue": {
          "description": "ublkNumberOfQueue controls the number of queues for ublk frontend.",
          "type": "integer"
        },
        "ublkQueueDepth": {
          "description": "ublkQueueDepth controls the depth of each queue for ublk frontend.",
          "type": "integer"
        },
        "unmapMarkSnapChainRemovedEnabled": {
          "type": "boolean"
        },
        "upgradedReplicaAddressMap": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "volumeName": {
          "type": "string"
        },
        "volumeSize": {
          "format": "int64",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "EngineStatus defines the observed state of the Longhorn engine",
      "properties": {
        "backupStatus": {
          "additionalProperties": {
            "properties": {
              "backupURL": {
                "type": "string"
              },
              "error": {
                "type": "string"
              },
              "progress": {
                "type": "integer"
              },
              "replicaAddress": {
                "type": "string"
              },
              "snapshotName": {
                "type": "string"
              },
              "state": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "nullable": true,
          "type": "object"
        },
        "cloneStatus": {
          "additionalProperties": {
            "properties": {
              "error": {
                "type": "string"
              },
              "fromReplicaAddress": {
                "type": "string"
              },
              "isCloning": {
                "type": "boolean"
              },
              "progress": {
                "type": "integer"
              },
              "snapshotName": {
                "type": "string"
              },
              "state": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "nullable": true,
          "type": "object"
        },
        "conditions": {
          "items": {
            "properties": {
              "lastProbeTime": {
                "description": "Last time we probed the condition.",
                "type": "string"
              },
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "type": "string"
              },
              "message": {
                "description": "Human-readable message indicating details about last transition.",
                "type": "string"
              },
              "reason": {
                "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status is the status of the condition.\nCan be True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the condition.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "nullable": true,
          "type": "array"
        },
        "currentImage": {
          "type": "string"
        },
        "currentReplicaAddressMap": {
          "additionalProperties": {
            "type": "string"
          },
          "nullable": true,
          "type": "object"
        },
        "currentSize": {
          "format": "int64",
          "type": "string"
        },
        "currentState": {
          "type": "string"
        },
        "endpoint": {
          "type": "string"
        },
        "instanceManagerName": {
          "type": "string"
        },
        "ip": {
          "type": "string"
        },
        "isExpanding": {
          "type": "boolean"
        },
        "lastExpansionError": {
          "type": "string"
        },
        "lastExpansionFailedAt": {
          "type": "string"
        },
        "lastRestoredBackup": {
          "type": "string"
        },
        "logFetched": {
          "type": "boolean"
        },
        "ownerID": {
          "type": "string"
        },
        "port": {
          "type": "integer"
        },
        "purgeStatus": {
          "additionalProperties": {
            "properties": {
              "error": {
                "type": "string"
              },
              "isPurging": {
                "type": "boolean"
              },
              "progress": {
                "type": "integer"
              },
              "state": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "nullable": true,
          "type": "object"
        },
        "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"
        },
        "rebuildStatus": {
          "additionalProperties": {
            "properties": {
              "appliedRebuildingMBps": {
                "format": "int64",
                "type": "integer"
              },
              "error": {
                "type": "string"
              },
              "fromReplicaAddress": {
                "description": "Deprecated. We are now using FromReplicaAddressList to list all source replicas.",
                "type": "string"
              },
              "fromReplicaAddressList": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "isRebuilding": {
                "type": "boolean"
              },
              "progress": {
                "type": "integer"
              },
              "state": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "nullable": true,
          "type": "object"
        },
        "replicaModeMap": {
          "additionalProperties": {
            "type": "string"
          },
          "nullable": true,
          "type": "object"
        },
        "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"
        },
        "restoreStatus": {
          "additionalProperties": {
            "properties": {
              "backupURL": {
                "type": "string"
              },
              "currentRestoringBackup": {
                "type": "string"
              },
              "error": {
                "type": "string"
              },
              "filename": {
                "type": "string"
              },
              "isRestoring": {
                "type": "boolean"
              },
              "lastRestored": {
                "type": "string"
              },
              "progress": {
                "type": "integer"
              },
              "state": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "nullable": true,
          "type": "object"
        },
        "salvageExecuted": {
          "type": "boolean"
        },
        "snapshotMaxCount": {
          "type": "integer"
        },
        "snapshotMaxSize": {
          "format": "int64",
          "type": "string"
        },
        "snapshots": {
          "additionalProperties": {
            "properties": {
              "children": {
                "additionalProperties": {
                  "type": "boolean"
                },
                "nullable": true,
                "type": "object"
              },
              "created": {
                "type": "string"
              },
              "labels": {
                "additionalProperties": {
                  "type": "string"
                },
                "nullable": true,
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "parent": {
                "type": "string"
              },
              "removed": {
                "type": "boolean"
              },
              "size": {
                "type": "string"
              },
              "usercreated": {
                "type": "boolean"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "nullable": true,
          "type": "object"
        },
        "snapshotsError": {
          "type": "string"
        },
        "started": {
          "type": "boolean"
        },
        "starting": {
          "type": "boolean"
        },
        "storageIP": {
          "type": "string"
        },
        "ublkID": {
          "format": "int32",
          "type": "integer"
        },
        "unmapMarkSnapChainRemovedEnabled": {
          "type": "boolean"
        },
        "uuid": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
