Documentation ¶
Index ¶
- Constants
- Variables
- func RecordRequestsHandler(r *request.Request)
- func RecordThrottledRequestsHandler(r *request.Request)
- func RegisterMetrics()
- type Cloud
- type Disk
- type DiskOptions
- type EC2
- type EC2Metadata
- type ListSnapshotsResponse
- type Metadata
- type MetadataService
- type Snapshot
- type SnapshotOptions
Constants ¶
const ( // VolumeTypeIO1 represents a provisioned IOPS SSD type of volume. VolumeTypeIO1 = "io1" // VolumeTypeIO2 represents a provisioned IOPS SSD type of volume. VolumeTypeIO2 = "io2" // VolumeTypeGP2 represents a general purpose SSD type of volume. VolumeTypeGP2 = "gp2" // VolumeTypeGP3 represents a general purpose SSD type of volume. VolumeTypeGP3 = "gp3" // VolumeTypeSC1 represents a cold HDD (sc1) type of volume. VolumeTypeSC1 = "sc1" // VolumeTypeST1 represents a throughput-optimized HDD type of volume. VolumeTypeST1 = "st1" // VolumeTypeStandard represents a previous type of volume. VolumeTypeStandard = "standard" )
AWS volume types
const ( // MaxNumTagsPerResource represents the maximum number of tags per AWS resource. MaxNumTagsPerResource = 50 // MaxTagKeyLength represents the maximum key length for a tag. MaxTagKeyLength = 128 // MaxTagValueLength represents the maximum value length for a tag. MaxTagValueLength = 256 )
AWS provisioning limits. Source:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-restrictions
const ( // DefaultVolumeSize represents the default volume size. DefaultVolumeSize int64 = 100 * util.GiB // DefaultVolumeType specifies which storage to use for newly created Volumes. DefaultVolumeType = VolumeTypeGP3 )
Defaults
const ( // VolumeNameTagKey is the key value that refers to the volume's name. VolumeNameTagKey = "CSIVolumeName" // SnapshotNameTagKey is the key value that refers to the snapshot's name. SnapshotNameTagKey = "CSIVolumeSnapshotName" // KubernetesTagKeyPrefix is the prefix of the key value that is reserved for Kubernetes. KubernetesTagKeyPrefix = "kubernetes.io" // AWSTagKeyPrefix is the prefix of the key value that is reserved for AWS. AWSTagKeyPrefix = "aws:" //AwsEbsDriverTagKey is the tag to identify if a volume/snapshot is managed by ebs csi driver AwsEbsDriverTagKey = "ebs.csi.aws.com/cluster" )
Tags
const OutpostArnEndpoint string = "outpost-arn"
OutpostArnEndpoint is the ec2 instance metadata endpoint to query to get the outpost arn
Variables ¶
var ( // ErrMultiDisks is an error that is returned when multiple // disks are found with the same volume name. ErrMultiDisks = errors.New("Multiple disks with same name") // ErrDiskExistsDiffSize is an error that is returned if a disk with a given // name, but different size, is found. ErrDiskExistsDiffSize = errors.New("There is already a disk with same name and different size") // ErrNotFound is returned when a resource is not found. ErrNotFound = errors.New("Resource was not found") // ErrAlreadyExists is returned when a resource is already existent. ErrAlreadyExists = errors.New("Resource already exists") // ErrVolumeInUse is returned when a volume is already attached to an instance. ErrVolumeInUse = errors.New("Request volume is already attached to an instance") // ErrMultiSnapshots is returned when multiple snapshots are found // with the same ID ErrMultiSnapshots = errors.New("Multiple snapshots with the same name found") // ErrInvalidMaxResults is returned when a MaxResults pagination parameter is between 1 and 4 ErrInvalidMaxResults = errors.New("MaxResults parameter must be 0 or greater than or equal to 5") // VolumeNotBeingModified is returned if volume being described is not being modified VolumeNotBeingModified = fmt.Errorf("volume is not being modified") )
var ( ValidVolumeTypes = []string{ VolumeTypeIO1, VolumeTypeIO2, VolumeTypeGP2, VolumeTypeGP3, VolumeTypeSC1, VolumeTypeST1, VolumeTypeStandard, } )
Functions ¶
func RecordRequestsHandler ¶ added in v1.0.0
RecordRequestsComplete is added to the Complete chain; called after any request
func RecordThrottledRequestsHandler ¶ added in v1.0.0
RecordThrottlesAfterRetry is added to the AfterRetry chain; called after any error
func RegisterMetrics ¶ added in v1.0.0
func RegisterMetrics()
Types ¶
type Cloud ¶
type Cloud interface { CreateDisk(ctx context.Context, volumeName string, diskOptions *DiskOptions) (disk *Disk, err error) DeleteDisk(ctx context.Context, volumeID string) (success bool, err error) AttachDisk(ctx context.Context, volumeID string, nodeID string) (devicePath string, err error) DetachDisk(ctx context.Context, volumeID string, nodeID string) (err error) ResizeDisk(ctx context.Context, volumeID string, reqSize int64) (newSize int64, err error) WaitForAttachmentState(ctx context.Context, volumeID, expectedState string, expectedInstance string, expectedDevice string, alreadyAssigned bool) (*ec2.VolumeAttachment, error) GetDiskByName(ctx context.Context, name string, capacityBytes int64) (disk *Disk, err error) GetDiskByID(ctx context.Context, volumeID string) (disk *Disk, err error) IsExistInstance(ctx context.Context, nodeID string) (success bool) CreateSnapshot(ctx context.Context, volumeID string, snapshotOptions *SnapshotOptions) (snapshot *Snapshot, err error) DeleteSnapshot(ctx context.Context, snapshotID string) (success bool, err error) GetSnapshotByName(ctx context.Context, name string) (snapshot *Snapshot, err error) GetSnapshotByID(ctx context.Context, snapshotID string) (snapshot *Snapshot, err error) ListSnapshots(ctx context.Context, volumeID string, maxResults int64, nextToken string) (listSnapshotsResponse *ListSnapshotsResponse, err error) }
type Disk ¶
type Disk struct { VolumeID string CapacityGiB int64 AvailabilityZone string SnapshotID string OutpostArn string Attachments []string }
Disk represents a EBS volume
type DiskOptions ¶
type DiskOptions struct { CapacityBytes int64 Tags map[string]string VolumeType string IOPSPerGB int AllowIOPSPerGBIncrease bool IOPS int Throughput int AvailabilityZone string OutpostArn string Encrypted bool // KmsKeyID represents a fully qualified resource name to the key to use for encryption. // example: arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef KmsKeyID string SnapshotID string }
DiskOptions represents parameters to create an EBS volume
type EC2 ¶
type EC2 interface { DescribeVolumesWithContext(ctx aws.Context, input *ec2.DescribeVolumesInput, opts ...request.Option) (*ec2.DescribeVolumesOutput, error) CreateVolumeWithContext(ctx aws.Context, input *ec2.CreateVolumeInput, opts ...request.Option) (*ec2.Volume, error) DeleteVolumeWithContext(ctx aws.Context, input *ec2.DeleteVolumeInput, opts ...request.Option) (*ec2.DeleteVolumeOutput, error) DetachVolumeWithContext(ctx aws.Context, input *ec2.DetachVolumeInput, opts ...request.Option) (*ec2.VolumeAttachment, error) AttachVolumeWithContext(ctx aws.Context, input *ec2.AttachVolumeInput, opts ...request.Option) (*ec2.VolumeAttachment, error) DescribeInstancesWithContext(ctx aws.Context, input *ec2.DescribeInstancesInput, opts ...request.Option) (*ec2.DescribeInstancesOutput, error) CreateSnapshotWithContext(ctx aws.Context, input *ec2.CreateSnapshotInput, opts ...request.Option) (*ec2.Snapshot, error) DeleteSnapshotWithContext(ctx aws.Context, input *ec2.DeleteSnapshotInput, opts ...request.Option) (*ec2.DeleteSnapshotOutput, error) DescribeSnapshotsWithContext(ctx aws.Context, input *ec2.DescribeSnapshotsInput, opts ...request.Option) (*ec2.DescribeSnapshotsOutput, error) ModifyVolumeWithContext(ctx aws.Context, input *ec2.ModifyVolumeInput, opts ...request.Option) (*ec2.ModifyVolumeOutput, error) DescribeVolumesModificationsWithContext(ctx aws.Context, input *ec2.DescribeVolumesModificationsInput, opts ...request.Option) (*ec2.DescribeVolumesModificationsOutput, error) DescribeAvailabilityZonesWithContext(ctx aws.Context, input *ec2.DescribeAvailabilityZonesInput, opts ...request.Option) (*ec2.DescribeAvailabilityZonesOutput, error) }
EC2 abstracts aws.EC2 to facilitate its mocking. See https://docs.aws.amazon.com/sdk-for-go/api/service/ec2/ for details
type EC2Metadata ¶
type EC2Metadata interface { Available() bool // ec2 instance metadata endpoints: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html GetMetadata(string) (string, error) GetInstanceIdentityDocument() (ec2metadata.EC2InstanceIdentityDocument, error) }
type ListSnapshotsResponse ¶ added in v0.4.0
ListSnapshotsResponse is the container for our snapshots along with a pagination token to pass back to the caller
type Metadata ¶ added in v0.4.0
type Metadata struct { InstanceID string InstanceType string Region string AvailabilityZone string OutpostArn arn.ARN }
func (*Metadata) GetAvailabilityZone ¶ added in v0.4.0
GetAvailabilityZone returns the Availability Zone which the instance is in.
func (*Metadata) GetInstanceID ¶ added in v0.4.0
GetInstanceID returns the instance identification.
func (*Metadata) GetInstanceType ¶ added in v0.4.0
GetInstanceType returns the instance type.
func (*Metadata) GetOutpostArn ¶ added in v0.7.0
GetOutpostArn returns outpost arn if instance is running on an outpost. empty otherwise.
type MetadataService ¶
type MetadataService interface { GetInstanceID() string GetInstanceType() string GetRegion() string GetAvailabilityZone() string GetOutpostArn() arn.ARN }
MetadataService represents AWS metadata service.
func NewMetadata ¶ added in v0.5.0
func NewMetadata() (MetadataService, error)
func NewMetadataService ¶
func NewMetadataService(svc EC2Metadata, clientset kubernetes.Interface) (MetadataService, error)
NewMetadataService returns a new MetadataServiceImplementation.
type Snapshot ¶ added in v0.3.0
type Snapshot struct { SnapshotID string SourceVolumeID string Size int64 CreationTime time.Time ReadyToUse bool }
Snapshot represents an EBS volume snapshot
type SnapshotOptions ¶ added in v0.3.0
SnapshotOptions represents parameters to create an EBS volume
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |