# Functions

CheckAndCreateSparseFile will reuse the existing sparse file if it already exists, for handling cases where NDM is upgraded or restarted.
GetActiveSparseBlockDevicesUUID returns UUIDs for the sparse disks present in a given node.
GetSparseBlockDeviceUUID returns a fixed UUID for the sparse disk on a given node.
GetSparseFileCount returns the number of sparse files to be created by NDM.
GetSparseFileDir returns the full path to the sparse file directory on the node.
GetSparseFileSize returns the size of the sparse file to be created by NDM.
NewController returns a controller pointer for any error case it will return nil.
NewDeviceInfo returns a pointer of empty DeviceInfo struct which will be field from DiskInfo.

# Constants

CRDRetryInterval is used if CRD is not present.
DefaultConfigFilePath is the default path at which config is present inside container.
EnvSparseFileCount defines the number of sparse files to be created.
EnvSparseFileDir - defines a sparse directory.
EnvSparseFileSize define the size of created sparse file.
FalseString contains string value of false.
HostNameKey is the key for hostname.
KubernetesHostNameLabel is the hostname label used by k8s.
NDMActive is constant for active resource status.
NDMBlockDeviceKind is the Device kind CR.
NDMDefaultDeviceType will be used to initialize the blockdevice type.
NDMDefaultDiskType will be used to initialize the disk type.
NDMDeviceTypeKey specifies the block device type.
NDMDiskKind is the Disk kind CR.
NDMInactive is constant for inactive resource status.
NDMManagedKey specifies blockdevice cr should be managed by ndm or not.
NDMNotPartitioned is used to say blockdevice does not have any partition.
NDMPartitioned is used to say blockdevice has some partitions.
NDMUnknown is constant for resource unknown status.
NDMVersion is the CR version.
NodeNameKey is the node name label prefix.
OpenEBSReconcile is used in annotation to check whether CR is to be reconciled or not.
SparseBlockDevicePrefix defines the prefix for the sparse device.
SparseFileDefaultCount defines the default sparse count files.
SparseFileDefaultSize defines the default sparse file default size.
SparseFileMinSize defines the minimum size for sparse file.
SparseFileName is a name of Sparse file.
TrueString contains string value of true.

# Variables

ControllerBroadcastChannel is used to send a copy of controller object to each probe.

# Structs

Controller is the controller implementation for disk resources.
DeviceInfo contains details of blockdevice which can be converted into api.BlockDevice There will be one DeviceInfo created for each physical disk (may change in future).
EventMessage struct contains attribute of event message info.
Filter contains name, state and filterInterface.
FilterConfig contains configs of Filter.
FSInfo defines the filesystem related information of block device/disk, like mountpoint and filesystem.
NDMOptions defines the options to run the NDM daemon.
NodeDiskManagerConfig contains configs of probes and filters.
Probe contains name, state and probeinterface.
ProbeConfig contains configs of Probe.

# Interfaces

FilterInterface contains Filters interface and Start().
Filters contains Include() and Exclude() filter method.
ProbeInterface contains Start() and FillBlockDeviceDetails().