CRD Reference
This page documents the Custom Resource Definitions (CRDs) that DirectPV creates and manages.
DirectPV uses the following CRDs:
CRD
Description
DirectPVDrive
Represents a drive managed by DirectPV.
DirectPVVolume
Represents a volume provisioned on a drive.
DirectPVNode
Represents a node with discovered devices.
DirectPVInitRequest
Represents a drive initialization request.
All CRDs use:
API Group: directpv.min.io
API Version: v1beta1
Scope: Cluster
Represents a drive that DirectPV manages for volume provisioning.
Field
Type
Required
Description
unschedulable
boolean
No
When true, marks the drive as unavailable for volume scheduling.
relabel
boolean
No
When true, indicates the drive filesystem should be relabeled.
Field
Type
Required
Description
totalCapacity
int64
Yes
Total storage capacity of the drive in bytes.
allocatedCapacity
int64
Yes
Capacity allocated to volumes in bytes.
freeCapacity
int64
Yes
Free capacity available in bytes. Deprecated: calculated as totalCapacity - allocatedCapacity.
fsuuid
string
Yes
Filesystem UUID identifying the drive.
status
string
Yes
Current drive status. See Drive status values .
topology
map[string]string
Yes
Topology labels (node, zone, region, rack).
make
string
No
Drive manufacturer information.
conditions
[]Condition
No
Array of condition objects for error states. See Drive conditions .
Status
Description
Ready
Drive is ready for volume scheduling.
Lost
Associated data by FSUUID is lost.
Error
Drive is in error state and volume scheduling is prevented.
Removed
Drive is removed.
Moving
Drive is moving volumes.
Repairing
Drive filesystem is being repaired.
Condition type
Description
MountError
Drive has a mount error.
MultipleMatches
Drive has multiple matches.
IOError
Drive has an I/O error.
RelabelError
Drive has a relabel error.
DirectPV applies these labels to drive resources:
Label
Description
directpv.min.io/node
Node ID where the drive is located.
directpv.min.io/drive-name
Drive name (for example, sda, nvme0n1).
directpv.min.io/access-tier
Access tier (Default, Warm, Hot, Cold).
directpv.min.io/version
API version.
directpv.min.io/created-by
Component that created the resource.
directpv.min.io/migrated
Migration flag for legacy DirectCSI drives.
directpv.min.io/suspend
Suspension flag (true or false).
apiVersion : directpv.min.io/v1beta1
kind : DirectPVDrive
metadata :
name : 8a1b2c3d-4e5f-6789-abcd-ef0123456789
labels :
directpv.min.io/node : node1
directpv.min.io/drive-name : nvme0n1
directpv.min.io/access-tier : hot
spec :
unschedulable : false
status :
totalCapacity : 1000204886016
allocatedCapacity : 536870912
freeCapacity : 999667015104
fsuuid : a1b2c3d4-e5f6-7890-abcd-ef0123456789
status : Ready
topology :
directpv.min.io/node : node1
make : Samsung
Represents a volume provisioned on a DirectPV drive.
DirectPVVolume has no spec fields.
All configuration is in the status section.
Field
Type
Required
Description
dataPath
string
Yes
Path where volume data is stored on the drive.
stagingTargetPath
string
Yes
Kubernetes CSI staging target path.
targetPath
string
Yes
Kubernetes CSI target path where volume is published.
fsuuid
string
Yes
Filesystem UUID of the associated drive.
totalCapacity
int64
Yes
Total capacity allocated to volume in bytes.
availableCapacity
int64
Yes
Currently available capacity in bytes.
usedCapacity
int64
Yes
Currently used capacity in bytes.
status
string
Yes
Current volume status. See Volume status values .
requestParameters
map[string]string
No
CSI request parameters for volume creation.
preferredAccessibleTopology
[]map[string]string
No
Preferred topology for volume accessibility.
requisiteAccessibleTopology
[]map[string]string
No
Required topology for volume accessibility.
conditions
[]Condition
No
Array of condition objects.
Status
Description
Pending
Volume creation in progress.
Ready
Volume is ready for use.
Condition type
Description
Lost
Volume is lost because the associated drive was removed.
DirectPV applies these labels to volume resources:
Label
Description
directpv.min.io/node
Node ID where the drive is located.
directpv.min.io/drive
Associated drive ID.
directpv.min.io/drive-name
Associated drive name.
directpv.min.io/pod.name
Associated pod name.
directpv.min.io/pod.namespace
Associated pod namespace.
directpv.min.io/pod.statefulset
Associated StatefulSet name.
directpv.min.io/version
API version.
directpv.min.io/created-by
Component that created the resource.
directpv.min.io/migrated
Migration flag.
directpv.min.io/suspend
Suspension flag.
directpv.min.io/tenant
Tenant name.
apiVersion : directpv.min.io/v1beta1
kind : DirectPVVolume
metadata :
name : pvc-12345678-90ab-cdef-1234-567890abcdef
labels :
directpv.min.io/node : node1
directpv.min.io/drive : 8a1b2c3d-4e5f-6789-abcd-ef0123456789
directpv.min.io/drive-name : nvme0n1
directpv.min.io/pod.name : minio-0
directpv.min.io/pod.namespace : default
status :
dataPath : /var/lib/directpv/mnt/8a1b2c3d-4e5f-6789-abcd-ef0123456789/pvc-12345678-90ab-cdef-1234-567890abcdef
stagingTargetPath : /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-12345678-90ab-cdef-1234-567890abcdef/globalmount
targetPath : /var/lib/kubelet/pods/abcd1234-5678-90ab-cdef-1234567890ab/volumes/kubernetes.io~csi/pvc-12345678-90ab-cdef-1234-567890abcdef/mount
fsuuid : a1b2c3d4-e5f6-7890-abcd-ef0123456789
totalCapacity : 536870912
availableCapacity : 268435456
usedCapacity : 268435456
status : Ready
Represents a node with devices that DirectPV has discovered.
Field
Type
Required
Description
refresh
boolean
No
When true, signals the node to refresh device discovery.
Field
Type
Required
Description
devices
[]Device
Yes
List of devices discovered on the node.
conditions
[]Condition
No
Array of condition objects.
Field
Type
Required
Description
name
string
Yes
Device name (for example, /dev/sda).
id
string
Yes
Unique device ID (WWN or serial number).
majorMinor
string
Yes
Device major:minor number.
size
int64
Yes
Device size in bytes.
make
string
No
Device manufacturer information.
fsType
string
No
Filesystem type if formatted.
fsuuid
string
No
Filesystem UUID if formatted.
deniedReason
string
No
Reason why device was denied for DirectPV use.
Label
Description
directpv.min.io/node
Node ID.
directpv.min.io/version
API version.
directpv.min.io/created-by
Component that created the resource.
apiVersion : directpv.min.io/v1beta1
kind : DirectPVNode
metadata :
name : node1
labels :
directpv.min.io/node : node1
spec :
refresh : false
status :
devices :
- name : /dev/nvme0n1
id : nvme.samsung-MZQLB960HAJR-00007-S4YNNE0N123456
majorMinor : "259:0"
size : 960197124096
make : Samsung
- name : /dev/sda
id : scsi-SATA_WDC_WD10EZEX-00B_WD-WMC3F0123456
majorMinor : "8:0"
size : 1000204886016
make : WDC
deniedReason : "in use by system"
Represents a request to initialize drives for DirectPV management.
Field
Type
Required
Description
devices
[]InitDevice
Yes
List of devices to initialize.
Field
Type
Required
Description
id
string
Yes
Device ID (unique identifier on node).
name
string
Yes
Device name (for example, /dev/sda).
force
boolean
Yes
Force initialization even if data exists.
Field
Type
Required
Description
status
string
Yes
Current initialization request status. See Init status values .
results
[]InitDeviceResult
Yes
Results of initialization for each device.
Status
Description
Pending
Initialization request is still pending.
Processed
Initialization request has been processed.
Error
Initialization request failed.
InitDeviceResult structure
Field
Type
Required
Description
name
string
Yes
Device name.
error
string
No
Error message if initialization failed.
Label
Description
directpv.min.io/node
Node ID where initialization occurs.
directpv.min.io/version
API version.
directpv.min.io/created-by
Component that created the resource.
directpv.min.io/request-id
Request ID.
apiVersion : directpv.min.io/v1beta1
kind : DirectPVInitRequest
metadata :
name : c24e22f5-d582-49ba-a883-2ce56909904e
labels :
directpv.min.io/node : node1
directpv.min.io/request-id : c24e22f5-d582-49ba-a883-2ce56909904e
spec :
devices :
- id : nvme.samsung-MZQLB960HAJR-00007-S4YNNE0N123456
name : /dev/nvme0n1
force : false
status :
status : Processed
results :
- name : /dev/nvme0n1
All CRDs use standard Kubernetes conditions:
Field
Type
Description
type
string
Condition type (CamelCase, max 316 characters).
status
string
One of: True, False, Unknown.
reason
string
Reason for condition (CamelCase, max 1024 characters).
message
string
Human-readable message (max 32768 characters).
lastTransitionTime
time
Timestamp of last status change.
observedGeneration
int64
Generation number when condition was set.