util

package
v1.3.0-alpha.4 Latest Latest
Warning

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

Go to latest
Published: May 17, 2016 License: Apache-2.0 Imports: 21 Imported by: 0

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.

Example (NoTrailingNewline)
ld := NewLineDelimiter(os.Stdout, "|")
defer ld.Flush()
fmt.Fprint(ld, "  Hello  \n  World  ")
Output:

|  Hello  |
|  World  |
Example (TrailingNewline)
ld := NewLineDelimiter(os.Stdout, "|")
defer ld.Flush()
fmt.Fprint(ld, "  Hello  \n  World  \n")
Output:

|  Hello  |
|  World  |
||

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllPtrFieldsNil added in v0.8.0

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 added in v1.1.0

func ApplyRLimitForSelf(maxOpenFiles uint64)

func CompileRegexps

func CompileRegexps(regexpStrings []string) ([]*regexp.Regexp, error)

Takes a list of strings and compiles them into a list of regular expressions

func ExecuteTemplate added in v0.10.0

func ExecuteTemplate(w io.Writer, templateText string, data interface{}) error

ExecuteTemplate executes templateText with data and output written to w.

func ExecuteTemplateToString added in v0.10.0

func ExecuteTemplateToString(templateText string, data interface{}) (string, error)

func FileExists added in v0.19.0

func FileExists(filename string) (bool, error)

func FlushLogs

func FlushLogs()

FlushLogs flushes logs immediately.

func InitLogs

func InitLogs()

InitLogs initializes logs the way we want for kubernetes.

func Int32Ptr

func Int32Ptr(i int32) *int32

Int32Ptr returns a pointer to an int32

func Int32PtrDerefOr

func Int32PtrDerefOr(ptr *int32, def int32) int32

Int32PtrDerefOr dereference the int32 ptr and returns it i not nil, else returns def.

func IntPtr added in v1.2.0

func IntPtr(i int) *int

IntPtr returns a pointer to an int

func IntPtrDerefOr added in v1.2.0

func IntPtrDerefOr(ptr *int, def int) int

IntPtrDerefOr dereference the int ptr and returns it i not nil, else returns def.

func NewLogger

func NewLogger(prefix string) *log.Logger

NewLogger creates a new log.Logger which sends logs to glog.Info.

func NewUUID added in v0.5.1

func NewUUID() types.UID

func ReadDirNoExit added in v1.1.0

func ReadDirNoExit(dirname string) ([]os.FileInfo, []error, error)

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 added in v0.16.0

func RunInResourceContainer(containerName string) error

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 Umask added in v1.1.0

func Umask(mask int) (old int, err error)

func UsingSystemdInitSystem added in v0.20.0

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.

Types

type Clock added in v0.8.0

