453 lines
14 KiB
JSON
453 lines
14 KiB
JSON
{
|
|
"description": "Volume is where Longhorn stores volume 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": "VolumeSpec defines the desired state of the Longhorn volume",
|
|
"properties": {
|
|
"Standby": {
|
|
"type": "boolean"
|
|
},
|
|
"accessMode": {
|
|
"enum": [
|
|
"rwo",
|
|
"rwop",
|
|
"rwx"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"backingImage": {
|
|
"type": "string",
|
|
"x-kubernetes-validations": [
|
|
{
|
|
"message": "BackingImage is immutable",
|
|
"rule": "self == oldSelf"
|
|
}
|
|
]
|
|
},
|
|
"backupBlockSize": {
|
|
"description": "BackupBlockSize indicate the block size to create backups. The block size is immutable.",
|
|
"enum": [
|
|
"2097152",
|
|
"16777216"
|
|
],
|
|
"format": "int64",
|
|
"type": "string"
|
|
},
|
|
"backupCompressionMethod": {
|
|
"enum": [
|
|
"none",
|
|
"lz4",
|
|
"gzip"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"backupTargetName": {
|
|
"description": "The backup target name that the volume will be backed up to or is synced.",
|
|
"type": "string"
|
|
},
|
|
"cloneMode": {
|
|
"enum": [
|
|
"",
|
|
"full-copy",
|
|
"linked-clone"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"dataEngine": {
|
|
"enum": [
|
|
"v1",
|
|
"v2"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"dataLocality": {
|
|
"enum": [
|
|
"disabled",
|
|
"best-effort",
|
|
"strict-local"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"dataSource": {
|
|
"type": "string"
|
|
},
|
|
"disableFrontend": {
|
|
"type": "boolean"
|
|
},
|
|
"diskSelector": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"encrypted": {
|
|
"type": "boolean",
|
|
"x-kubernetes-validations": [
|
|
{
|
|
"message": "Encrypted is immutable",
|
|
"rule": "self == oldSelf"
|
|
}
|
|
]
|
|
},
|
|
"engineNodeID": {
|
|
"description": "engineNodeID defines the node where the backend engine (target) runs.\nIf empty, falls back to NodeID.",
|
|
"type": "string"
|
|
},
|
|
"freezeFilesystemForSnapshot": {
|
|
"description": "Setting that freezes the filesystem on the root partition before a snapshot is created.",
|
|
"enum": [
|
|
"ignored",
|
|
"enabled",
|
|
"disabled"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"fromBackup": {
|
|
"type": "string"
|
|
},
|
|
"frontend": {
|
|
"enum": [
|
|
"blockdev",
|
|
"iscsi",
|
|
"nvmf",
|
|
"ublk",
|
|
""
|
|
],
|
|
"type": "string"
|
|
},
|
|
"image": {
|
|
"type": "string"
|
|
},
|
|
"lastAttachedBy": {
|
|
"type": "string"
|
|
},
|
|
"migratable": {
|
|
"type": "boolean"
|
|
},
|
|
"migrationNodeID": {
|
|
"type": "string"
|
|
},
|
|
"nodeID": {
|
|
"description": "nodeID defines the node where the volume is attached (where the frontend initiator runs).",
|
|
"type": "string"
|
|
},
|
|
"nodeSelector": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"numberOfReplicas": {
|
|
"type": "integer"
|
|
},
|
|
"offlineRebuilding": {
|
|
"description": "Specifies whether Longhorn should rebuild replicas while the detached volume is degraded.\n- ignored: Use the global setting for offline replica rebuilding.\n- enabled: Enable offline rebuilding for this volume, regardless of the global setting.\n- disabled: Disable offline rebuilding for this volume, regardless of the global setting",
|
|
"enum": [
|
|
"ignored",
|
|
"disabled",
|
|
"enabled"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"rebuildConcurrentSyncLimit": {
|
|
"description": "RebuildConcurrentSyncLimit controls the maximum number of file synchronization operations that can run\nconcurrently during a single replica rebuild.\nWhen set to 0, it means following the global setting.",
|
|
"maximum": 5,
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
"replicaAutoBalance": {
|
|
"enum": [
|
|
"ignored",
|
|
"disabled",
|
|
"least-effort",
|
|
"best-effort"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"replicaDiskSoftAntiAffinity": {
|
|
"description": "Replica disk soft anti affinity of the volume. Set enabled to allow replicas to be scheduled in the same disk.",
|
|
"enum": [
|
|
"ignored",
|
|
"enabled",
|
|
"disabled"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"replicaRebuildingBandwidthLimit": {
|
|
"description": "ReplicaRebuildingBandwidthLimit controls the maximum write bandwidth (in megabytes per second) allowed on the destination replica during the rebuilding process. Set this value to 0 to disable bandwidth limiting.",
|
|
"format": "int64",
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
"replicaSoftAntiAffinity": {
|
|
"description": "Replica soft anti affinity of the volume. Set enabled to allow replicas to be scheduled on the same node.",
|
|
"enum": [
|
|
"ignored",
|
|
"enabled",
|
|
"disabled"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"replicaZoneSoftAntiAffinity": {
|
|
"description": "Replica zone soft anti affinity of the volume. Set enabled to allow replicas to be scheduled in the same zone.",
|
|
"enum": [
|
|
"ignored",
|
|
"enabled",
|
|
"disabled"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"restoreVolumeRecurringJob": {
|
|
"enum": [
|
|
"ignored",
|
|
"enabled",
|
|
"disabled"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"revisionCounterDisabled": {
|
|
"type": "boolean"
|
|
},
|
|
"size": {
|
|
"format": "int64",
|
|
"type": "string"
|
|
},
|
|
"snapshotDataIntegrity": {
|
|
"enum": [
|
|
"ignored",
|
|
"disabled",
|
|
"enabled",
|
|
"fast-check"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"snapshotHashingRequestedAt": {
|
|
"description": "SnapshotHashingRequestedAt is the RFC3339 timestamp (e.g., \"2026-03-16T10:30:00Z\") when an on-demand snapshot checksum calculation is requested.\nWhen this value is set and is later than LastOnDemandSnapshotHashingCompleteAt, the system will calculate checksums\nfor all user snapshots.\n\nIf SnapshotHashingRequestedAt differs from LastOnDemandSnapshotHashingCompleteAt, it indicates that a hashing request\nis still in progress, and a new request will be rejected.",
|
|
"type": "string"
|
|
},
|
|
"snapshotMaxCount": {
|
|
"type": "integer"
|
|
},
|
|
"snapshotMaxSize": {
|
|
"format": "int64",
|
|
"type": "string"
|
|
},
|
|
"staleReplicaTimeout": {
|
|
"type": "integer"
|
|
},
|
|
"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"
|
|
},
|
|
"unmapMarkSnapChainRemoved": {
|
|
"enum": [
|
|
"ignored",
|
|
"disabled",
|
|
"enabled"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"status": {
|
|
"description": "VolumeStatus defines the observed state of the Longhorn volume",
|
|
"properties": {
|
|
"actualSize": {
|
|
"format": "int64",
|
|
"type": "integer"
|
|
},
|
|
"cloneStatus": {
|
|
"properties": {
|
|
"attemptCount": {
|
|
"type": "integer"
|
|
},
|
|
"nextAllowedAttemptAt": {
|
|
"type": "string"
|
|
},
|
|
"snapshot": {
|
|
"type": "string"
|
|
},
|
|
"sourceVolume": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"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"
|
|
},
|
|
"currentEngineNodeID": {
|
|
"description": "the node that the engine (target) is currently running on.",
|
|
"type": "string"
|
|
},
|
|
"currentImage": {
|
|
"type": "string"
|
|
},
|
|
"currentMigrationNodeID": {
|
|
"description": "the node that this volume is currently migrating to",
|
|
"type": "string"
|
|
},
|
|
"currentNodeID": {
|
|
"type": "string"
|
|
},
|
|
"expansionRequired": {
|
|
"type": "boolean"
|
|
},
|
|
"frontendDisabled": {
|
|
"type": "boolean"
|
|
},
|
|
"isStandby": {
|
|
"type": "boolean"
|
|
},
|
|
"kubernetesStatus": {
|
|
"properties": {
|
|
"lastPVCRefAt": {
|
|
"type": "string"
|
|
},
|
|
"lastPodRefAt": {
|
|
"type": "string"
|
|
},
|
|
"namespace": {
|
|
"description": "determine if PVC/Namespace is history or not",
|
|
"type": "string"
|
|
},
|
|
"pvName": {
|
|
"type": "string"
|
|
},
|
|
"pvStatus": {
|
|
"type": "string"
|
|
},
|
|
"pvcName": {
|
|
"type": "string"
|
|
},
|
|
"workloadsStatus": {
|
|
"description": "determine if Pod/Workload is history or not",
|
|
"items": {
|
|
"properties": {
|
|
"podName": {
|
|
"type": "string"
|
|
},
|
|
"podStatus": {
|
|
"type": "string"
|
|
},
|
|
"workloadName": {
|
|
"type": "string"
|
|
},
|
|
"workloadType": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"nullable": true,
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"lastAutoSalvagedAt": {
|
|
"type": "string"
|
|
},
|
|
"lastBackup": {
|
|
"type": "string"
|
|
},
|
|
"lastBackupAt": {
|
|
"type": "string"
|
|
},
|
|
"lastDegradedAt": {
|
|
"type": "string"
|
|
},
|
|
"lastOnDemandSnapshotHashingCompleteAt": {
|
|
"description": "LastOnDemandSnapshotHashingCompleteAt is the RFC3339 timestamp (e.g., \"2026-03-16T10:30:00Z\") when the\nmost recent on-demand snapshot checksum calculation completed.\nWhen this value matches SnapshotHashingRequestedAt, the requested on-demand checksum calculation is considered complete.",
|
|
"type": "string"
|
|
},
|
|
"ownerID": {
|
|
"type": "string"
|
|
},
|
|
"remountRequestedAt": {
|
|
"type": "string"
|
|
},
|
|
"restoreInitiated": {
|
|
"type": "boolean"
|
|
},
|
|
"restoreRequired": {
|
|
"type": "boolean"
|
|
},
|
|
"robustness": {
|
|
"type": "string"
|
|
},
|
|
"shareEndpoint": {
|
|
"type": "string"
|
|
},
|
|
"shareState": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
},
|
|
"switchoverState": {
|
|
"description": "SwitchoverState describes the current progress of a v2 engine live switchover.\nEmpty when no switchover is in progress.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|