utils

package
v0.7.0-rc2 Latest Latest
Warning

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

Go to latest
Published: Oct 7, 2013 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StdWriterPrefixLen = 8
	StdWriterFdIndex   = 0
	StdWriterSizeIndex = 4
)

Variables

View Source
var ErrInvalidStdHeader = errors.New("Unrecognized input header")

Functions

func CheckLocalDns added in v0.4.1

func CheckLocalDns(resolvConf []byte) bool

CheckLocalDns looks into the /etc/resolv.conf, it returns true if there is a local nameserver or if there is no nameserver.

func CompareKernelVersion

func CompareKernelVersion(a, b *KernelVersionInfo) int

Compare two KernelVersionInfo struct. Returns -1 if a < b, = if a == b, 1 it a > b

func CopyDirectory added in v0.3.4

func CopyDirectory(source, dest string) error

FIXME: this is deprecated by CopyWithTar in archive.go

func CopyEscapable

func CopyEscapable(dst io.Writer, src io.ReadCloser) (written int64, err error)

Code c/c from io.Copy() modified to handle escape sequence

func Debugf

func Debugf(format string, a ...interface{})

Debug function, if the debug flag is set, then display. Do nothing otherwise If Docker is in damon mode, also send the debug info on the socket

func DisplayJSONMessagesStream added in v0.6.0

func DisplayJSONMessagesStream(in io.Reader, out io.Writer) error

func Download

func Download(url string, stderr io.Writer) (*http.Response, error)

Request a given URL and return an io.Reader

func FindCgroupMountpoint

func FindCgroupMountpoint(cgroupType string) (string, error)

func GetReleaseVersion added in v0.6.0

func GetReleaseVersion() string

func GetResolvConf added in v0.6.0

func GetResolvConf() ([]byte, error)

GetResolvConf opens and read the content of /etc/resolv.conf. It returns it as byte slice.

func GetTotalUsedFds

func GetTotalUsedFds() int

func Go

func Go(f func() error) chan error

Go is a basic promise implementation: it wraps calls a function in a goroutine, and returns a channel which will later return the function's return value.

func HashData

func HashData(src io.Reader) (string, error)

func HumanDuration

func HumanDuration(d time.Duration) string

HumanDuration returns a human-readable approximation of a duration (eg. "About a minute", "4 hours ago", etc.)

func HumanSize added in v0.4.1

func HumanSize(size int64) string

HumanSize returns a human-readable approximation of a size using SI standard (eg. "44kB", "17MB")

func IsGIT added in v0.4.5

func IsGIT(str string) bool

func IsURL added in v0.4.5

func IsURL(str string) bool

func NewBufReader

func NewBufReader(r io.Reader) *bufReader

func NewHTTPRequestError added in v0.6.0

func NewHTTPRequestError(msg string, res *http.Response) error

func NopWriteCloser

func NopWriteCloser(w io.Writer) io.WriteCloser

func ParseHost added in v0.4.3

func ParseHost(host string, port int, addr string) string

func ParseRepositoryTag added in v0.5.0

func ParseRepositoryTag(repos string) (string, string)

Get a repos name and returns the right reposName + tag The tag can be confusing because of a port in a repository name.

Ex: localhost.localdomain:5000/samalba/hipache:latest

func PartParser added in v0.6.5

func PartParser(template, data string) (map[string]string, error)

func ProgressReader

func ProgressReader(r io.ReadCloser, size int, output io.Writer, tpl []byte, sf *StreamFormatter, newline bool) *progressReader

func SelfPath

func SelfPath() string

Figure out the absolute path of our own binary

func ShellQuoteArguments added in v0.6.7

func ShellQuoteArguments(args []string) string

func StdCopy added in v0.6.4

func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error)

StdCopy is a modified version of io.Copy.

StdCopy copies from src to dstout or dsterr until either EOF is reached on src or an error occurs. It returns the number of bytes copied and the first error encountered while copying, if any.

A successful Copy returns err == nil, not err == EOF. Because Copy is defined to read from src until EOF, it does not treat an EOF from Read as an error to be reported.

The source needs to be writter via StdWriter, dstout or dsterr is selected based on the prefix added by StdWriter

func StripComments added in v0.6.2

func StripComments(input []byte, commentMarker []byte) []byte

StripComments parses input into lines and strips away comments.

func Trunc

func Trunc(s string, maxlen int) string

func TruncateID added in v0.4.1

func TruncateID(id string) string

TruncateID returns a shorthand version of a string identifier for convenience. A collision with other shorthands is very unlikely, but possible. In case of a collision a lookup with TruncIndex.Get() will fail, and the caller will need to use a langer prefix, or the full-length Id.

Types

type DependencyGraph added in v0.6.2

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

func NewDependencyGraph added in v0.6.2

func NewDependencyGraph() DependencyGraph

func (*DependencyGraph) AddDependency added in v0.6.2

func (graph *DependencyGraph) AddDependency(node, to string) error

func (*DependencyGraph) GenerateTraversalMap added in v0.6.2

func (graph *DependencyGraph) GenerateTraversalMap() ([][]string, error)

The magic happens here ::

func (*DependencyGraph) NewNode added in v0.6.2

func (graph *DependencyGraph) NewNode(id string) string

type DependencyNode added in v0.6.2

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

func (*DependencyNode) Degree added in v0.6.2

func (node *DependencyNode) Degree() int

type HTTPMetaHeadersDecorator added in v0.6.1

type HTTPMetaHeadersDecorator struct {
	Headers map[string][]string
}

func (*HTTPMetaHeadersDecorator) ChangeRequest added in v0.6.1

func (self *HTTPMetaHeadersDecorator) ChangeRequest(req *http.Request) (newReq *http.Request, err error)

type HTTPRequestDecorator added in v0.6.0

type HTTPRequestDecorator interface {
	// ChangeRequest() changes the request accordingly.
	// The changed request will be returned or err will be non-nil
	// if an error occur.
	ChangeRequest(req *http.Request) (newReq *http.Request, err error)
}

HTTPRequestDecorator is used to change an instance of http.Request. It could be used to add more header fields, change body, etc.

func NewHTTPUserAgentDecorator added in v0.6.0

func NewHTTPUserAgentDecorator(versions ...VersionInfo) HTTPRequestDecorator

type HTTPRequestFactory added in v0.6.0

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

HTTPRequestFactory creates an HTTP request and applies a list of decorators on the request.

func NewHTTPRequestFactory added in v0.6.0

func NewHTTPRequestFactory(d ...HTTPRequestDecorator) *HTTPRequestFactory

func (*HTTPRequestFactory) NewRequest added in v0.6.0

func (self *HTTPRequestFactory) NewRequest(method, urlStr string, body io.Reader, d ...HTTPRequestDecorator) (*http.Request, error)

NewRequest() creates a new *http.Request, applies all decorators in the HTTPRequestFactory on the request, then applies decorators provided by d on the request.

type HTTPUserAgentDecorator added in v0.6.0

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

HTTPUserAgentDecorator appends the product/version to the user agent field of a request.

func (*HTTPUserAgentDecorator) ChangeRequest added in v0.6.0

func (self *HTTPUserAgentDecorator) ChangeRequest(req *http.Request) (newReq *http.Request, err error)

type JSONError added in v0.6.0

type JSONError struct {
	Code    int    `json:"code,omitempty"`
	Message string `json:"message,omitempty"`
}

func (*JSONError) Error added in v0.6.0

func (e *JSONError) Error() string

type JSONLog added in v0.5.1

type JSONLog struct {
	Log     string    `json:"log,omitempty"`
	Stream  string    `json:"stream,omitempty"`
	Created time.Time `json:"time"`
}

type JSONMessage added in v0.4.1

type JSONMessage struct {
	Status       string     `json:"status,omitempty"`
	Progress     string     `json:"progress,omitempty"`
	ErrorMessage string     `json:"error,omitempty"` //deprecated
	ID           string     `json:"id,omitempty"`
	From         string     `json:"from,omitempty"`
	Time         int64      `json:"time,omitempty"`
	Error        *JSONError `json:"errorDetail,omitempty"`
}

func (*JSONMessage) Display added in v0.5.1

func (jm *JSONMessage) Display(out io.Writer) error

type KernelVersionInfo

type KernelVersionInfo struct {
	Kernel int
	Major  int
	Minor  int
	Flavor string
}

func GetKernelVersion

func GetKernelVersion() (*KernelVersionInfo, error)

func ParseRelease added in v0.6.2

func ParseRelease(release string) (*KernelVersionInfo, error)

func (*KernelVersionInfo) String

func (k *KernelVersionInfo) String() string

type NopFlusher

type NopFlusher struct{}

func (*NopFlusher) Flush

func (f *NopFlusher) Flush()

type NopWriter

type NopWriter struct{}

func (*NopWriter) Write

func (*NopWriter) Write(buf []byte) (int, error)

type StatusError added in v0.6.2

type StatusError struct {
	Status int
}

An StatusError reports an unsuccessful exit by a command.

func (*StatusError) Error added in v0.6.2

func (e *StatusError) Error() string

type StdType added in v0.6.4

type StdType [StdWriterPrefixLen]byte
var (
	Stdin  StdType = StdType{0: 0}
	Stdout StdType = StdType{0: 1}
	Stderr StdType = StdType{0: 2}
)

type StdWriter added in v0.6.4

type StdWriter struct {
	io.Writer
	// contains filtered or unexported fields
}

func NewStdWriter added in v0.6.4

func NewStdWriter(w io.Writer, t StdType) *StdWriter

NewStdWriter instanciate a new Writer based on the given type `t`. the utils package contains the valid parametres for `t`:

func (*StdWriter) Write added in v0.6.4

func (w *StdWriter) Write(buf []byte) (n int, err error)

type StreamFormatter added in v0.4.0

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

func NewStreamFormatter added in v0.4.0

func NewStreamFormatter(json bool) *StreamFormatter

func (*StreamFormatter) FormatError added in v0.4.0

func (sf *StreamFormatter) FormatError(err error) []byte

func (*StreamFormatter) FormatProgress added in v0.4.0

func (sf *StreamFormatter) FormatProgress(id, action, progress string) []byte

func (*StreamFormatter) FormatStatus added in v0.4.0

func (sf *StreamFormatter) FormatStatus(id, format string, a ...interface{}) []byte

func (*StreamFormatter) Used added in v0.4.0

func (sf *StreamFormatter) Used() bool

type StreamWriter added in v0.5.1

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

type TarSum added in v0.6.0

type TarSum struct {
	io.Reader
	// contains filtered or unexported fields
}

func (*TarSum) Read added in v0.6.0

func (ts *TarSum) Read(buf []byte) (int, error)

func (*TarSum) Sum added in v0.6.0

func (ts *TarSum) Sum(extra []byte) string

type TruncIndex

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

TruncIndex allows the retrieval of string identifiers by any of their unique prefixes. This is used to retrieve image and container IDs by more convenient shorthand prefixes.

func NewTruncIndex

func NewTruncIndex() *TruncIndex

func (*TruncIndex) Add

func (idx *TruncIndex) Add(id string) error

func (*TruncIndex) Delete

func (idx *TruncIndex) Delete(id string) error

func (*TruncIndex) Get

func (idx *TruncIndex) Get(s string) (string, error)

type User added in v0.6.2

type User struct {
	Uid      string // user id
	Gid      string // primary group id
	Username string
	Name     string
	HomeDir  string
}

func UserLookup added in v0.5.0

func UserLookup(uid string) (*User, error)

UserLookup check if the given username or uid is present in /etc/passwd and returns the user struct. If the username is not found, an error is returned.

type Utsname

type Utsname syscall.Utsname

type VersionInfo added in v0.6.0

type VersionInfo interface {
	Name() string
	Version() string
}

VersionInfo is used to model entities which has a version. It is basically a tupple with name and version.

type WriteBroadcaster

type WriteBroadcaster struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewWriteBroadcaster

func NewWriteBroadcaster() *WriteBroadcaster

func (*WriteBroadcaster) AddWriter

func (w *WriteBroadcaster) AddWriter(writer io.WriteCloser, stream string)

func (*WriteBroadcaster) CloseWriters

func (w *WriteBroadcaster) CloseWriters() error

func (*WriteBroadcaster) Write

func (w *WriteBroadcaster) Write(p []byte) (n int, err error)

type WriteFlusher

type WriteFlusher struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewWriteFlusher

func NewWriteFlusher(w io.Writer) *WriteFlusher

func (*WriteFlusher) Write

func (wf *WriteFlusher) Write(b []byte) (n int, err error)

Jump to

Keyboard shortcuts

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