util

package
v1.7.2-rc2 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2024 License: Apache-2.0 Imports: 50 Imported by: 11

Documentation

Index

Constants

View Source
const (
	KiB = 1024
	MiB = 1024 * KiB
	GiB = 1024 * MiB
	TiB = 1024 * GiB
	PiB = 1024 * TiB
	EiB = 1024 * PiB

	VolumeStackPrefix     = "volume-"
	ControllerServiceName = "controller"
	ReplicaServiceName    = "replica"

	ReplicaDirectory             = "/replicas/"
	RegularDeviceDirectory       = "/dev/longhorn/"
	EncryptedDeviceDirectory     = "/dev/mapper/"
	TemporaryMountPointDirectory = "/tmp/mnt/"

	DefaultKubernetesTolerationKey = "kubernetes.io"

	DiskConfigFile = "longhorn-disk.cfg"

	SizeAlignment        = 2 * MiB
	MinimalVolumeSize    = 10 * MiB
	MinimalVolumeSizeXFS = 300 * MiB // See https://github.com/longhorn/longhorn/issues/8488

	MaxExt4VolumeSize = 16 * TiB
	MaxXfsVolumeSize  = 8*EiB - 1

	RandomIDLenth = 8

	DeterministicUUIDNamespace = "08958d54-65cd-4d87-8627-9831a1eab170" // Arbitrarily generated.
)

Variables

View Source
var (
	APIRetryInterval       = 500 * time.Millisecond
	APIRetryJitterInterval = 50 * time.Millisecond
	APIRetryCounts         = 10
)

Functions

func AddFinalizer

func AddFinalizer(name string, obj runtime.Object) error

func AutoCorrectName added in v1.1.1

func AutoCorrectName(name string, maxLength int) string

AutoCorrectName converts name to lowercase, and correct overlength name by replaces the name suffix with 8 char from its checksum to ensure uniquenedoss.

func Backoff

func Backoff(maxDuration time.Duration, timeoutMessage string, f func() (bool, error)) error

func CapitalizeFirstLetter added in v1.4.0

func CapitalizeFirstLetter(input string) string

func CheckBackupType

func CheckBackupType(backupTarget string) (string, error)

func CmdOutLines

func CmdOutLines(cmd *exec.Cmd, cancel <-chan interface{}) (<-chan string, <-chan error)

func Contains added in v1.2.0

func Contains(list []string, item string) bool

func ConvertFirstCharToLower added in v1.5.0

func ConvertFirstCharToLower(input string) string

func ConvertSize

func ConvertSize(size interface{}) (int64, error)

func ConvertToCamel added in v1.5.0

func ConvertToCamel(input, separator string) string

func CopyReq

func CopyReq(req *http.Request) *http.Request

func DeleteDiskPathReplicaSubdirectoryAndDiskCfgFile added in v1.0.0

func DeleteDiskPathReplicaSubdirectoryAndDiskCfgFile(path string) error

func DeterministicUUID added in v1.4.3

func DeterministicUUID(data string) string

DeterministicUUID returns a string representation of a version 5 UUID based on the provided string. The output is always the same for a given input. For example, the volume controller calls this function with the concatenated UIDs of two Longhorn volumes: DeterministicUUID("5d8209ef-87ee-422e-9fd7-5b400f985f315d8209ef-87ee-422e-9fd7-5b400f985f31") -> "25bc2af7-30ea-50cf-afc7-900275ba5866"

func EncodeToYAMLFile added in v1.4.0

func EncodeToYAMLFile(obj interface{}, path string) (err error)

func FilteredLoggingHandler added in v0.4.1

func FilteredLoggingHandler(filteredPaths map[string]struct{}, writer io.Writer, router http.Handler) http.Handler

func FinalizerExists

func FinalizerExists(name string, obj runtime.Object) bool

func FormatLocalTime

func FormatLocalTime(t time.Time, loc *time.Location) string

func FormatTimeZ

func FormatTimeZ(t time.Time) string

func FromMillis

func FromMillis(t int64) time.Time

func GetAnnotation added in v1.1.0

func GetAnnotation(obj runtime.Object, annotationKey string) (string, error)

func GetBackupID

func GetBackupID(backupURL string) (string, error)

func GetChecksumSHA256 added in v1.3.0

func GetChecksumSHA256(data []byte) string

func GetChecksumSHA512

func GetChecksumSHA512(data []byte) string

func GetDataEngineForDiskType added in v1.6.0

func GetDataEngineForDiskType(diskType longhorn.DiskType) longhorn.DataEngineType

func GetDistinctTolerations added in v1.1.0

func GetDistinctTolerations(tolerationList []corev1.Toleration) []corev1.Toleration

func GetLocalIPs

func GetLocalIPs() ([]string, error)

func GetNamespace added in v1.5.0

func GetNamespace(key string) string

func GetNodeSelectorTermMatchExpressionNodeName added in v1.4.3

func GetNodeSelectorTermMatchExpressionNodeName(nodeName string) corev1.NodeSelectorTerm

func GetPodIP added in v1.4.0

func GetPodIP(pod *corev1.Pod) (string, error)

func GetPossibleReplicaDirectoryNames added in v1.3.0

func GetPossibleReplicaDirectoryNames(diskPath string) (replicaDirectoryNames map[string]string, err error)

func GetRequiredEnv

func GetRequiredEnv(key string) (string, error)

func GetSchemeFromURL added in v1.5.0

func GetSchemeFromURL(url string) string

func GetSortedKeysFromMap added in v1.1.2

func GetSortedKeysFromMap(maps interface{}) []string

func GetStringChecksum

func GetStringChecksum(data string) string

func GetStringChecksumSHA256 added in v1.3.0

func GetStringChecksumSHA256(data string) string

func GetStringHash added in v1.2.0

func GetStringHash(data string) string

func GetTolerationChecksum added in v1.1.0

func GetTolerationChecksum(t corev1.Toleration) string

func HasLocalStorageInDeployment added in v1.3.0

func HasLocalStorageInDeployment(deployment *appsv1.Deployment) bool

HasLocalStorageInDeployment returns true if deployment has any local storage.

func IsKubernetesDefaultToleration added in v0.6.0

func IsKubernetesDefaultToleration(toleration corev1.Toleration) bool

func IsKubernetesVersionAtLeast added in v0.8.0

func IsKubernetesVersionAtLeast(kubeClient clientset.Interface, vers string) (bool, error)

func IsMigratableVolume added in v1.7.0

func IsMigratableVolume(v *longhorn.Volume) bool

func IsVolumeMigrating added in v1.5.4

func IsVolumeMigrating(v *longhorn.Volume) bool

func LimitToPeriod

func LimitToPeriod(p, t [2]time.Time) [2]time.Time

func MinInt added in v1.1.1

func MinInt(a, b int) int

func Now

func Now() string

func ParseLabels

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

ParseLabels parses the provided Labels based on longhorn-engine's implementation: https://github.com/longhorn/longhorn-engine/blob/master/util/util.go

func ParseLocalTime

func ParseLocalTime(ts string, loc *time.Location) (time.Time, error)

func ParsePeriod

func ParsePeriod(s string, loc *time.Location) ([2]time.Time, error)

func ParseTime

func ParseTime(t string) (time.Time, error)

func ParseTimeZ

func ParseTimeZ(s string) (time.Time, error)

func RandomID

func RandomID() string

func RegisterShutdownChannel

func RegisterShutdownChannel(done chan struct{})

func RemoveFinalizer

func RemoveFinalizer(name string, obj runtime.Object) error

func RemoveNewlines added in v1.5.0

func RemoveNewlines(input string) string

func RetryOnConflictCause

func RetryOnConflictCause(fn func() (interface{}, error)) (interface{}, error)

func RetryOnErrorCondition added in v1.2.0

func RetryOnErrorCondition(fn func() (interface{}, error), predicate func(error) bool) (interface{}, error)

func RetryOnNotFoundCause added in v1.2.0

func RetryOnNotFoundCause(fn func() (interface{}, error)) (interface{}, error)

func RoundUpSize

func RoundUpSize(size int64) int64

func RunAsync added in v0.3.1

func RunAsync(wg *sync.WaitGroup, f func())

func SetAnnotation added in v1.1.0

func SetAnnotation(obj runtime.Object, annotationKey, annotationValue string) error

func SortKeys added in v1.4.0

func SortKeys(mapObj interface{}) ([]string, error)

SortKeys accepts a map with string keys and returns a sorted slice of keys

func SplitStringToMap

func SplitStringToMap(str, separator string) map[string]struct{}

func TimestampAfterDuration added in v1.7.0

func TimestampAfterDuration(d time.Duration) string

func TimestampAfterTimeout

func TimestampAfterTimeout(ts string, timeout time.Duration) bool

func TimestampAfterTimestamp added in v1.5.4

func TimestampAfterTimestamp(timestamp1 string, timestamp2 string) (bool, error)

TimestampAfterTimestamp returns true if timestamp1 is after timestamp2. It returns false otherwise and an error if either timestamp cannot be parsed.

func TimestampWithinLimit added in v0.8.0

func TimestampWithinLimit(latest time.Time, ts string, limit time.Duration) bool

func TolerationListToMap added in v0.6.0

func TolerationListToMap(tolerationList []corev1.Toleration) map[string]corev1.Toleration

func TrimFilesystem added in v1.4.0

func TrimFilesystem(volumeName string, encryptedDevice bool) error

