Documentation ¶
Index ¶
- Constants
- func AlignBytes(currBytes int64, stepBytes int64) int64
- func BackupVolumeSourceToCSIVolumeHandle(sourceInstance, sourceShare string) (string, error)
- func BuildConfig(kubeconfig string) (*rest.Config, error)
- func BytesToGb(bytes int64) int64
- func CheckLabelValueRegex(value string) error
- func ConvertLabelsStringToMap(labels string) (map[string]string, error)
- func ConvertVolToShareName(csiVolName string) string
- func ErrCodePtr(code codes.Code) *codes.Code
- func GbToBytes(gbs int64) int64
- func GetBackupLocation(params map[string]string) string
- func GetMultishareOpsTimeoutConfig(opType OperationType) (time.Duration, time.Duration, error)
- func GetRegionFromZone(location string) (string, error)
- func InstanceInfoNameToInstanceURI(iiName string) string
- func InstanceStateToCRDStatus(state string) (v1beta1.FilestoreStatus, error)
- func InstanceURIToInstanceInfoName(instanceURI string) string
- func IsAligned(curSizeBytes int64, expectedBytes int64) bool
- func IsBackupHandle(handle string) (bool, error)
- func IsSnapshotTypeSupported(params map[string]string) (bool, error)
- func Max(a, b int64) int64
- func MbToBytes(mbs int64) int64
- func Min(a, b int64) int64
- func ParseInstanceURI(instanceURI string) (string, string, string, error)
- func ParseShareURI(shareURI string) (string, string, string, string, error)
- func ParseTimestamp(timestamp string) (*timestamppb.Timestamp, error)
- func RoundBytesToGb(bytes int64) int64
- func ShareInfoToShareName(siName string) string
- func ShareStateToCRDStatus(state string) (v1beta1.FilestoreStatus, error)
- func ShareToShareInfoName(shareName string) string
- type IPAllocator
- type OperationStatus
- type OperationType
- type VolumeLocks
Constants ¶
const ( // the ipRangeSize for Filestore instances IpRangeSize = 29 // the ipRangeSize for enterprise tier Filestore instances IpRangeSizeEnterprise = 26 )
const ( InstanceURISplitLen = 6 DefaultStepSizeGb int64 = MinMultishareInstanceSizeBytes / Gb // This finalizer protects custom resource objects (shareInfo and instanceInfo) from being cleaned up by the API server. // Clients will Delete the custom resource objects to express intent for filestore resource deletion and after the // resource deletion is done this Finalizer will be removed and the object will be cleaned up. FilestoreResourceCleanupFinalizer = "multishare.filestore.csi.storage.gke.io/resource-cleanup-protection" ErrRetention = 15 * time.Minute ConfigurablePackMinShareSizeBytes int64 = 10 * Gb )
const ( OpVerbCreate = "create" OpVerbDelete = "delete" OpVerbUpdate = "update" )
const ( Mb = 1024 * 1024 Gb = 1024 * Mb Tb = 1024 * Gb // VolumeSnapshot parameters VolumeSnapshotTypeKey = "type" VolumeSnapshotLocationKey = "location" VolumeSnapshotTypeSnapshot = "snapshot" VolumeSnapshotTypeBackup = "backup" SnapshotHandleBackupKey = "backups" ManagedFilestoreCSINamespace = "gke-managed-filestorecsi" )
const (
VolumeOperationAlreadyExistsFmt = "" /* 132-byte string literal not displayed */
)
Variables ¶
This section is empty.
Functions ¶
func AlignBytes ¶ added in v1.2.1
Aligns to the next higher multiple of step size. No-op if step size is 0, or already aligned.
func BackupVolumeSourceToCSIVolumeHandle ¶ added in v0.3.1
func CheckLabelValueRegex ¶ added in v1.2.0
func ConvertLabelsStringToMap ¶ added in v0.3.1
ConvertLabelsStringToMap converts the labels from string to map example: "key1=value1,key2=value2" gets converted into {"key1": "value1", "key2": "value2"}
func ConvertVolToShareName ¶ added in v1.2.0
func GetBackupLocation ¶ added in v0.3.1
func GetMultishareOpsTimeoutConfig ¶ added in v1.2.0
func GetRegionFromZone ¶ added in v0.3.1
func InstanceInfoNameToInstanceURI ¶ added in v1.5.0
this function replaces "." in instanceInfo name string with "/" to reconstruct instanceURI
func InstanceStateToCRDStatus ¶ added in v1.4.1
func InstanceStateToCRDStatus(state string) (v1beta1.FilestoreStatus, error)
func InstanceURIToInstanceInfoName ¶ added in v1.5.0
this function replaces "/" in instanceURI with "." to comply with custom resource naming rule
func IsBackupHandle ¶ added in v0.3.1
func IsSnapshotTypeSupported ¶ added in v0.3.1
func ParseInstanceURI ¶ added in v1.2.0
func ParseShareURI ¶ added in v1.2.0
func ParseTimestamp ¶ added in v0.3.1
func ParseTimestamp(timestamp string) (*timestamppb.Timestamp, error)
func ShareInfoToShareName ¶ added in v1.5.0
func ShareStateToCRDStatus ¶ added in v1.4.1
func ShareStateToCRDStatus(state string) (v1beta1.FilestoreStatus, error)
func ShareToShareInfoName ¶ added in v1.5.0
Types ¶
type IPAllocator ¶ added in v0.2.0
type IPAllocator struct {
// contains filtered or unexported fields
}
IPAllocator struct consists of shared resources that are used to keep track of the CIDR IPRanges currently reserved by service instances
func NewIPAllocator ¶ added in v0.2.0
func NewIPAllocator(pendingIPRanges map[string]bool) *IPAllocator
NewIPAllocator is the constructor to initialize the IPAllocator object Argument pendingIPRanges map[string]bool is a set of IP ranges currently reserved by service instances but pending reservation in the cloud instances
func (*IPAllocator) GetUnreservedIPRange ¶ added in v0.2.0
func (ipAllocator *IPAllocator) GetUnreservedIPRange(cidr string, ipRangeSize int, cloudInstancesReservedIPRanges map[string]bool) (string, error)
GetUnreservedIPRange returns an unreserved IP block. cidr: Provided cidr address in which we need to look for an unreserved IP range with specified size ipRangeSize: the size of the unreserved IP range we are looking for cloudInstancesReservedIPRanges: All the used IP ranges in the cloud instances All the used IP ranges in the service instances not updated in cloud instances is extracted from the pendingIPRanges list in the IPAllocator Finally a final reservedIPRange list is created by merging these two lists Potential error cases: 1) No IP range in the CIDR is unreserved 2) Parsing the CIDR resulted in an error
func (*IPAllocator) ReleaseIPRange ¶ added in v0.2.0
func (ipAllocator *IPAllocator) ReleaseIPRange(ipRange string)
ReleaseIPRange releases the pending IPRange Argument ipRange string is an IPV4 range which needs to be released
type OperationStatus ¶ added in v1.2.0
type OperationStatus int
const ( StatusSuccess OperationStatus = iota StatusRunning StatusFailed StatusUnknown )
type OperationType ¶ added in v1.2.0
type OperationType int
const ( InstanceCreate OperationType = iota InstanceDelete InstanceUpdate UnknownOp )
func ConvertInstanceOpVerbToType ¶ added in v1.2.0
func ConvertInstanceOpVerbToType(v string) OperationType
func ConvertShareOpVerbToType ¶ added in v1.2.0
func ConvertShareOpVerbToType(v string) OperationType
func (OperationType) String ¶ added in v1.2.0
func (o OperationType) String() string
type VolumeLocks ¶ added in v0.5.0
type VolumeLocks struct {
// contains filtered or unexported fields
}
VolumeLocks implements a map with atomic operations. It stores a set of all volume IDs with an ongoing operation.
func NewVolumeLocks ¶ added in v0.5.0
func NewVolumeLocks() *VolumeLocks
func (*VolumeLocks) Release ¶ added in v0.5.0
func (vl *VolumeLocks) Release(volumeID string)
func (*VolumeLocks) TryAcquire ¶ added in v0.5.0
func (vl *VolumeLocks) TryAcquire(volumeID string) bool
TryAcquire tries to acquire the lock for operating on volumeID and returns true if successful. If another operation is already using volumeID, returns false.