Documentation ¶
Index ¶
- Constants
- Variables
- func BuildOutpostArn(segments map[string]string) string
- func GetVersionJSON() (string, error)
- func ValidateDriverOptions(options *DriverOptions) error
- func WithAwsSdkDebugLog(enableSdkDebugLog bool) func(*DriverOptions)
- func WithEndpoint(endpoint string) func(*DriverOptions)
- func WithExtraTags(extraTags map[string]string) func(*DriverOptions)
- func WithExtraVolumeTags(extraVolumeTags map[string]string) func(*DriverOptions)
- func WithKubernetesClusterID(clusterID string) func(*DriverOptions)
- func WithMode(mode Mode) func(*DriverOptions)
- func WithVolumeAttachLimit(volumeAttachLimit int64) func(*DriverOptions)
- type Driver
- func (d *Driver) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error)
- func (d *Driver) ControllerGetCapabilities(ctx context.Context, req *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error)
- func (d *Driver) ControllerGetVolume(ctx context.Context, req *csi.ControllerGetVolumeRequest) (*csi.ControllerGetVolumeResponse, error)
- func (d *Driver) ControllerPublishVolume(ctx context.Context, req *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error)
- func (d *Driver) ControllerUnpublishVolume(ctx context.Context, req *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error)
- func (d *Driver) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error)
- func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error)
- func (d *Driver) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error)
- func (d *Driver) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error)
- func (d *Driver) GetCapacity(ctx context.Context, req *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error)
- func (d *Driver) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error)
- func (d *Driver) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error)
- func (d *Driver) IsBlockDevice(fullPath string) (bool, error)
- func (d *Driver) ListSnapshots(ctx context.Context, req *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error)
- func (d *Driver) ListVolumes(ctx context.Context, req *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error)
- func (d *Driver) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error)
- func (d *Driver) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error)
- func (d *Driver) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error)
- func (d *Driver) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error)
- func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error)
- func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error)
- func (d *Driver) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error)
- func (d *Driver) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error)
- func (d *Driver) Probe(ctx context.Context, req *csi.ProbeRequest) (*csi.ProbeResponse, error)
- func (d *Driver) Run() error
- func (d *Driver) Stop()
- func (d *Driver) ValidateVolumeCapabilities(ctx context.Context, req *csi.ValidateVolumeCapabilitiesRequest) (*csi.ValidateVolumeCapabilitiesResponse, error)
- type DriverOptions
- type Mode
- type Mounter
- type NodeMounter
- func (m NodeMounter) GetDeviceNameFromMount(mountPath string) (string, int, error)
- func (m NodeMounter) IsCorruptedMnt(err error) bool
- func (m *NodeMounter) MakeDir(path string) error
- func (m *NodeMounter) MakeFile(path string) error
- func (m *NodeMounter) NeedResize(devicePath string, deviceMountPath string) (bool, error)
- func (m *NodeMounter) PathExists(path string) (bool, error)
- type VersionInfo
Constants ¶
const ( // VolumeTypeKey represents key for volume type VolumeTypeKey = "type" // IopsPerGBKey represents key for IOPS per GB IopsPerGBKey = "iopspergb" // AllowAutoIOPSPerGBIncreaseKey represents key for allowing automatic increase of IOPS AllowAutoIOPSPerGBIncreaseKey = "allowautoiopspergbincrease" // Iops represents key for IOPS for volume IopsKey = "iops" // ThroughputKey represents key for throughput ThroughputKey = "throughput" // EncryptedKey represents key for whether filesystem is encrypted EncryptedKey = "encrypted" // KmsKeyId represents key for KMS encryption key KmsKeyIDKey = "kmskeyid" // PVCNameKey contains name of the PVC for which is a volume provisioned. PVCNameKey = "csi.storage.k8s.io/pvc/name" // PVCNamespaceKey contains namespace of the PVC for which is a volume provisioned. PVCNamespaceKey = "csi.storage.k8s.io/pvc/namespace" // PVNameKey contains name of the final PV that will be used for the dynamically // provisioned volume PVNameKey = "csi.storage.k8s.io/pv/name" )
constants of keys in volume parameters
const ( // ResourceLifecycleTagPrefix is prefix of tag for provisioned EBS volume that // marks them as owned by the cluster. Used only when --cluster-id is set. ResourceLifecycleTagPrefix = "kubernetes.io/cluster/" // ResourceLifecycleOwned is the value we use when tagging resources to indicate // that the resource is considered owned and managed by the cluster, // and in particular that the lifecycle is tied to the lifecycle of the cluster. // From k8s.io/legacy-cloud-providers/aws/tags.go. ResourceLifecycleOwned = "owned" // NameTag is tag applied to provisioned EBS volume for backward compatibility with // in-tree volume plugin. Used only when --cluster-id is set. NameTag = "Name" // KubernetesClusterTag is tag applied to provisioned EBS volume for backward compatibility with // in-tree volume plugin. Used only when --cluster-id is set. // See https://github.com/kubernetes/cloud-provider-aws/blob/release-1.20/pkg/providers/v1/tags.go#L38-L41. KubernetesClusterTag = "KubernetesCluster" // PVCNameTag is tag applied to provisioned EBS volume for backward compatibility // with in-tree volume plugin. Value of the tag is PVC name. It is applied only when // the external provisioner sidecar is started with --extra-create-metadata=true and // thus provides such metadata to the CSI driver. PVCNameTag = "kubernetes.io/created-for/pvc/name" // PVCNamespaceTag is tag applied to provisioned EBS volume for backward compatibility // with in-tree volume plugin. Value of the tag is PVC namespace. It is applied only when // the external provisioner sidecar is started with --extra-create-metadata=true and // thus provides such metadata to the CSI driver. PVCNamespaceTag = "kubernetes.io/created-for/pvc/namespace" // PVNameTag is tag applied to provisioned EBS volume for backward compatibility // with in-tree volume plugin. Value of the tag is PV name. It is applied only when // the external provisioner sidecar is started with --extra-create-metadata=true and // thus provides such metadata to the CSI driver. PVNameTag = "kubernetes.io/created-for/pv/name" )
constants for volume tags and their values
const ( DriverName = "ebs.csi.aws.com" AwsPartitionKey = "topology." + DriverName + "/partition" AwsAccountIDKey = "topology." + DriverName + "/account-id" AwsRegionKey = "topology." + DriverName + "/region" AwsOutpostIDKey = "topology." + DriverName + "/outpost-id" WellKnownTopologyKey = "topology.kubernetes.io/zone" // DEPRECATED Use the WellKnownTopologyKey instead TopologyKey = "topology." + DriverName + "/zone" )
const ( // FSTypeExt2 represents the ext2 filesystem type FSTypeExt2 = "ext2" // FSTypeExt3 represents the ext3 filesystem type FSTypeExt3 = "ext3" // FSTypeExt4 represents the ext4 filesystem type FSTypeExt4 = "ext4" // FSTypeXfs represents te xfs filesystem type FSTypeXfs = "xfs" // VolumeOperationAlreadyExists is message fmt returned to CO when there is another in-flight call on the given volumeID VolumeOperationAlreadyExists = "An operation with the given volume=%q is already in progress" )
const (
DefaultCSIEndpoint = "unix://tmp/csi.sock"
)
constants for default command line flag values
const ( // devicePathKey represents key for device path in PublishContext // devicePath is the device path where the volume is attached to DevicePathKey = "devicePath" )
constants of keys in PublishContext
const ( // VolumeAttributePartition represents key for partition config in VolumeContext // this represents the partition number on a device used to mount VolumeAttributePartition = "partition" )
constants of keys in VolumeContext
Variables ¶
var ( // NewMetadataFunc is a variable for the cloud.NewMetadata function that can // be overwritten in unit tests. NewMetadataFunc = cloud.NewMetadataService // NewCloudFunc is a variable for the cloud.NewCloud function that can // be overwritten in unit tests. NewCloudFunc = cloud.NewCloud )
var (
ValidFSTypes = []string{FSTypeExt2, FSTypeExt3, FSTypeExt4, FSTypeXfs}
)
Functions ¶
func BuildOutpostArn ¶ added in v0.7.0
BuildOutpostArn returns the string representation of the outpost ARN from the given csi.TopologyRequirement.segments
func GetVersionJSON ¶ added in v0.2.0
func ValidateDriverOptions ¶ added in v0.5.0
func ValidateDriverOptions(options *DriverOptions) error
func WithAwsSdkDebugLog ¶ added in v1.0.0
func WithAwsSdkDebugLog(enableSdkDebugLog bool) func(*DriverOptions)
func WithEndpoint ¶ added in v0.5.0
func WithEndpoint(endpoint string) func(*DriverOptions)
func WithExtraTags ¶ added in v0.8.0
func WithExtraTags(extraTags map[string]string) func(*DriverOptions)
func WithExtraVolumeTags ¶ added in v0.5.0
func WithExtraVolumeTags(extraVolumeTags map[string]string) func(*DriverOptions)
func WithKubernetesClusterID ¶ added in v0.6.0
func WithKubernetesClusterID(clusterID string) func(*DriverOptions)
func WithMode ¶ added in v0.5.0
func WithMode(mode Mode) func(*DriverOptions)
func WithVolumeAttachLimit ¶ added in v0.6.0
func WithVolumeAttachLimit(volumeAttachLimit int64) func(*DriverOptions)
Types ¶
type Driver ¶
type Driver struct {
// contains filtered or unexported fields
}
func NewDriver ¶
func NewDriver(options ...func(*DriverOptions)) (*Driver, error)
func (*Driver) ControllerExpandVolume ¶ added in v0.4.0
func (d *Driver) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error)
func (*Driver) ControllerGetCapabilities ¶
func (d *Driver) ControllerGetCapabilities(ctx context.Context, req *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error)
func (*Driver) ControllerGetVolume ¶ added in v1.0.0
func (d *Driver) ControllerGetVolume(ctx context.Context, req *csi.ControllerGetVolumeRequest) (*csi.ControllerGetVolumeResponse, error)
func (*Driver) ControllerPublishVolume ¶
func (d *Driver) ControllerPublishVolume(ctx context.Context, req *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error)
func (*Driver) ControllerUnpublishVolume ¶
func (d *Driver) ControllerUnpublishVolume(ctx context.Context, req *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error)
func (*Driver) CreateSnapshot ¶
func (d *Driver) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error)
func (*Driver) CreateVolume ¶
func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error)
func (*Driver) DeleteSnapshot ¶
func (d *Driver) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error)
func (*Driver) DeleteVolume ¶
func (d *Driver) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error)
func (*Driver) GetCapacity ¶
func (d *Driver) GetCapacity(ctx context.Context, req *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error)
func (*Driver) GetPluginCapabilities ¶
func (d *Driver) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error)
func (*Driver) GetPluginInfo ¶
func (d *Driver) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error)
func (*Driver) IsBlockDevice ¶ added in v0.9.0
IsBlock checks if the given path is a block device
func (*Driver) ListSnapshots ¶
func (d *Driver) ListSnapshots(ctx context.Context, req *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error)
func (*Driver) ListVolumes ¶
func (d *Driver) ListVolumes(ctx context.Context, req *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error)
func (*Driver) NodeExpandVolume ¶ added in v0.4.0
func (d *Driver) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error)
func (*Driver) NodeGetCapabilities ¶
func (d *Driver) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error)
func (*Driver) NodeGetInfo ¶
func (d *Driver) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error)
func (*Driver) NodeGetVolumeStats ¶ added in v0.2.0
func (d *Driver) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error)
func (*Driver) NodePublishVolume ¶
func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error)
func (*Driver) NodeStageVolume ¶
func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error)
func (*Driver) NodeUnpublishVolume ¶
func (d *Driver) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error)
func (*Driver) NodeUnstageVolume ¶
func (d *Driver) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error)
func (*Driver) Probe ¶
func (d *Driver) Probe(ctx context.Context, req *csi.ProbeRequest) (*csi.ProbeResponse, error)
func (*Driver) ValidateVolumeCapabilities ¶
func (d *Driver) ValidateVolumeCapabilities(ctx context.Context, req *csi.ValidateVolumeCapabilitiesRequest) (*csi.ValidateVolumeCapabilitiesResponse, error)
type DriverOptions ¶ added in v0.5.0
type DriverOptions struct {
// contains filtered or unexported fields
}
type Mode ¶ added in v0.5.0
type Mode string
Mode is the operating mode of the CSI driver.
const ( // ControllerMode is the mode that only starts the controller service. ControllerMode Mode = "controller" // NodeMode is the mode that only starts the node service. NodeMode Mode = "node" // AllMode is the mode that only starts both the controller and the node service. AllMode Mode = "all" )
type Mounter ¶ added in v0.4.0
type Mounter interface { FormatAndMount(source string, target string, fstype string, options []string) error IsCorruptedMnt(err error) bool GetDeviceNameFromMount(mountPath string) (string, int, error) MakeFile(path string) error MakeDir(path string) error PathExists(path string) (bool, error) NeedResize(devicePath string, deviceMountPath string) (bool, error) // contains filtered or unexported methods }
Mounter is the interface implemented by NodeMounter. A mix & match of functions defined in upstream libraries. (FormatAndMount from struct SafeFormatAndMount, PathExists from an old edition of mount.Interface). Define it explicitly so that it can be mocked and to insulate from oft-changing upstream interfaces/structs
type NodeMounter ¶ added in v0.4.0
type NodeMounter struct {
*mountutils.SafeFormatAndMount
}
NodeMounter implements Mounter. A superstruct of SafeFormatAndMount.
func (NodeMounter) GetDeviceNameFromMount ¶ added in v0.10.0
func (m NodeMounter) GetDeviceNameFromMount(mountPath string) (string, int, error)
GetDeviceNameFromMount returns the volume ID for a mount path.
func (NodeMounter) IsCorruptedMnt ¶ added in v1.1.4
func (m NodeMounter) IsCorruptedMnt(err error) bool
IsCorruptedMnt return true if err is about corrupted mount point
func (*NodeMounter) MakeDir ¶ added in v0.5.0
func (m *NodeMounter) MakeDir(path string) error
This function is mirrored in ./sanity_test.go to make sure sanity test covered this block of code Please mirror the change to func MakeFile in ./sanity_test.go
func (*NodeMounter) MakeFile ¶ added in v0.5.0
func (m *NodeMounter) MakeFile(path string) error
This function is mirrored in ./sanity_test.go to make sure sanity test covered this block of code Please mirror the change to func MakeFile in ./sanity_test.go
func (*NodeMounter) NeedResize ¶ added in v1.0.0
func (m *NodeMounter) NeedResize(devicePath string, deviceMountPath string) (bool, error)
TODO: use common util from vendor kubernetes/mount-util
func (*NodeMounter) PathExists ¶ added in v0.10.0
func (m *NodeMounter) PathExists(path string) (bool, error)
This function is mirrored in ./sanity_test.go to make sure sanity test covered this block of code Please mirror the change to func MakeFile in ./sanity_test.go
type VersionInfo ¶ added in v0.2.0
type VersionInfo struct { DriverVersion string `json:"driverVersion"` GitCommit string `json:"gitCommit"` BuildDate string `json:"buildDate"` GoVersion string `json:"goVersion"` Compiler string `json:"compiler"` Platform string `json:"platform"` }
func GetVersion ¶ added in v0.2.0
func GetVersion() VersionInfo