type Clock interface {
	Now() time.Time
	Since(time.Time) time.Duration
	After(d time.Duration) <-chan time.Time
	Sleep(d time.Duration)
	Tick(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 FakeClock added in v0.8.0

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

FakeClock implements Clock, but returns an arbitrary time.

func NewFakeClock added in v1.2.0

func NewFakeClock(t time.Time) *FakeClock

func (*FakeClock) After added in v1.2.0

func (f *FakeClock) After(d time.Duration) <-chan time.Time

Fake version of time.After(d).

func (*FakeClock) HasWaiters added in v1.2.0

func (f *FakeClock) HasWaiters() bool

Returns true if After has been called on f but not yet satisfied (so you can write race-free tests).

func (*FakeClock) Now added in v0.8.0

func (f *FakeClock) Now() time.Time

Now returns f's time.

func (*FakeClock) SetTime added in v1.2.0

func (f *FakeClock) SetTime(t time.Time)

Sets the time.

func (*FakeClock) Since added in v0.15.0

func (f *FakeClock) Since(ts time.Time) time.Duration

Since returns time since the time in f.

func (*FakeClock) Sleep added in v1.2.0

func (f *FakeClock) Sleep(d time.Duration)

func (*FakeClock) Step added in v1.1.0

func (f *FakeClock) Step(d time.Duration)

Move clock by Duration, notify anyone that's called After or Tick

func (*FakeClock) Tick

func (f *FakeClock) Tick(d time.Duration) <-chan time.Time

type GlogWriter

type GlogWriter struct{}

GlogWriter serves as a bridge between the standard log package and the glog package.

func (GlogWriter) Write

func (writer GlogWriter) Write(data []byte) (n int, err error)

Write implements the io.Writer interface.

type IntervalClock added in v1.2.0

type IntervalClock struct {
	Time     time.Time
	Duration time.Duration
}

IntervalClock implements Clock, but each invocation of Now steps the clock forward the specified duration

func (*IntervalClock) After added in v1.2.0

func (*IntervalClock) After(d time.Duration) <-chan time.Time

Unimplemented, will panic. TODO: make interval clock use FakeClock so this can be implemented.

func (*IntervalClock) Now added in v1.2.0

func (i *IntervalClock) Now() time.Time

Now returns i's time.

func (*IntervalClock) Since added in v1.2.0

func (i *IntervalClock) Since(ts time.Time) time.Duration

Since returns time since the time in i.

func (*IntervalClock) Sleep added in v1.2.0

func (*IntervalClock) Sleep(d time.Duration)

func (*IntervalClock) Tick

func (*IntervalClock) Tick(d time.Duration) <-chan time.Time

Unimplemented, will panic. TODO: make interval clock use FakeClock so this can be implemented.

type LineDelimiter added in v1.0.0

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

A Line Delimiter is a filter that will

func NewLineDelimiter added in v1.0.0

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 added in v1.0.0

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.

func (*LineDelimiter) Write added in v1.0.0

func (ld *LineDelimiter) Write(buf []byte) (n int, err error)

Write writes buf to the LineDelimiter ld. The only errors returned are ones encountered while writing to the underlying output stream.

type RealClock added in v0.8.0

type RealClock struct{}

RealClock really calls time.Now()

func (RealClock) After added in v1.2.0

func (RealClock) After(d time.Duration) <-chan time.Time

Same as time.After(d).

func (RealClock) Now added in v0.8.0

func (RealClock) Now() time.Time

Now returns the current time.

func (RealClock) Since added in v0.15.0

func (RealClock) Since(ts time.Time) time.Duration

Since returns time since the specified timestamp.

func (RealClock) Sleep added in v1.2.0

func (RealClock) Sleep(d time.Duration)

func (RealClock) Tick

func (RealClock) Tick(d time.Duration) <-chan time.Time

type Runner added in v0.5.1

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.

func NewRunner added in v0.5.1

func NewRunner(f ...func(stop chan struct{})) *Runner

NewRunner makes a runner for the given function(s). The function(s) should loop until the channel is closed.

func (*Runner) Start added in v0.5.1

func (r *Runner) Start()

Start begins running.

func (*Runner) Stop added in v0.5.1

func (r *Runner) Stop()

Stop stops running.

type StringFlag added in v0.10.0

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 added in v0.18.0

func NewStringFlag(defaultVal string) StringFlag

func (*StringFlag) Default added in v0.10.0

func (f *StringFlag) Default(value string)

func (StringFlag) Provided added in v0.10.0

func (f StringFlag) Provided() bool

func (*StringFlag) Set added in v0.10.0

func (f *StringFlag) Set(value string) error

func (StringFlag) String added in v0.10.0

func (f StringFlag) String() string

func (*StringFlag) Type added in v0.10.0

func (f *StringFlag) Type() string

func (StringFlag) Value added in v0.10.0

func (f StringFlag) Value() string

type Trace added in v0.18.0

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

func NewTrace added in v0.18.0

func NewTrace(name string) *Trace

func (*Trace) Log added in v0.18.0

func (t *Trace) Log()

func (*Trace) LogIfLong added in v0.18.0

func (t *Trace) LogIfLong(threshold time.Duration)

func (*Trace) Step added in v0.18.0

func (t *Trace) Step(msg string)

func (*Trace) TotalTime added in v0.18.0

func (t *Trace) TotalTime() time.Duration

Directories

Path Synopsis
Package bandwidth provides utilities for bandwidth shaping
Package bandwidth provides utilities for bandwidth shaping
Package chown provides an interface and implementations for things that run run the chmod system call.
Package chown provides an interface and implementations for things that run run the chmod system call.
Package chown provides utilities to chown a path
Package chown provides utilities to chown a path
Package config provides utility objects for decoupling sources of configuration and the actual configuration state.
Package config provides utility objects for decoupling sources of configuration and the actual configuration state.
Package dbus provides an injectable interface and implementations for D-Bus communication
Package dbus provides an injectable interface and implementations for D-Bus communication
Package errors implements various utility functions and types around errors.
Package errors implements various utility functions and types around errors.
Package exec provides an injectable interface and implementations for running commands.
Package exec provides an injectable interface and implementations for running commands.
Package flushwriter implements a wrapper for a writer that flushes on every write if that writer implements the io.Flusher interface
Package flushwriter implements a wrapper for a writer that flushes on every write if that writer implements the io.Flusher interface
Package framer implements simple frame decoding techniques for an io.ReadCloser
Package framer implements simple frame decoding techniques for an io.ReadCloser
Package goroutinemap implements a data structure for managing go routines by name.
Package goroutinemap implements a data structure for managing go routines by name.
Package httpstream adds multiplexed streaming support to HTTP requests and responses via connection upgrades.
Package httpstream adds multiplexed streaming support to HTTP requests and responses via connection upgrades.
Package intstr is a generated protocol buffer package.
Package intstr is a generated protocol buffer package.
Package iptables provides an interface and implementations for running iptables commands.
Package iptables provides an interface and implementations for running iptables commands.
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 limitwriter provides a writer that only allows a certain number of bytes to be written.
Package limitwriter provides a writer that only allows a certain number of bytes to be written.
Package mount defines an interface to mounting filesystems.
Package mount defines an interface to mounting filesystems.
net
Package oom implements utility functions relating to out of memory management.
Package oom implements utility functions relating to out of memory management.
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 procfs implements utility functions relating to the /proc mount.
Package procfs implements utility functions relating to the /proc mount.
Package proxy provides transport and upgrade support for proxies
Package proxy provides transport and upgrade support for proxies
Package rand provides utilities related to randomization.
Package rand provides utilities related to randomization.
Package selinux contains selinux utility functions.
Package selinux contains selinux utility functions.
Package sets has auto-generated set types.
Package sets has auto-generated set types.
types
Package types just provides input types to the set generator.
Package types just provides input types to the set generator.
Package slice provides utility methods for common operations on slices.
Package slice provides utility methods for common operations on slices.
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: * Fair: items processed in the order in which they are added.
Package workqueue provides a simple queue that supports the following features: * Fair: items processed in the order in which they are added.
Package wsstream contains utilities for streaming content over WebSockets.
Package wsstream contains utilities for streaming content over WebSockets.

Jump to

Keyboard shortcuts

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