package schema

import "github.com/appc/spec/schema"

Package schema provides definitions for the JSON schema of the different manifests in the App Container Specification. The manifests are canonically represented in their respective structs:

Validation is performed through serialization: if a blob of JSON data will unmarshal to one of the *Manifests, it is considered a valid implementation of the standard. Similarly, if a constructed *Manifest struct marshals successfully to JSON, it must be valid.

Index

Constants

const (
	ACIExtension      = ".aci"
	ImageManifestKind = types.ACKind("ImageManifest")
)
const ContainerRuntimeManifestKind = types.ACKind("ContainerRuntimeManifest")

Variables

var (
	// AppContainerVersion is the SemVer representation of version
	AppContainerVersion types.SemVer
)

Types

type AppList

type AppList []RuntimeApp

func (AppList) Get

func (al AppList) Get(name types.ACName) *RuntimeApp

Get retrieves an app by the specified name from the AppList; if there is no such app, nil is returned. The returned *RuntimeApp MUST be considered read-only.

type ContainerRuntimeManifest

type ContainerRuntimeManifest struct {
	ACVersion   types.SemVer      `json:"acVersion"`
	ACKind      types.ACKind      `json:"acKind"`
	UUID        types.UUID        `json:"uuid"`
	Apps        AppList           `json:"apps"`
	Volumes     []types.Volume    `json:"volumes"`
	Isolators   []types.Isolator  `json:"isolators"`
	Annotations types.Annotations `json:"annotations"`
}

func BlankContainerRuntimeManifest

func BlankContainerRuntimeManifest() *ContainerRuntimeManifest

func (ContainerRuntimeManifest) MarshalJSON

func (cm ContainerRuntimeManifest) MarshalJSON() ([]byte, error)

func (*ContainerRuntimeManifest) UnmarshalJSON

func (cm *ContainerRuntimeManifest) UnmarshalJSON(data []byte) error

type ImageManifest

type ImageManifest struct {
	ACKind        types.ACKind       `json:"acKind"`
	ACVersion     types.SemVer       `json:"acVersion"`
	Name          types.ACName       `json:"name"`
	Labels        types.Labels       `json:"labels,omitempty"`
	App           *types.App         `json:"app,omitempty"`
	Annotations   types.Annotations  `json:"annotations,omitempty"`
	Dependencies  types.Dependencies `json:"dependencies,omitempty"`
	PathWhitelist []string           `json:"pathWhitelist,omitempty"`
}

func BlankImageManifest

func BlankImageManifest() *ImageManifest

func (*ImageManifest) GetAnnotation

func (im *ImageManifest) GetAnnotation(name string) (val string, ok bool)

func (*ImageManifest) GetLabel

func (im *ImageManifest) GetLabel(name string) (val string, ok bool)

func (ImageManifest) MarshalJSON

func (im ImageManifest) MarshalJSON() ([]byte, error)

func (*ImageManifest) UnmarshalJSON

func (im *ImageManifest) UnmarshalJSON(data []byte) error

type Kind

type Kind struct {
	ACVersion types.SemVer `json:"acVersion"`
	ACKind    types.ACKind `json:"acKind"`
}

func (Kind) MarshalJSON

func (k Kind) MarshalJSON() ([]byte, error)

func (*Kind) UnmarshalJSON

func (k *Kind) UnmarshalJSON(data []byte) error

type Mount

type Mount struct {
	Volume     types.ACName `json:"volume"`
	MountPoint types.ACName `json:"mountPoint"`
}

Mount describes the mapping between a volume and an apps MountPoint that will be fulfilled at runtime.

type RuntimeApp

type RuntimeApp struct {
	Name        types.ACName      `json:"name"`
	Image       RuntimeImage      `json:"image"`
	App         *types.App        `json:"app,omitempty"`
	Mounts      []Mount           `json:"mounts"`
	Annotations types.Annotations `json:"annotations"`
}

RuntimeApp describes an application referenced in a ContainerRuntimeManifest

type RuntimeImage

type RuntimeImage struct {
	Name   types.ACName `json:"name"`
	ID     types.Hash   `json:"id"`
	Labels types.Labels `json:"labels"`
}

RuntimeImage describes an image referenced in a RuntimeApp

Source Files

container.go doc.go image.go kind.go version.go

Directories

PathSynopsis
schema/typesPackage types contains structs representing the various types in the app container specification.
Version
v0.4.0
Published
Mar 10, 2015
Platform
windows/amd64
Imports
3 packages
Last checked
1 day ago

Tools for package owners.