func UUID

func UUID() string

func ValidateBackupMode added in v1.7.0

func ValidateBackupMode(backupMode string) error

func ValidateChecksumSHA512 added in v1.2.3

func ValidateChecksumSHA512(checksum string) bool

func ValidateName

func ValidateName(name string) bool

func ValidateRandomID added in v1.3.0

func ValidateRandomID(id string) bool

func ValidateSnapshotLabels added in v0.6.0

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

func ValidateString added in v1.6.0

func ValidateString(name string) bool

func ValidateTags added in v0.6.0

func ValidateTags(inputTags []string) ([]string, error)

func VerifySnapshotLabels added in v1.5.0

func VerifySnapshotLabels(labels map[string]string) error

func WaitForAPI

func WaitForAPI(url string, timeout int) error

WaitForAPI timeout in second

func WaitForDevice

func WaitForDevice(dev string, timeout int) error

WaitForDevice timeout in second

func WaitForResourceDeletion added in v1.5.1

func WaitForResourceDeletion(kubeClient *clientset.Clientset, name, namespace, resource string, maxRetryForDeletion int, getFunc ResourceGetFunc) error

Types

type AtomicCounter added in v1.3.0

type AtomicCounter struct {
	// contains filtered or unexported fields
}

func (*AtomicCounter) DecreaseCount added in v1.3.0

func (ac *AtomicCounter) DecreaseCount()

func (*AtomicCounter) GetCount added in v1.3.0

func (ac *AtomicCounter) GetCount() int32

func (*AtomicCounter) IncreaseCount added in v1.3.0

func (ac *AtomicCounter) IncreaseCount()

func (*AtomicCounter) ResetCount added in v1.3.0

func (ac *AtomicCounter) ResetCount()

type Counter added in v1.3.0

type Counter interface {
	GetCount() int32
	IncreaseCount()
	DecreaseCount()
	ResetCount()
}

func NewAtomicCounter added in v1.3.0

func NewAtomicCounter() Counter

type DiskConfig added in v0.8.1

type DiskConfig struct {
	DiskName   string              `json:"diskName"`
	DiskUUID   string              `json:"diskUUID"`
	DiskDriver longhorn.DiskDriver `json:"diskDriver"`
}

type InformerFactories added in v1.5.2

type InformerFactories struct {
	KubeInformerFactory                  informers.SharedInformerFactory
	KubeNamespaceFilteredInformerFactory informers.SharedInformerFactory
	LhInformerFactory                    lhinformers.SharedInformerFactory
}

func NewInformerFactories added in v1.5.2

func NewInformerFactories(namespace string, kubeClient clientset.Interface, lhClient versioned.Interface, resyncPeriod time.Duration) *InformerFactories

func (*InformerFactories) Start added in v1.5.2

func (f *InformerFactories) Start(stopCh <-chan struct{})

type MetadataConfig

type MetadataConfig struct {
	DriverName          string
	Image               string
	OrcImage            string
	DriverContainerName string
}

type MultiError added in v1.2.5

type MultiError map[string]struct{}

func NewMultiError added in v1.2.5

func NewMultiError(errs ...string) MultiError

func (MultiError) Append added in v1.2.5

func (me MultiError) Append(errs MultiError)

func (MultiError) Join added in v1.2.5

func (me MultiError) Join() string

func (MultiError) Reset added in v1.4.0

func (me MultiError) Reset()

type ResourceGetFunc added in v1.5.1

type ResourceGetFunc func(kubeClient *clientset.Clientset, name, namespace string) (runtime.Object, error)

type StructField added in v1.5.0

type StructField struct {
	Name  string
	Value interface{}
	Tag   string
}

StructField contains information about a single field in a struct.

type StructFields added in v1.5.0

type StructFields []StructField

func (*StructFields) Append added in v1.5.0

func (sf *StructFields) Append(name StructName, value interface{})

func (*StructFields) AppendCounted added in v1.5.0

func (sf *StructFields) AppendCounted(structMap map[StructName]int)

func (*StructFields) ConvertTag added in v1.5.0

func (sf *StructFields) ConvertTag(name StructName) string

func (*StructFields) NewStruct added in v1.5.0

func (sf *StructFields) NewStruct() interface{}

NewStruct creates a new struct based on the StructFields slice. Returns the new struct as an interface{}.

type StructName added in v1.5.0

type StructName string

type VolumeMeta added in v1.3.0

type VolumeMeta struct {
	Size            int64
	Head            string
	Dirty           bool
	Rebuilding      bool
	Error           string
	Parent          string
	SectorSize      int64
	BackingFilePath string
	BackingFile     interface{}
}

func GetVolumeMeta added in v1.3.0

func GetVolumeMeta(path string) (*VolumeMeta, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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