Documentation ¶
Index ¶
- Constants
- Variables
- func ContainsFinalizer(metadata metav1.ObjectMeta, finalizer string) bool
- func CreateLocalPV(obj runtime.Object, runtimeConfig *provCommon.RuntimeConfig, ...) error
- func EnqueueOnlyLabeledSubcomponents(components ...string) predicate.Predicate
- func GenerateMountMap(runtimeConfig *provCommon.RuntimeConfig) (sets.String, error)
- func GeneratePVName(file, node, class string) string
- func GetBoundAndReleasedPVs(obj runtime.Object, c client.Client) ([]corev1.PersistentVolume, []corev1.PersistentVolume, error)
- func GetDiskMakerImage() string
- func GetKubeRBACProxyImage() string
- func GetLocalDiskLocationPath() string
- func GetNodeNameEnvVar() string
- func GetPVOwnerSelector(lv *localv1.LocalVolume) labels.Selector
- func GetProvisionedByValue(node corev1.Node) string
- func GetSymLinkSourceAndTarget(dev internal.BlockDevice, symlinkDir string) (string, string, bool, error)
- func GetWatchNamespace() (string, error)
- func InitMapIfNil(m *map[string]string)
- func LocalVolumeKey(lv *localv1.LocalVolume) string
- func NodeSelectorMatchesNodeLabels(node *corev1.Node, nodeSelector *corev1.NodeSelector) (bool, error)
- func PVMatchesProvisioner(pv corev1.PersistentVolume, provisionerName string) bool
- func ReloadRuntimeConfig(ctx context.Context, client client.Client, request ctrl.Request, ...) error
- func RoundDownCapacityPretty(capacityBytes int64) int64
- type StorageClassOwnerMap
- func (l *StorageClassOwnerMap) DeregisterStorageClassOwner(storageClass string, name types.NamespacedName)
- func (l *StorageClassOwnerMap) GetStorageClassOwners(storageClass string) []types.NamespacedName
- func (l *StorageClassOwnerMap) RegisterStorageClassOwner(storageClass string, name types.NamespacedName)
Constants ¶
const ( // KiB is is 1024 bytes KiB int64 = 1024 // MiB is is 1024 KiB MiB = 1024 * KiB // GiB is 1024 MiB GiB = 1024 * MiB // TiB is 1024 GiB TiB = 1024 * GiB )
const ( // OwnerNamespaceLabel references the owning object's namespace OwnerNamespaceLabel = "local.storage.openshift.io/owner-namespace" // OwnerNameLabel references the owning object OwnerNameLabel = "local.storage.openshift.io/owner-name" // DiskMakerImageEnv is used by the operator to read the DISKMAKER_IMAGE from the environment DiskMakerImageEnv = "DISKMAKER_IMAGE" // KubeRBACProxyImageEnv is used by the operator to read the KUBE_RBAC_PROXY_IMAGE from the environment KubeRBACProxyImageEnv = "KUBE_RBAC_PROXY_IMAGE" // LocalDiskLocationEnv is passed to the operator to override the LOCAL_DISK_LOCATION host directory LocalDiskLocationEnv = "LOCAL_DISK_LOCATION" // ProvisionerConfigMapName is the name of the local-static-provisioner configmap ProvisionerConfigMapName = "local-provisioner" // DiscoveryNodeLabelKey is the label key on the discovery result CR used to identify the node it belongs to. // the value is the node's name DiscoveryNodeLabel = "discovery-result-node" LocalVolumeStorageClassTemplate = "templates/localvolume-storageclass.yaml" LocalProvisionerConfigMapTemplate = "templates/local-provisioner-configmap.yaml" DiskMakerManagerDaemonSetTemplate = "templates/diskmaker-manager-daemonset.yaml" DiskMakerDiscoveryDaemonSetTemplate = "templates/diskmaker-discovery-daemonset.yaml" MetricsServiceTemplate = "templates/localmetrics/service.yaml" MetricsServiceMonitorTemplate = "templates/localmetrics/service-monitor.yaml" PrometheusRuleTemplate = "templates/localmetrics/prometheus-rule.yaml" // DiskMakerServiceName is the name of the service created for the diskmaker daemon DiskMakerServiceName = "local-storage-diskmaker-metrics" // DiscoveryServiceName is the name of the service created for the diskmaker discovery daemon DiscoveryServiceName = "local-storage-discovery-metrics" // DiskMakerMetricsServingCert is the name of secret created for diskmaker service to store TLS config DiskMakerMetricsServingCert = "diskmaker-metric-serving-cert" // DiscoveryMetricsServingCert is the name of secret created for discovery service to store TLS config DiscoveryMetricsServingCert = "discovery-metric-serving-cert" // LocalVolumeProtectionFinalizer is set to ensure the provisioner daemonset and owning object stick around long // enough to handle the PV reclaim policy. LocalVolumeProtectionFinalizer = "storage.openshift.com/local-volume-protection" )
const ( // LocalVolumeOwnerNameForPV stores name of LocalVolume that created this PV LocalVolumeOwnerNameForPV = "storage.openshift.com/local-volume-owner-name" // LocalVolumeOwnerNamespaceForPV stores namespace of LocalVolume that created this PV LocalVolumeOwnerNamespaceForPV = "storage.openshift.com/local-volume-owner-namespace" // PVOwnerKindLabel stores the namespace of the CR that created this PV PVOwnerKindLabel = "storage.openshift.com/owner-kind" // PVOwnerNameLabel stores the name of the CR that created this PV PVOwnerNameLabel = "storage.openshift.com/owner-name" // PVOwnerNamespaceLabel stores the namespace of the CR that created this PV PVOwnerNamespaceLabel = "storage.openshift.com/owner-namespace" // PVDeviceNameLabel is the KNAME of the device PVDeviceNameLabel = "storage.openshift.com/device-name" // PVDeviceIDLabel is the id of the device PVDeviceIDLabel = "storage.openshift.com/device-id" )
Variables ¶
var ( // SymlinkHostDirVolume is the corev1.Volume definition for the lso symlink host directory. // "/mnt/local-storage" is the default, but it can be controlled by env vars. // SymlinkMount is the corresponding mount SymlinkHostDirVolume = corev1.Volume{ Name: "local-disks", VolumeSource: corev1.VolumeSource{ HostPath: &corev1.HostPathVolumeSource{ Path: GetLocalDiskLocationPath(), }, }, } // SymlinkMount is the corresponding mount for SymlinkHostDirVolume SymlinkMount = corev1.VolumeMount{ Name: "local-disks", MountPath: GetLocalDiskLocationPath(), MountPropagation: &hostContainerPropagation, } // DevHostDirVolume is the corev1.Volume definition for the "/dev" bind mount used to // list block devices. // DevMount is the corresponding mount DevHostDirVolume = corev1.Volume{ Name: devDirVolName, VolumeSource: corev1.VolumeSource{ HostPath: &corev1.HostPathVolumeSource{ Path: devDirPath, Type: &directoryHostPath, }, }, } // DevMount is the corresponding mount for DevHostDirVolume DevMount = corev1.VolumeMount{ Name: devDirVolName, MountPath: devDirPath, MountPropagation: &hostContainerPropagation, } // ProvisionerConfigHostDirVolume is the corev1.Volume definition for the // local-static-provisioner configmap // ProvisionerConfigMount is the corresponding mount ProvisionerConfigHostDirVolume = corev1.Volume{ Name: provisionerConfigVolName, VolumeSource: corev1.VolumeSource{ ConfigMap: &corev1.ConfigMapVolumeSource{ LocalObjectReference: corev1.LocalObjectReference{ Name: ProvisionerConfigMapName, }, }, }, } // ProvisionerConfigMount is the corresponding mount for ProvisionerConfigHostDirVolume ProvisionerConfigMount = corev1.VolumeMount{ Name: provisionerConfigVolName, ReadOnly: true, MountPath: "/etc/provisioner/config", } // UDevHostDirVolume is the corev1.Volume definition for the // "/run/udev" host bind-mount. This helps lsblk give more accurate output. // UDevMount is the corresponding mount UDevHostDirVolume = corev1.Volume{ Name: udevVolName, VolumeSource: corev1.VolumeSource{ HostPath: &corev1.HostPathVolumeSource{Path: udevPath}, }, } // UDevMount is the corresponding mount for UDevHostDirVolume UDevMount = corev1.VolumeMount{ Name: udevVolName, MountPath: udevPath, MountPropagation: &hostContainerPropagation, } )
var DeprecatedLabels = []string{PVDeviceNameLabel, PVDeviceIDLabel}
DeprecatedLabels: these labels were deprecated because the potential values weren't all compatible label values they have been move to annotations
Functions ¶
func ContainsFinalizer ¶
func ContainsFinalizer(metadata metav1.ObjectMeta, finalizer string) bool
ContainsFinalizer checks if finalizer is found in metadata
func CreateLocalPV ¶
func CreateLocalPV( obj runtime.Object, runtimeConfig *provCommon.RuntimeConfig, cleanupTracker *provDeleter.CleanupStatusTracker, storageClass storagev1.StorageClass, mountPointMap sets.String, client client.Client, symLinkPath string, deviceName string, idExists bool, extraLabelsForPV map[string]string, ) error
CreateLocalPV is used to create a local PV against a symlink after passing the same validations against that symlink that local-static-provisioner uses
func EnqueueOnlyLabeledSubcomponents ¶
EnqueueOnlyLabeledSubcomponents returns a predicate that filters only objects that have labels["app"] in components
func GenerateMountMap ¶
func GenerateMountMap(runtimeConfig *provCommon.RuntimeConfig) (sets.String, error)
GenerateMountMap is used to get a set of mountpoints that can be quickly looked up
func GeneratePVName ¶
GeneratePVName is used to generate a PV name based on the filename, node, and storageclass Important, this hash value should remain consistent, so this function should not be changed in a way that would change its output.
func GetBoundAndReleasedPVs ¶
func GetBoundAndReleasedPVs(obj runtime.Object, c client.Client) ([]corev1.PersistentVolume, []corev1.PersistentVolume, error)
GetBoundAndReleasedPVs owned by the object
func GetDiskMakerImage ¶
func GetDiskMakerImage() string
GetDiskMakerImage returns the image to be used for diskmaker daemonset
func GetKubeRBACProxyImage ¶
func GetKubeRBACProxyImage() string
GetKubeRBACProxyImage returns the image to be used for Kube RBAC Proxy sidecar container
func GetLocalDiskLocationPath ¶
func GetLocalDiskLocationPath() string
GetLocalDiskLocationPath return the local disk path
func GetNodeNameEnvVar ¶
func GetNodeNameEnvVar() string
GetNodeNameEnvVar returns the node name from env vars
func GetPVOwnerSelector ¶
func GetPVOwnerSelector(lv *localv1.LocalVolume) labels.Selector
GetPVOwnerSelector returns selector for selecting pvs owned by given volume
func GetProvisionedByValue ¶
GetProvisionedByValue is the the annotation that indicates which node a PV was originally provisioned on the key is provCommon.AnnProvisionedBy ("pv.kubernetes.io/provisioned-by")
func GetSymLinkSourceAndTarget ¶
func GetSymLinkSourceAndTarget(dev internal.BlockDevice, symlinkDir string) (string, string, bool, error)
GetSymLinkSourceAndTarget returns `source`: the /dev/disk/by-id path of the device if it exists, /dev/KNAME if it doesn't `target`: the path in the symlinkdir to symlink to. device-id if it exists, KNAME if it doesn't `idExists`: is set if the device-id exists `err`
func GetWatchNamespace ¶
GetWatchNamespace returns the namespace the operator should be watching for changes
func InitMapIfNil ¶
InitMapIfNil allocates memory to a map if it is nil
func LocalVolumeKey ¶
func LocalVolumeKey(lv *localv1.LocalVolume) string
LocalVolumeKey returns key for the localvolume
func PVMatchesProvisioner ¶
func PVMatchesProvisioner(pv corev1.PersistentVolume, provisionerName string) bool
func ReloadRuntimeConfig ¶
func ReloadRuntimeConfig(ctx context.Context, client client.Client, request ctrl.Request, nodeName string, rc *staticProvisioner.RuntimeConfig) error
ReloadRuntimeConfig obtains all values needed by runtime config during Reconcile and writes them to the existing RuntimeConfig provided
func RoundDownCapacityPretty ¶
RoundDownCapacityPretty rounds down to either the closest GiB or Mib if the resulting value is more than 10 of the respective unit.
Types ¶
type StorageClassOwnerMap ¶
type StorageClassOwnerMap struct {
// contains filtered or unexported fields
}
StorageClassOwnerMap store a one to many association from storageClass to storageclass owner (LocalVolume,LocalVolumeSet,etc), so that one PV/SC event can fan out requests to all owners.
func (*StorageClassOwnerMap) DeregisterStorageClassOwner ¶
func (l *StorageClassOwnerMap) DeregisterStorageClassOwner(storageClass string, name types.NamespacedName)
func (*StorageClassOwnerMap) GetStorageClassOwners ¶
func (l *StorageClassOwnerMap) GetStorageClassOwners(storageClass string) []types.NamespacedName
func (*StorageClassOwnerMap) RegisterStorageClassOwner ¶
func (l *StorageClassOwnerMap) RegisterStorageClassOwner(storageClass string, name types.NamespacedName)