Documentation ¶
Overview ¶
Package util implements various utility functions used in both testing and implementation of Kubernetes. Package util may not depend on any other package in the Kubernetes package tree.
Index ¶
- func AllPtrFieldsNil(obj interface{}) bool
- func ApplyRLimitForSelf(maxOpenFiles uint64)
- func CertPoolFromFile(filename string) (*x509.CertPool, error)
- func CertsFromPEM(pemCerts []byte) ([]*x509.Certificate, error)
- func CompileRegexps(regexpStrings []string) ([]*regexp.Regexp, error)
- func DeadlockWatchdog(lock sync.Locker, name string, maxLockPeriod time.Duration)
- func DeadlockWatchdogReadLock(lock *sync.RWMutex, name string, maxLockPeriod time.Duration)
- func ExecuteTemplate(w io.Writer, templateText string, data interface{}) error
- func ExecuteTemplateToString(templateText string, data interface{}) (string, error)
- func FileExists(filename string) (bool, error)
- func FlushLogs()
- func GenerateSelfSignedCert(host, certPath, keyPath string, alternateIPs []net.IP, alternateDNS []string) error
- func GetEnvAsFloat64OrFallback(key string, defaultValue float64) (float64, error)
- func GetEnvAsIntOrFallback(key string, defaultValue int) (int, error)
- func GetEnvAsStringOrFallback(key, defaultValue string) string
- func InitFlags()
- func InitLogs()
- func IntPtr(i int) *int
- func IntPtrDerefOr(ptr *int, def int) int
- func NewCRLFWriter(w io.Writer) io.Writer
- func NewLogger(prefix string) *log.Logger
- func NewUUID() types.UID
- func ObjectDiff(a, b interface{}) string
- func ObjectGoPrintDiff(a, b interface{}) string
- func ObjectGoPrintSideBySide(a, b interface{}) string
- func ReadDirNoExit(dirname string) ([]os.FileInfo, []error, error)
- func RunInResourceContainer(containerName string) error
- func StringDiff(a, b string) string
- func Umask(mask int) (old int, err error)
- func UsingSystemdInitSystem() bool
- func WarnWordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName
- func WordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName
- type Backoff
- func (p *Backoff) GC()
- func (p *Backoff) Get(id string) time.Duration
- func (p *Backoff) IsInBackOffSince(id string, eventTime time.Time) bool
- func (p *Backoff) IsInBackOffSinceUpdate(id string, eventTime time.Time) bool
- func (p *Backoff) Next(id string, eventTime time.Time)
- func (p *Backoff) Reset(id string)
- type BoolFlag
- type Cache
- type Clock
- type ConfigurationMap
- type FakeClock
- type GlogWriter
- type IntervalClock
- type LineDelimiter
- type RateLimiter
- type RealClock
- type Runner
- type StringFlag
- type Trace
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllPtrFieldsNil ¶
func AllPtrFieldsNil(obj interface{}) bool
Tests whether all pointer fields in a struct are nil. This is useful when, for example, an API struct is handled by plugins which need to distinguish "no plugin accepted this spec" from "this spec is empty".
This function is only valid for structs and pointers to structs. Any other type will cause a panic. Passing a typed nil pointer will return true.
func ApplyRLimitForSelf ¶
func ApplyRLimitForSelf(maxOpenFiles uint64)
func CertPoolFromFile ¶
CertPoolFromFile returns an x509.CertPool containing the certificates in the given PEM-encoded file. Returns an error if the file could not be read, a certificate could not be parsed, or if the file does not contain any certificates
func CertsFromPEM ¶
func CertsFromPEM(pemCerts []byte) ([]*x509.Certificate, error)
CertsFromPEM returns the x509.Certificates contained in the given PEM-encoded byte array Returns an error if a certificate could not be parsed, or if the data does not contain any certificates
func CompileRegexps ¶
Takes a list of strings and compiles them into a list of regular expressions
func DeadlockWatchdog ¶
func DeadlockWatchdogReadLock ¶
DeadlockWatchdogReadLock creates a watchdog on read/write mutex. If the mutex can not be acquired for read access within 'maxLockPeriod', the program exits via glog.Exitf() or os.Exit() if that fails 'name' is a semantic name that is useful for the user and is printed on exit.
func ExecuteTemplate ¶
ExecuteTemplate executes templateText with data and output written to w.
func ExecuteTemplateToString ¶
func FileExists ¶
func GenerateSelfSignedCert ¶
func GenerateSelfSignedCert(host, certPath, keyPath string, alternateIPs []net.IP, alternateDNS []string) error
GenerateSelfSignedCert creates a self-signed certificate and key for the given host. Host may be an IP or a DNS name You may also specify additional subject alt names (either ip or dns names) for the certificate The certificate will be created with file mode 0644. The key will be created with file mode 0600. If the certificate or key files already exist, they will be overwritten. Any parent directories of the certPath or keyPath will be created as needed with file mode 0755.
func IntPtrDerefOr ¶
IntPtrDerefOr dereference the int ptr and returns it i not nil, else returns def.
func NewCRLFWriter ¶
NewCRLFWriter implements a CR/LF line ending writer used for normalizing text for Windows platforms.
func ObjectDiff ¶
func ObjectDiff(a, b interface{}) string
ObjectDiff writes the two objects out as JSON and prints out the identical part of the objects followed by the remaining part of 'a' and finally the remaining part of 'b'. For debugging tests.
func ObjectGoPrintDiff ¶
func ObjectGoPrintDiff(a, b interface{}) string
ObjectGoPrintDiff is like ObjectDiff, but uses go-spew to print the objects, which shows absolutely everything by recursing into every single pointer (go's %#v formatters OTOH stop at a certain point). This is needed when you can't figure out why reflect.DeepEqual is returning false and nothing is showing you differences. This will.
func ObjectGoPrintSideBySide ¶
func ObjectGoPrintSideBySide(a, b interface{}) string
ObjectGoPrintSideBySide prints a and b as textual dumps side by side, enabling easy visual scanning for mismatches.
func ReadDirNoExit ¶
borrowed from ioutil.ReadDir ReadDir reads the directory named by dirname and returns a list of directory entries, minus those with lstat errors
func RunInResourceContainer ¶
Creates resource-only containerName if it does not already exist and moves the current process to it.
containerName must be an absolute container name.
func StringDiff ¶
StringDiff diffs a and b and returns a human readable diff.
func UsingSystemdInitSystem ¶
func UsingSystemdInitSystem() bool
Detects if using systemd as the init system Please note that simply reading /proc/1/cmdline can be misleading because some installation of various init programs can automatically make /sbin/init a symlink or even a renamed version of their main program. TODO(dchen1107): realiably detects the init system using on the system: systemd, upstart, initd, etc.
func WarnWordSepNormalizeFunc ¶
func WarnWordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName
WarnWordSepNormalizeFunc changes and warns for flags that contain "_" separators
func WordSepNormalizeFunc ¶
func WordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName
WordSepNormalizeFunc changes all flags that contain "_" separators
Types ¶
type Backoff ¶
func NewBackOff ¶
func (*Backoff) GC ¶
func (p *Backoff) GC()
Garbage collect records that have aged past maxDuration. Backoff users are expected to invoke this periodically.
func (*Backoff) IsInBackOffSince ¶
Returns True if the elapsed time since eventTime is smaller than the current backoff window
func (*Backoff) IsInBackOffSinceUpdate ¶
Returns True if time since lastupdate is less than the current backoff window.
type BoolFlag ¶
type BoolFlag struct {
// contains filtered or unexported fields
}
BoolFlag is a boolean flag compatible with flags and pflags that keeps track of whether it had a value supplied or not. Getting this flag to act like a normal bool, where true/false are not required needs a little bit of extra code, example:
f := cmd.Flags().VarPF(&BoolFlagVar, "flagname", "", "help about the flag") f.NoOptDefVal = "true"
type Cache ¶
type Cache []*cacheShard
type Clock ¶
type Clock interface { Now() time.Time Since(time.Time) time.Duration After(d time.Duration) <-chan time.Time }
Clock allows for injecting fake or real clocks into code that needs to do arbitrary things based on time.
type ConfigurationMap ¶
func (*ConfigurationMap) Set ¶
func (m *ConfigurationMap) Set(value string) error
func (*ConfigurationMap) String ¶
func (m *ConfigurationMap) String() string
func (*ConfigurationMap) Type ¶
func (*ConfigurationMap) Type() string
type FakeClock ¶
type FakeClock struct {
// contains filtered or unexported fields
}
FakeClock implements Clock, but returns an arbitrary time.
func NewFakeClock ¶
func (*FakeClock) HasWaiters ¶
Returns true if After has been called on f but not yet satisfied (so you can write race-free tests).
type GlogWriter ¶
type GlogWriter struct{}
GlogWriter serves as a bridge between the standard log package and the glog package.
type IntervalClock ¶
IntervalClock implements Clock, but each invocation of Now steps the clock forward the specified duration
type LineDelimiter ¶
type LineDelimiter struct {
// contains filtered or unexported fields
}
A Line Delimiter is a filter that will
func NewLineDelimiter ¶
func NewLineDelimiter(output io.Writer, delimiter string) *LineDelimiter
NewLineDelimiter allocates a new io.Writer that will split input on lines and bracket each line with the delimiter string. This can be useful in output tests where it is difficult to see and test trailing whitespace.
func (*LineDelimiter) Flush ¶
func (ld *LineDelimiter) Flush() (err error)
Flush all lines up until now. This will assume insert a linebreak at the current point of the stream.
type RateLimiter ¶
type RateLimiter interface { // TryAccept returns true if a token is taken immediately. Otherwise, // it returns false. TryAccept() bool // Accept returns once a token becomes available. Accept() // Stop stops the rate limiter, subsequent calls to CanAccept will return false Stop() // Saturation returns a percentage number which describes how saturated // this rate limiter is. // Usually we use token bucket rate limiter. In that case, // 1.0 means no tokens are available; 0.0 means we have a full bucket of tokens to use. Saturation() float64 }
func NewFakeAlwaysRateLimiter ¶
func NewFakeAlwaysRateLimiter() RateLimiter
func NewFakeNeverRateLimiter ¶
func NewFakeNeverRateLimiter() RateLimiter
func NewTokenBucketRateLimiter ¶
func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter
NewTokenBucketRateLimiter creates a rate limiter which implements a token bucket approach. The rate limiter allows bursts of up to 'burst' to exceed the QPS, while still maintaining a smoothed qps rate of 'qps'. The bucket is initially filled with 'burst' tokens, and refills at a rate of 'qps'. The maximum number of tokens in the bucket is capped at 'burst'.
type RealClock ¶
type RealClock struct{}
RealClock really calls time.Now()
type Runner ¶
type Runner struct {
// contains filtered or unexported fields
}
Runner is an abstraction to make it easy to start and stop groups of things that can be described by a single function which waits on a channel close to exit.
type StringFlag ¶
type StringFlag struct {
// contains filtered or unexported fields
}
StringFlag is a string flag compatible with flags and pflags that keeps track of whether it had a value supplied or not.
func NewStringFlag ¶
func NewStringFlag(defaultVal string) StringFlag
func (*StringFlag) Default ¶
func (f *StringFlag) Default(value string)
func (StringFlag) Provided ¶
func (f StringFlag) Provided() bool
func (*StringFlag) Set ¶
func (f *StringFlag) Set(value string) error
func (StringFlag) String ¶
func (f StringFlag) String() string
func (*StringFlag) Type ¶
func (f *StringFlag) Type() string
func (StringFlag) Value ¶
func (f StringFlag) Value() string
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package errors implements various utility functions and types around errors.
|
Package errors implements various utility functions and types around errors. |
package jsonpath is a template engine using jsonpath syntax, which can be seen at http://goessner.net/articles/JsonPath/.
|
package jsonpath is a template engine using jsonpath syntax, which can be seen at http://goessner.net/articles/JsonPath/. |
Package labels provides utilities to work with Kubernetes labels.
|
Package labels provides utilities to work with Kubernetes labels. |
Package pod provides utilities to work with Kubernetes pod and pod templates.
|
Package pod provides utilities to work with Kubernetes pod and pod templates. |
Package rand provides utilities related to randomization.
|
Package rand provides utilities related to randomization. |
Package sets has auto-generated set types.
|
Package sets has auto-generated set types. |
Package wait provides tools for polling or listening for changes to a condition.
|
Package wait provides tools for polling or listening for changes to a condition. |
Package workqueue provides a simple queue that supports the following features:
|
Package workqueue provides a simple queue that supports the following features: |