kubernetes: github.com/igm/kubernetes/pkg/util Index | Files | Directories

package util

import "github.com/igm/kubernetes/pkg/util"

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

Package Files

diff.go doc.go error_list.go fake_handler.go list.go logs.go net.go runner.go set.go throttle.go time.go util.go uuid.go validation.go

Variables

var ReallyCrash bool

For testing, bypass HandleCrash.

func CompileRegexps Uses

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

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

func FlushLogs Uses

func FlushLogs()

FlushLogs flushes logs immediately.

func Forever Uses

func Forever(f func(), period time.Duration)

Forever loops forever running f every d. Catches any panics, and keeps going.

func HandleCrash Uses

func HandleCrash()

HandleCrash simply catches a crash and logs an error. Meant to be called via defer.

func InitLogs Uses

func InitLogs()

InitLogs initializes logs the way we want for kubernetes.

func IsCIdentifier Uses

func IsCIdentifier(value string) bool

IsCIdentifier tests for a string that conforms the definition of an identifier in C. This checks the format, but not the length.

func IsDNS952Label Uses

func IsDNS952Label(value string) bool

func IsDNSLabel Uses

func IsDNSLabel(value string) bool

IsDNSLabel tests for a string that conforms to the definition of a label in DNS (RFC 1035/1123).

func IsDNSSubdomain Uses

func IsDNSSubdomain(value string) bool

IsDNSSubdomain tests for a string that conforms to the definition of a subdomain in DNS (RFC 1035/1123).

func IsValidPortNum Uses

func IsValidPortNum(port int) bool

IsValidPortNum tests that the argument is a valid, non-zero port number.

func NewLogger Uses

func NewLogger(prefix string) *log.Logger

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

func ObjectDiff Uses

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 Uses

func ObjectGoPrintDiff(a, b interface{}) string

ObjectGoPrintDiff is like ObjectDiff, but uses go's %#v formatter to print the objects, in case json isn't showing you the difference. (reflect.DeepEqual makes a distinction between nil and empty slices, for example, even though nothing else really does.)

func StringDiff Uses

func StringDiff(a, b string) string

StringDiff diffs a and b and returns a human readable diff.

type ErrorList Uses

type ErrorList []error

ErrorList is a collection of errors. This does not implement the error interface to avoid confusion where an empty ErrorList would still be an error (non-nil). To produce a single error instance from an ErrorList, use the ToError() method, which will return nil for an empty ErrorList.

func (ErrorList) ToError Uses

func (list ErrorList) ToError() error

ToError converts an ErrorList into a "normal" error, or nil if the list is empty.

type FakeHandler Uses

type FakeHandler struct {
    RequestReceived *http.Request
    RequestBody     string
    StatusCode      int
    ResponseBody    string
    // For logging - you can use a *testing.T
    // This will keep log messages associated with the test.
    T   LogInterface
    // contains filtered or unexported fields
}

FakeHandler is to assist in testing HTTP requests. Notice that FakeHandler is not thread safe and you must not direct traffic to except for the request you want to test. You can do this by hiding it in an http.ServeMux.

func (*FakeHandler) ServeHTTP Uses

func (f *FakeHandler) ServeHTTP(response http.ResponseWriter, request *http.Request)

func (*FakeHandler) ValidateRequest Uses

func (f *FakeHandler) ValidateRequest(t TestInterface, expectedPath, expectedMethod string, body *string)

ValidateRequest verifies that FakeHandler received a request with expected path, method, and body.

type GlogWriter Uses

type GlogWriter struct{}

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

func (GlogWriter) Write Uses

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

Write implements the io.Writer interface.

type IP Uses

type IP net.IP

IP adapts net.IP for use as a flag.

func (*IP) Set Uses

func (ip *IP) Set(value string) error

func (IP) String Uses

func (ip IP) String() string

type IPNet Uses

type IPNet net.IPNet

IPNet adapts net.IPNet for use as a flag.

func (*IPNet) Set Uses

func (ipnet *IPNet) Set(value string) error

func (IPNet) String Uses

func (ipnet IPNet) String() string

type IntOrString Uses

type IntOrString struct {
    Kind   IntstrKind
    IntVal int
    StrVal string
}

IntOrString is a type that can hold an int or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.

func NewIntOrStringFromInt Uses

func NewIntOrStringFromInt(val int) IntOrString

NewIntOrStringFromInt creates an IntOrString object with an int value.

func NewIntOrStringFromString Uses

func NewIntOrStringFromString(val string) IntOrString

NewIntOrStringFromString creates an IntOrString object with a string value.

func (IntOrString) GetYAML Uses

func (intstr IntOrString) GetYAML() (tag string, value interface{})

GetYAML implements the yaml.Getter interface.

func (IntOrString) MarshalJSON Uses

func (intstr IntOrString) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaller interface.

func (*IntOrString) SetYAML Uses

func (intstr *IntOrString) SetYAML(tag string, value interface{}) bool

SetYAML implements the yaml.Setter interface.

func (*IntOrString) UnmarshalJSON Uses

func (intstr *IntOrString) UnmarshalJSON(value []byte) error

UnmarshalJSON implements the json.Unmarshaller interface.

type IntstrKind Uses

type IntstrKind int

IntstrKind represents the stored type of IntOrString.

const (
    IntstrInt    IntstrKind = iota // The IntOrString holds an int.
    IntstrString                   // The IntOrString holds a string.
)

type LogInterface Uses

type LogInterface interface {
    Logf(format string, args ...interface{})
}

LogInterface is a simple interface to allow injection of Logf to report serving errors.

type RateLimiter Uses

type RateLimiter interface {
    // CanAccept returns true if the rate is below the limit, false otherwise
    CanAccept() bool
    // Stop stops the rate limiter, subsequent calls to CanAccept will return false
    Stop()
}

func NewTokenBucketRateLimiter Uses

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, the rate limiter spawns a go routine which refills the bucket with one token at a rate of 'qps'. The maximum number of tokens in the bucket is capped at 'burst'. When done with the limiter, Stop() must be called to halt the associated goroutine.

type Runner Uses

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 Uses

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 Uses

func (r *Runner) Start()

Start begins running.

func (*Runner) Stop Uses

func (r *Runner) Stop()

Stop stops running.

type StringList Uses

type StringList []string

func (*StringList) Set Uses

func (sl *StringList) Set(value string) error

func (*StringList) String Uses

func (sl *StringList) String() string

type StringSet Uses

type StringSet map[string]empty

StringSet is a set of strings, implemented via map[string]struct{} for minimal memory consumption.

func NewStringSet Uses

func NewStringSet(items ...string) StringSet

NewStringSet creates a StringSet from a list of values.

func (StringSet) Delete Uses

func (s StringSet) Delete(item string)

Delete removes item from the set.

func (StringSet) Has Uses

func (s StringSet) Has(item string) bool

Has returns true iff item is contained in the set.

func (StringSet) HasAll Uses

func (s StringSet) HasAll(items ...string) bool

HasAll returns true iff all items are contained in the set.

func (StringSet) Insert Uses

func (s StringSet) Insert(items ...string)

Insert adds items to the set.

func (StringSet) IsSuperset Uses

func (s1 StringSet) IsSuperset(s2 StringSet) bool

IsSuperset returns true iff s1 is a superset of s2.

func (StringSet) Len Uses

func (s StringSet) Len() int

Len returns the size of the set.

func (StringSet) List Uses

func (s StringSet) List() []string

List returns the contents as a sorted string slice.

type TestInterface Uses

type TestInterface interface {
    Errorf(format string, args ...interface{})
    Logf(format string, args ...interface{})
}

TestInterface is a simple interface providing Errorf, to make injection for testing easier (insert 'yo dawg' meme here).

type Time Uses

type Time struct {
    time.Time
}

Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.

func Date Uses

func Date(year int, month time.Month, day, hour, min, sec, nsec int, loc *time.Location) Time

Date returns the Time corresponding to the supplied parameters by wrapping time.Date.

func Now Uses

func Now() Time

Now returns the current local time.

func Unix Uses

func Unix(sec int64, nsec int64) Time

Unix returns the local time corresponding to the given Unix time by wrapping time.Unix.

func (Time) GetYAML Uses

func (t Time) GetYAML() (tag string, value interface{})

GetYAML implements the yaml.Getter interface.

func (Time) MarshalJSON Uses

func (t Time) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface.

func (Time) Rfc3339Copy Uses

func (t Time) Rfc3339Copy() Time

Rfc3339Copy returns a copy of the Time at second-level precision.

func (*Time) SetYAML Uses

func (t *Time) SetYAML(tag string, value interface{}) bool

SetYAML implements the yaml.Setter interface.

func (*Time) UnmarshalJSON Uses

func (t *Time) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaller interface.

type UUID Uses

type UUID interface {
    String() string
}

func NewUUID Uses

func NewUUID() UUID

*

* The UUID package is naive and can generate identical UUIDs if the time interval is quick enough.
* Block subsequent UUIDs for 200 Nanoseconds, the UUID uses 100 ns increments, we block for 200 to be safe
* Blocks in a go routine, so that the caller doesn't have to wait.
* TODO: save old unused UUIDs so that no one has to block.

Directories

PathSynopsis
configPackage config provides utility objects for decoupling sources of configuration and the actual configuration state.
execPackage exec provides an injectable interface and implementations for running commands.
iptablesPackage iptables provides an interface and implementations for running iptables commands.
waitPackage wait provides tools for polling or listening for changes to a condition.

Package util imports 17 packages (graph). Updated 2018-04-17. Refresh now. Tools for package owners.