Documentation ¶
Index ¶
- Constants
- Variables
- func CurrentStackImagePath(stacksDir, name string) (string, error)
- func RegisterRoutedDriver(controller libnetwork.NetworkController) error
- type APIFormation
- type APIPoller
- type AbsPathDynoDriver
- type Action
- type Allocator
- type AppSerializable
- type ControlAPI
- type DirPoller
- type Docker
- type DockerDynoDriver
- type DockerStackImage
- type DynoDriver
- type DynoInput
- type DynoState
- type Executor
- type ExitStatus
- type Formation
- type FormationSerializable
- type GobNotifier
- type HerokuStackImage
- type IPInfo
- type LibContainerDynoDriver
- type Notifier
- type ProcessStatus
- type Processes
- type Release
- type Routed
- func (r *Routed) Config(options map[string]interface{}) error
- func (r *Routed) CreateEndpoint(nid, eid types.UUID, epInfo driverapi.EndpointInfo, ...) error
- func (r *Routed) CreateNetwork(nid types.UUID, options map[string]interface{}) error
- func (r *Routed) DeleteEndpoint(nid, eid types.UUID) error
- func (r *Routed) DeleteNetwork(nid types.UUID) error
- func (r *Routed) EndpointOperInfo(nid, eid types.UUID) (map[string]interface{}, error)
- func (r *Routed) Join(nid, eid types.UUID, sboxKey string, jinfo driverapi.JoinInfo, ...) error
- func (r *Routed) Leave(nid, eid types.UUID) error
- func (_ *Routed) Type() string
- type SimpleDynoDriver
- type SlugWhere
- type SmallSubnet
- type Startup
- type StatusResponse
- type StopRequest
- type StopResponse
Constants ¶
const DefaultPort = "5000"
const (
// currently available versions of Heroku stack images
HerokuStacksManifestURL = "https://s3.amazonaws.com/heroku_stacks_production/manifest.yml"
)
const SocketPerm os.FileMode = 0770
Variables ¶
var ( ErrInvalidIPMask = errors.New("mask is not a /30") ErrInvalidNetwork = errors.New("Invalid Network") ErrInvalidEndpoint = errors.New("Invalid Endpoint") )
var ( // 172.16/12 block, starting at 172.16.0.28/30 // By default allocate IPs from the RFC1918 (private address space), // which provides at most 2**18 = 262144 subnets of size /30. // Skip the first few IPs from RFC1918 to avoid clashes with // IPs used by AWS (eg.: the internal DNS server is 172.16.0.23 on EC2 // classic). DefaultPrivateSubnet = net.IPNet{ IP: net.IPv4(172, 16, 0, 28).To4(), Mask: net.CIDRMask(12, 32), } )
var ErrExecutorComplete = errors.New("Executor complete")
var ErrIPNotFound = errors.New("ip not found")
var ErrNoReleases = errors.New("No releases found")
var ErrNoSlugURL = errors.New("no slug specified")
var ErrSocketInUse = errors.New("socket in use")
Functions ¶
func CurrentStackImagePath ¶
func RegisterRoutedDriver ¶ added in v0.1.0
func RegisterRoutedDriver(controller libnetwork.NetworkController) error
Types ¶
type APIFormation ¶
type APIFormation struct {
// contains filtered or unexported fields
}
func (*APIFormation) Args ¶
func (f *APIFormation) Args() []string
func (*APIFormation) Quantity ¶
func (f *APIFormation) Quantity() int
func (*APIFormation) Type ¶
func (f *APIFormation) Type() string
type APIPoller ¶
type APIPoller struct { Cl *heroku.Service Hs *Startup // contains filtered or unexported fields }
type AbsPathDynoDriver ¶
type AbsPathDynoDriver struct { }
func (*AbsPathDynoDriver) Build ¶
func (dd *AbsPathDynoDriver) Build(release *Release) (err error)
func (*AbsPathDynoDriver) Start ¶
func (dd *AbsPathDynoDriver) Start(ex *Executor) (err error)
func (*AbsPathDynoDriver) Stop ¶
func (dd *AbsPathDynoDriver) Stop(ex *Executor) error
func (*AbsPathDynoDriver) Wait ¶
func (dd *AbsPathDynoDriver) Wait(ex *Executor) (s *ExitStatus)
type Allocator ¶ added in v0.0.7
type Allocator struct {
// contains filtered or unexported fields
}
Allocator is responsible for allocating globally unique (per host) resources.
func NewAllocator ¶ added in v0.0.7
func NewAllocator( workDir string, privateSubnet net.IPNet, minUID, maxUID int, ) (*Allocator, error)
NewAllocator receives a CIDR block to allocate dyno subnets from, in the form baseIP/mask. All subnets will be >= baseIP, e.g.: 172.16.0.28/12 will cause subnets of size /30 to be allocated from 172.16/12, starting at 172.16.0.28/30.
To avoid reusing the same subnet for two different dynos (UIDs), make sure (maxUID - minUID) <= /30 subnets that the CIDR block can provide. E.g.: 172.17/16 can provide 2 ** (30-16) = 16384 /30 subnets, then to avoid subnets being reused, make sure that (maxUID - minUID) <= 16384.
func (*Allocator) FreeUID ¶ added in v0.0.7
FreeUID returns the provided UID to the pool to be used by others
func (*Allocator) ReserveUID ¶ added in v0.0.7
ReserveUID optimistically locks uid numbers until one is successfully allocated. It relies on atomic filesystem operations to guarantee that multiple concurrent tasks will never allocate the same uid.
uid numbers allocated by this should be returned to the pool with FreeUID when they are not required anymore.
type AppSerializable ¶
type AppSerializable struct { Version int Name string Env map[string]string Slug string Stack string Processes []FormationSerializable // LogplexURL specifies where to forward the supervised // process Stdout and Stderr when non-empty. LogplexURL string `json:",omitempty"` }
func (*AppSerializable) MustParseLogplexURL ¶ added in v0.0.5
func (as *AppSerializable) MustParseLogplexURL() *url.URL
Convenience function for parsing the stringy LogplexURL. This is helpful because gob encoding of url.URL values is not supported. It's presumed that the URL-conformance of LogplexURL has already been verified.
type ControlAPI ¶
func NewControlAPI ¶ added in v0.1.0
func NewControlAPI(socket string, processes <-chan *Processes) (*ControlAPI, <-chan *Processes)
func (*ControlAPI) Close ¶ added in v0.1.0
func (c *ControlAPI) Close()
func (*ControlAPI) Listen ¶ added in v0.1.0
func (c *ControlAPI) Listen() error
func (*ControlAPI) Tee ¶
func (c *ControlAPI) Tee(procs <-chan *Processes) <-chan *Processes
type Docker ¶
type Docker struct {
// contains filtered or unexported fields
}
func (*Docker) BuildSlugImage ¶
func (d *Docker) BuildSlugImage(si *DockerStackImage, release *Release) ( string, error)
type DockerDynoDriver ¶
type DockerDynoDriver struct {
// contains filtered or unexported fields
}
func (*DockerDynoDriver) Build ¶
func (dd *DockerDynoDriver) Build(release *Release) error
func (*DockerDynoDriver) IPInfo ¶ added in v0.0.10
func (dd *DockerDynoDriver) IPInfo(ex *Executor) IPInfo
func (*DockerDynoDriver) Start ¶
func (dd *DockerDynoDriver) Start(ex *Executor) error
func (*DockerDynoDriver) Stop ¶
func (dd *DockerDynoDriver) Stop(ex *Executor) error
func (*DockerDynoDriver) Wait ¶
func (dd *DockerDynoDriver) Wait(ex *Executor) (s *ExitStatus)
type DockerStackImage ¶
type DockerStackImage struct {
// contains filtered or unexported fields
}
type DynoDriver ¶
type Executor ¶
type Executor struct { Args []string DynoDriver DynoDriver Release *Release ProcessID int ProcessType string Status chan *ExitStatus Complete chan struct{} LogplexURL *url.URL Binds map[string]string // FSM Fields OneShot bool State DynoState NewInput chan DynoInput // Status API fields IPInfo IPInfo // contains filtered or unexported fields }
type ExitStatus ¶
type FormationSerializable ¶
type FormationSerializable struct { FArgs []string `json:"Args"` FQuantity int `json:"Quantity"` FType string `json:"Type"` }
func (*FormationSerializable) Args ¶
func (fs *FormationSerializable) Args() []string
func (*FormationSerializable) Quantity ¶
func (fs *FormationSerializable) Quantity() int
func (*FormationSerializable) Type ¶
func (fs *FormationSerializable) Type() string
type GobNotifier ¶
type GobNotifier struct {
Payload string
}
func (*GobNotifier) Notify ¶
func (gn *GobNotifier) Notify() <-chan *Processes
type HerokuStackImage ¶
type HerokuStackImage struct { Name string Version string URL string `yaml:"url"` Md5 string Primary bool // contains filtered or unexported fields }
HerokuStackImage models stack images as they are distributed by Heroku: binary disk images, usually intended to be mounted on loopback devices. The common use is to mount those images read-only, so a single immutable image can be shared by multiple containers, saving disk space and memory due to Linux CoW page sharing.
Support for Heroku stack images is currently only enabled when building for Linux, because these images are currently only used by the libcontainer driver.
func HerokuStacksFromManifest ¶
func HerokuStacksFromManifest(stacksDir string) ([]HerokuStackImage, error)
func (*HerokuStackImage) Dir ¶
func (img *HerokuStackImage) Dir() string
func (*HerokuStackImage) Filename ¶
func (img *HerokuStackImage) Filename() string
type IPInfo ¶ added in v0.0.10
func DefaultIPInfo ¶ added in v0.0.10
type LibContainerDynoDriver ¶
type LibContainerDynoDriver struct {
// contains filtered or unexported fields
}
func NewLibContainerDynoDriver ¶
func NewLibContainerDynoDriver(workDir string) (*LibContainerDynoDriver, error)
func (*LibContainerDynoDriver) Build ¶
func (dd *LibContainerDynoDriver) Build(release *Release) error
func (*LibContainerDynoDriver) Start ¶
func (dd *LibContainerDynoDriver) Start(ex *Executor) error
func (*LibContainerDynoDriver) Stop ¶
func (dd *LibContainerDynoDriver) Stop(ex *Executor) error
func (*LibContainerDynoDriver) Wait ¶
func (dd *LibContainerDynoDriver) Wait(ex *Executor) (s *ExitStatus)
type ProcessStatus ¶ added in v0.0.10
type Release ¶
type Release struct {
// contains filtered or unexported fields
}
func (*Release) ConfigSlice ¶
type Routed ¶ added in v0.0.7
type Routed struct {
// contains filtered or unexported fields
}
Routed implements libnetwork's Driver interface, offering containers only layer 3 connectivity to the outside world.
func (*Routed) CreateEndpoint ¶ added in v0.1.0
func (*Routed) CreateNetwork ¶ added in v0.1.0
func (*Routed) DeleteEndpoint ¶ added in v0.1.0
func (*Routed) EndpointOperInfo ¶ added in v0.1.0
type SimpleDynoDriver ¶
type SimpleDynoDriver struct { }
func (*SimpleDynoDriver) Build ¶
func (dd *SimpleDynoDriver) Build(release *Release) error
func (*SimpleDynoDriver) Start ¶
func (dd *SimpleDynoDriver) Start(ex *Executor) (err error)
func (*SimpleDynoDriver) Stop ¶
func (dd *SimpleDynoDriver) Stop(ex *Executor) error
func (*SimpleDynoDriver) Wait ¶
func (dd *SimpleDynoDriver) Wait(ex *Executor) (s *ExitStatus)
type SmallSubnet ¶ added in v0.1.0
type SmallSubnet struct {
// contains filtered or unexported fields
}
smallSubnet encapsulates operations on single host /30 IPv4 networks. They contain only 4 ip addresses, and only one of them is usable for hosts: 1) network address, 2) gateway ip, 3) host ip, and 4) broadcast ip.
func NewSmallSubnet ¶ added in v0.1.0
func NewSmallSubnet(n *net.IPNet) (*SmallSubnet, error)
func (*SmallSubnet) Broadcast ¶ added in v0.1.0
func (sn *SmallSubnet) Broadcast() *net.IPNet
Broadcast address and mask of the subnet
func (*SmallSubnet) Gateway ¶ added in v0.1.0
func (sn *SmallSubnet) Gateway() *net.IPNet
Gateway address and mask of the subnet
func (*SmallSubnet) Host ¶ added in v0.1.0
func (sn *SmallSubnet) Host() *net.IPNet
Host returns the only unassigned (free) IP/mask in the subnet
type Startup ¶ added in v0.0.2
type Startup struct { // App contains a representation of a single release of an // application to run. App AppSerializable // OneShot is true when hsup terminates after the supervised // program exits. OneShot bool // StartNumber is the first allocated ProcessID. e.g. "2" in // the case of "web.2". StartNumber int // Action enumerates the high level action of this hsup, // e.g. "run", "start", "build". Action Action // Driver specifies the DynoDriver used to execute a program // under hsup. If used for sub-invocations, it must be // registered via "gob.Register". Driver DynoDriver // SkipBuild is set to true tos kip skip the build step of // running a program. This is useful when hsup is being // executed in the context of an already-prepared image // containing a program. SkipBuild bool // Formation name for "Start" action. FormName string // ControlSocket specifies the unix socket the hsup API listens on. // Set to "" when API support is disabled. ControlSocket string // For use with "run". Args []string // Binds enumerates paths bound from the host into a // container. Binds map[string]string }
Startup is a serializable struct sufficient to perform sub-invocations of hsup.
func (*Startup) FromBase64Gob ¶ added in v0.0.2
func (*Startup) ToBase64Gob ¶ added in v0.0.2
type StatusResponse ¶
type StatusResponse struct {
Processes map[string]ProcessStatus
}
type StopRequest ¶
type StopRequest struct {
Processes []string
}
type StopResponse ¶
type StopResponse struct {
StoppedProcesses []string
}
Source Files ¶
- abspath_dyno_driver.go
- allocator.go
- api_poller.go
- control_api.go
- dir_poller.go
- docker.go
- docker_dyno_driver.go
- dyno_driver.go
- dynostate_string.go
- executor.go
- gob_notifier.go
- json_load.go
- libcontainer_dyno_driver.go
- libcontainer_network.go
- logplex.go
- processes.go
- serialization.go
- simple_dyno_driver.go
- stack_image.go
Directories ¶
Path | Synopsis |
---|---|
Godeps
|
|
_workspace/src/bitbucket.org/kardianos/osext
Extensions to the standard "os" package.
|
Extensions to the standard "os" package. |
_workspace/src/code.google.com/p/go-uuid/uuid
The uuid package generates and inspects UUIDs.
|
The uuid package generates and inspects UUIDs. |
+build go1.3 | |
_workspace/src/github.com/bmizerany/aws4
Package aws4 signs HTTP requests as prescribed in http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html
|
Package aws4 signs HTTP requests as prescribed in http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html |
_workspace/src/github.com/bmizerany/aws4/dydb
This is an experimental library for use with DynamoDB.
|
This is an experimental library for use with DynamoDB. |
_workspace/src/github.com/coreos/go-systemd/dbus
Integration with the systemd D-Bus API.
|
Integration with the systemd D-Bus API. |
_workspace/src/github.com/cyberdelia/heroku-go/v3
Generated service client for heroku API.
|
Generated service client for heroku API. |
_workspace/src/github.com/docker/docker/pkg/listenbuffer
Package listenbuffer uses the kernel's listening backlog functionality to queue connections, allowing applications to start listening immediately and handle connections later.
|
Package listenbuffer uses the kernel's listening backlog functionality to queue connections, allowing applications to start listening immediately and handle connections later. |
_workspace/src/github.com/docker/docker/pkg/pools
Package pools provides a collection of pools which provide various data types with buffers.
|
Package pools provides a collection of pools which provide various data types with buffers. |
_workspace/src/github.com/docker/docker/pkg/tlsconfig
Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.
|
Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers. |
_workspace/src/github.com/docker/libcontainer/netlink
Packet netlink provide access to low level Netlink sockets and messages.
|
Packet netlink provide access to low level Netlink sockets and messages. |
_workspace/src/github.com/docker/libkv
Package libkv provides a Go native library to store metadata.
|
Package libkv provides a Go native library to store metadata. |
_workspace/src/github.com/docker/libnetwork
Package libnetwork provides the basic functionality and extension points to create network namespaces and allocate interfaces for containers to use.
|
Package libnetwork provides the basic functionality and extension points to create network namespaces and allocate interfaces for containers to use. |
_workspace/src/github.com/docker/libnetwork/bitseq
Package bitseq provides a structure and utilities for representing long bitmask as sequence of run-lenght encoded blocks.
|
Package bitseq provides a structure and utilities for representing long bitmask as sequence of run-lenght encoded blocks. |
_workspace/src/github.com/docker/libnetwork/idm
Package idm manages resevation/release of numerical ids from a configured set of contiguos ids
|
Package idm manages resevation/release of numerical ids from a configured set of contiguos ids |
_workspace/src/github.com/docker/libnetwork/ipallocator
Package ipallocator defines the default IP allocator.
|
Package ipallocator defines the default IP allocator. |
_workspace/src/github.com/docker/libnetwork/ipam
Package ipam that specifies the contract the IPAM plugin need to satisfy, decoupling IPAM interface and implementation.
|
Package ipam that specifies the contract the IPAM plugin need to satisfy, decoupling IPAM interface and implementation. |
_workspace/src/github.com/docker/libnetwork/options
Package options provides a way to pass unstructured sets of options to a component expecting a strongly-typed configuration structure.
|
Package options provides a way to pass unstructured sets of options to a component expecting a strongly-typed configuration structure. |
_workspace/src/github.com/docker/libnetwork/resolvconf
Package resolvconf provides utility code to query and update DNS configuration in /etc/resolv.conf
|
Package resolvconf provides utility code to query and update DNS configuration in /etc/resolv.conf |
_workspace/src/github.com/docker/libnetwork/types
Package types contains types that are common across libnetwork project
|
Package types contains types that are common across libnetwork project |
_workspace/src/github.com/fsouza/go-dockerclient
Package docker provides a client for the Docker remote API.
|
Package docker provides a client for the Docker remote API. |
_workspace/src/github.com/fsouza/go-dockerclient/testing
Package testing provides a fake implementation of the Docker API, useful for testing purpose.
|
Package testing provides a fake implementation of the Docker API, useful for testing purpose. |
_workspace/src/github.com/godbus/dbus
Package dbus implements bindings to the D-Bus message bus system.
|
Package dbus implements bindings to the D-Bus message bus system. |
_workspace/src/github.com/godbus/dbus/introspect
Package introspect provides some utilities for dealing with the DBus introspection format.
|
Package introspect provides some utilities for dealing with the DBus introspection format. |
_workspace/src/github.com/godbus/dbus/prop
Package prop provides the Properties struct which can be used to implement org.freedesktop.DBus.Properties.
|
Package prop provides the Properties struct which can be used to implement org.freedesktop.DBus.Properties. |
_workspace/src/github.com/golang/protobuf/proto
Package proto converts data structures to and from the wire format of protocol buffers.
|
Package proto converts data structures to and from the wire format of protocol buffers. |
_workspace/src/github.com/golang/protobuf/proto/proto3_proto
Package proto3_proto is a generated protocol buffer package.
|
Package proto3_proto is a generated protocol buffer package. |
_workspace/src/github.com/hashicorp/go-msgpack/codec
High Performance, Feature-Rich Idiomatic Go encoding library for msgpack and binc .
|
High Performance, Feature-Rich Idiomatic Go encoding library for msgpack and binc . |
_workspace/src/github.com/hashicorp/memberlist
memberlist is a library that manages cluster membership and member failure detection using a gossip based protocol.
|
memberlist is a library that manages cluster membership and member failure detection using a gossip based protocol. |
_workspace/src/github.com/nu7hatch/gouuid
This package provides immutable UUID structs and the functions NewV3, NewV4, NewV5 and Parse() for generating versions 3, 4 and 5 UUIDs as specified in RFC 4122.
|
This package provides immutable UUID structs and the functions NewV3, NewV4, NewV5 and Parse() for generating versions 3, 4 and 5 UUIDs as specified in RFC 4122. |
_workspace/src/github.com/ogier/pflag
pflag is a drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
|
pflag is a drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags. |
_workspace/src/github.com/opencontainers/runc/libcontainer
Libcontainer provides a native Go implementation for creating containers with namespaces, cgroups, capabilities, and filesystem access controls.
|
Libcontainer provides a native Go implementation for creating containers with namespaces, cgroups, capabilities, and filesystem access controls. |
_workspace/src/github.com/opencontainers/runc/libcontainer/integration
integration is used for integration testing of libcontainer
|
integration is used for integration testing of libcontainer |
_workspace/src/github.com/opencontainers/runc/libcontainer/netlink
Packet netlink provide access to low level Netlink sockets and messages.
|
Packet netlink provide access to low level Netlink sockets and messages. |
_workspace/src/github.com/opencontainers/runc/libcontainer/seccomp
Package seccomp provides native seccomp ( https://www.kernel.org/doc/Documentation/prctl/seccomp_filter.txt ) support for go.
|
Package seccomp provides native seccomp ( https://www.kernel.org/doc/Documentation/prctl/seccomp_filter.txt ) support for go. |
_workspace/src/github.com/rcrowley/go-metrics
Go port of Coda Hale's Metrics library
|
Go port of Coda Hale's Metrics library |
_workspace/src/github.com/rcrowley/go-metrics/stathat
Metrics output to StatHat.
|
Metrics output to StatHat. |
_workspace/src/github.com/samuel/go-zookeeper/zk
Package zk is a native Go client library for the ZooKeeper orchestration service.
|
Package zk is a native Go client library for the ZooKeeper orchestration service. |
_workspace/src/github.com/syndtr/gocapability/capability
Package capability provides utilities for manipulating POSIX capabilities.
|
Package capability provides utilities for manipulating POSIX capabilities. |
_workspace/src/github.com/ugorji/go/codec
High Performance, Feature-Rich Idiomatic Go codec/encoding library for binc, msgpack, cbor, json.
|
High Performance, Feature-Rich Idiomatic Go codec/encoding library for binc, msgpack, cbor, json. |
_workspace/src/github.com/ugorji/go/codec/codecgen
codecgen generates codec.Selfer implementations for a set of types.
|
codecgen generates codec.Selfer implementations for a set of types. |
_workspace/src/github.com/vishvananda/netlink
Package netlink provides a simple library for netlink.
|
Package netlink provides a simple library for netlink. |
_workspace/src/github.com/vishvananda/netlink/nl
Package nl has low level primitives for making Netlink calls.
|
Package nl has low level primitives for making Netlink calls. |
_workspace/src/github.com/vishvananda/netns
Package netns allows ultra-simple network namespace handling.
|
Package netns allows ultra-simple network namespace handling. |
_workspace/src/gopkg.in/yaml.v2
Package yaml implements YAML support for the Go language.
|
Package yaml implements YAML support for the Go language. |
cmd
|
|
Package diag implements a fixed-size ring buffer to store diagnostic text in.
|
Package diag implements a fixed-size ring buffer to store diagnostic text in. |