util

package
v1.6.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2024 License: Apache-2.0 Imports: 15 Imported by: 2

Documentation

Index

Constants

View Source
const (
	// the ipRangeSize for Filestore instances
	IpRangeSize = 29

	// the ipRangeSize for enterprise tier Filestore instances
	IpRangeSizeEnterprise = 26

	// the ipRangeSize for High Scale tier Filestore instances
	IpRangeSizeHighScale = 24
)
View Source
const (
	InstanceURISplitLen        = 6
	ShareURISplitLen           = 8
	MultishareCSIVolIdSplitLen = 6
	SourceVolumeIdSplitLen     = 4

	MinMultishareInstanceSizeBytes    int64 = 1 * Tb
	MaxMultishareInstanceSizeBytes    int64 = 10 * Tb
	MaxShareSizeBytes                 int64 = 1 * Tb
	MinShareSizeBytes                 int64 = 100 * Gb
	DefaultStepSizeGb                 int64 = MinMultishareInstanceSizeBytes / Gb
	MaxSharesPerInstance                    = 10
	NewMultishareInstancePrefix             = "fs-"
	ParamMultishareInstanceScLabelKey       = "storage_gke_io_storage-class-id"

	// 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

	// configurable max shares consts
	ConfigurablePackMinShareSizeBytes int64 = 10 * Gb
)
View Source
const (
	OpVerbCreate = "create"
	OpVerbDelete = "delete"
	OpVerbUpdate = "update"
)
View Source
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"
)
View Source
const (
	VolumeOperationAlreadyExistsFmt = "" /* 132-byte string literal not displayed */
)

Variables

This section is empty.

Functions

func AlignBytes added in v1.2.1

func AlignBytes(currBytes int64, stepBytes int64) int64

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 BackupVolumeSourceToCSIVolumeHandle(mode, sourceInstance, sourceShare string) (string, error)

func BuildConfig added in v1.5.0

func BuildConfig(kubeconfig string) (*rest.Config, error)

func BytesToGb added in v0.3.1

func BytesToGb(bytes int64) int64

func CheckLabelValueRegex added in v1.2.0

func CheckLabelValueRegex(value string) error

func ConvertLabelsStringToMap added in v0.3.1

func ConvertLabelsStringToMap(labels string) (map[string]string, error)

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 ConvertVolToShareName(csiVolName string) string

func ErrCodePtr added in v1.3.11

func ErrCodePtr(code codes.Code) *codes.Code

func GbToBytes

func GbToBytes(gbs int64) int64

func GetBackupLocation added in v0.3.1

func GetBackupLocation(params map[string]string) string

func GetMultishareOpsTimeoutConfig added in v1.2.0

func GetMultishareOpsTimeoutConfig(opType OperationType) (time.Duration, time.Duration, error)

func GetRegionFromZone added in v0.3.1

func GetRegionFromZone(location string) (string, error)

GetRegionFromZone return the corresponding region name based on a zone name Example "us-central1-a" return "us-central1"

func InstanceInfoNameToInstanceURI added in v1.5.0

func InstanceInfoNameToInstanceURI(iiName string) string

this function replaces "." in instanceInfo name string with "/" to reconstruct instanceURI

func InstanceStateToCRDStatus added in v1.4.1

func InstanceStateToCRDStatus(state string) (v1.FilestoreStatus, error)

func InstanceURIToInstanceInfoName added in v1.5.0

func InstanceURIToInstanceInfoName(instanceURI string) string

this function replaces "/" in instanceURI with "." to comply with custom resource naming rule

func IsAligned added in v1.3.0

func IsAligned(curSizeBytes int64, expectedBytes int64) bool

func IsBackupHandle added in v0.3.1

func IsBackupHandle(handle string) (bool, error)

func IsSnapshotTypeSupported added in v0.3.1

func IsSnapshotTypeSupported(params map[string]string) (bool, error)

func Max

func Max(a, b int64) int64

func MbToBytes added in v1.2.1

func MbToBytes(mbs int64) int64

func Min

func Min(a, b int64) int64

func ParseInstanceURI added in v1.2.0

func ParseInstanceURI(instanceURI string) (string, string, string, error)

func ParseShareURI added in v1.2.0

func ParseShareURI(shareURI string) (string, string, string, string, error)

func ParseTimestamp added in v0.3.1

func ParseTimestamp(timestamp string) (*timestamppb.Timestamp, error)

func RoundBytesToGb

func RoundBytesToGb(bytes int64) int64

Round up to the nearest Gb

func ShareInfoToShareName added in v1.5.0

func ShareInfoToShareName(siName string) string

func ShareStateToCRDStatus added in v1.4.1

func ShareStateToCRDStatus(state string) (v1.FilestoreStatus, error)

func ShareToShareInfoName added in v1.5.0

func ShareToShareInfoName(shareName string) string

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
	ShareCreate
	ShareDelete
	ShareUpdate
	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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL