Documentation ¶
Overview ¶
Package types contains structs representing the various types in the app container specification. It is used by the [schema manifest types](../) to enforce validation.
Index ¶
- Variables
- func ShortHash(hash string) string
- type ACKind
- type ACKindError
- type ACName
- type ACNameError
- type ACVersionError
- type AMStartedOnError
- type Annotation
- type Annotations
- type App
- type Date
- type Dependencies
- type Dependency
- type EventHandler
- type Exec
- type Hash
- type Isolator
- type Label
- type Labels
- type MountPoint
- type Port
- type SemVer
- type URL
- type UUID
- type Volume
Constants ¶
This section is empty.
Variables ¶
var ( ErrNoZeroSemVer = ACVersionError("SemVer cannot be zero") ErrBadSemVer = ACVersionError("SemVer is bad") )
var (
ErrNoACKind = ACKindError("ACKind must be set")
)
var (
ErrNoEmptyUUID = errors.New("UUID cannot be empty")
)
var ValidOSArch = map[string][]string{
"linux": {"amd64", "i386"},
"freebsd": {"amd64", "i386", "arm"},
"darwin": {"x86_64", "i386"},
}
Functions ¶
Types ¶
type ACKind ¶
type ACKind string
ACKind wraps a string to define a field which must be set with one of several ACKind values. If it is unset, or has an invalid value, the field will refuse to marshal/unmarshal.
func (ACKind) MarshalJSON ¶
func (*ACKind) UnmarshalJSON ¶
type ACKindError ¶
type ACKindError string
An ACKindError is returned when the wrong ACKind is set in a manifest
func (ACKindError) Error ¶
func (e ACKindError) Error() string
type ACName ¶
type ACName string
ACName (an App-Container Name) is a format used by keys in different formats of the App Container Standard. An ACName is restricted to characters accepted by the DNS RFC[1] and "/". ACNames are case-insensitive for comparison purposes, but case-preserving.
[1] http://tools.ietf.org/html/rfc1123#page-13
func NewACName ¶
NewACName generates a new ACName from a string. If the given string is not a valid ACName, nil and an error are returned.
func (*ACName) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface
func (*ACName) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface
type ACNameError ¶
type ACNameError string
An ACNameError is returned when a bad value is used for an ACName
func (ACNameError) Error ¶
func (e ACNameError) Error() string
type ACVersionError ¶
type ACVersionError string
An ACVersionError is returned when a bad ACVersion is set in a manifest
func (ACVersionError) Error ¶
func (e ACVersionError) Error() string
type AMStartedOnError ¶
type AMStartedOnError string
An AMStartedOnError is returned when the wrong StartedOn is set in an ImageManifest
func (AMStartedOnError) Error ¶
func (e AMStartedOnError) Error() string
type Annotation ¶ added in v0.2.0
type Annotations ¶
type Annotations []Annotation
func (Annotations) Get ¶ added in v0.2.0
func (a Annotations) Get(name string) (val string, ok bool)
Retrieve the value of an annotation by the given name from Annotations, if it exists.
func (Annotations) MarshalJSON ¶
func (a Annotations) MarshalJSON() ([]byte, error)
func (*Annotations) Set ¶ added in v0.2.0
func (a *Annotations) Set(name ACName, value string)
Set sets the value of an annotation by the given name, overwriting if one already exists.
func (*Annotations) UnmarshalJSON ¶
func (a *Annotations) UnmarshalJSON(data []byte) error
type App ¶
type App struct { Exec Exec `json:"exec"` EventHandlers []EventHandler `json:"eventHandlers,omitempty"` User string `json:"user"` Group string `json:"group"` WorkingDirectory string `json:"workingDirectory,omitempty"` Environment map[string]string `json:"environment,omitempty"` MountPoints []MountPoint `json:"mountPoints,omitempty"` Ports []Port `json:"ports,omitempty"` Isolators []Isolator `json:"isolators,omitempty"` }
func (App) MarshalJSON ¶
func (*App) UnmarshalJSON ¶
type Date ¶
Date wraps time.Time to marshal/unmarshal to/from JSON strings in strict accordance with RFC3339 TODO(jonboulle): golang's implementation seems slightly buggy here; according to http://tools.ietf.org/html/rfc3339#section-5.6 , applications may choose to separate the date and time with a space instead of a T character (for example, `date --rfc-3339` on GNU coreutils) - but this is considered an error by go's parser. File a bug?
func (Date) MarshalJSON ¶
func (*Date) UnmarshalJSON ¶
type Dependencies ¶
type Dependencies []Dependency
type Dependency ¶
type Dependency struct { App ACName `json:"app"` ImageID *Hash `json:"imageID,omitempty"` Labels Labels `json:"labels,omitempty"` }
func (Dependency) MarshalJSON ¶
func (d Dependency) MarshalJSON() ([]byte, error)
func (*Dependency) UnmarshalJSON ¶
func (d *Dependency) UnmarshalJSON(data []byte) error
type EventHandler ¶
func (EventHandler) MarshalJSON ¶
func (e EventHandler) MarshalJSON() ([]byte, error)
func (*EventHandler) UnmarshalJSON ¶
func (e *EventHandler) UnmarshalJSON(data []byte) error
type Exec ¶ added in v0.2.0
type Exec []string
func (Exec) MarshalJSON ¶ added in v0.2.0
func (*Exec) UnmarshalJSON ¶ added in v0.2.0
type Hash ¶
type Hash struct { Val string // contains filtered or unexported fields }
Hash encodes a hash specified in a string of the form:
"<type>-<value>"
for example
"sha512-06c733b1838136838e6d2d3e8fa5aea4c7905e92[...]"
Valid types are currently:
- sha512
func NewHashSHA512 ¶ added in v0.2.0
func (Hash) MarshalJSON ¶
func (*Hash) UnmarshalJSON ¶
type Labels ¶
type Labels []Label
func (Labels) Get ¶ added in v0.2.0
Get retrieves the value of the label by the given name from Labels, if it exists
func (Labels) MarshalJSON ¶
func (*Labels) UnmarshalJSON ¶
type MountPoint ¶
type SemVer ¶
SemVer implements the Unmarshaler interface to define a field that must be a semantic version string TODO(jonboulle): extend upstream instead of wrapping?
func NewSemVer ¶
NewSemVer generates a new SemVer from a string. If the given string does not represent a valid SemVer, nil and an error are returned.
func (SemVer) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface
func (*SemVer) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface
type URL ¶
URL wraps url.URL to marshal/unmarshal to/from JSON strings and enforce that the scheme is HTTP/HTTPS only
func (URL) MarshalJSON ¶
func (*URL) UnmarshalJSON ¶
type UUID ¶
type UUID [16]byte
UUID encodes an RFC4122-compliant UUID, marshaled to/from a string TODO(jonboulle): vendor a package for this? TODO(jonboulle): consider more flexibility in input string formats. Right now, we only accept:
"6733C088-A507-4694-AABF-EDBE4FC5266F" "6733C088A5074694AABFEDBE4FC5266F"
func NewUUID ¶
NewUUID generates a new UUID from the given string. If the string does not represent a valid UUID, nil and an error are returned.
func (UUID) MarshalJSON ¶
func (*UUID) UnmarshalJSON ¶
type Volume ¶
type Volume struct { Kind string `json:"kind"` Fulfills []ACName `json:"fulfills"` // currently used only by "host" // TODO(jonboulle): factor out? Source string `json:"source,omitempty"` ReadOnly bool `json:"readOnly,omitempty"` }
Volume encapsulates a volume which should be mounted into the filesystem of all apps in a ContainerRuntimeManifest