config

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2017 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertServices added in v0.3.0

func ConvertServices(v1Services map[string]*ServiceConfigV1) (map[string]*ServiceConfig, error)

ConvertServices converts a set of v1 service configs to v2 service configs

func GetServiceHash

func GetServiceHash(name string, config *ServiceConfig) string

GetServiceHash computes and returns a hash that will identify a service. This hash will be then used to detect if the service definition/configuration have changed and needs to be recreated.

func Interpolate

func Interpolate(key string, data *interface{}, environmentLookup EnvironmentLookup) error

Interpolate replaces variables in a map entry

func InterpolateRawServiceMap added in v0.4.0

func InterpolateRawServiceMap(baseRawServices *RawServiceMap, environmentLookup EnvironmentLookup) error

InterpolateRawServiceMap replaces varialbse in raw service map struct based on environment lookup

func IsValidRemote added in v0.3.0

func IsValidRemote(remote string) bool

IsValidRemote checks if the specified string is a valid remote (for builds)

func Merge added in v0.3.0

func Merge(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, bytes []byte, options *ParseOptions) (string, map[string]*ServiceConfig, map[string]*VolumeConfig, map[string]*NetworkConfig, error)

Merge merges a compose file into an existing set of service configs

func MergeServicesV1 added in v0.3.0

func MergeServicesV1(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, datas RawServiceMap, options *ParseOptions) (map[string]*ServiceConfigV1, error)

MergeServicesV1 merges a v1 compose file into an existing set of service configs

func MergeServicesV2 added in v0.3.0

func MergeServicesV2(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, datas RawServiceMap, options *ParseOptions) (map[string]*ServiceConfig, error)

MergeServicesV2 merges a v2 compose file into an existing set of service configs

Types

type Config added in v0.3.0

type Config struct {
	Version  string                 `yaml:"version,omitempty"`
	Services RawServiceMap          `yaml:"services,omitempty"`
	Volumes  map[string]interface{} `yaml:"volumes,omitempty"`
	Networks map[string]interface{} `yaml:"networks,omitempty"`
}

Config holds libcompose top level configuration

func CreateConfig added in v0.4.0

func CreateConfig(bytes []byte) (*Config, error)

CreateConfig unmarshals bytes to config and creates config based on version

type EnvironmentLookup

type EnvironmentLookup interface {
	Lookup(key string, config *ServiceConfig) []string
}

EnvironmentLookup defines methods to provides environment variable loading.

type Ipam added in v0.3.0

type Ipam struct {
	Driver string       `yaml:"driver,omitempty"`
	Config []IpamConfig `yaml:"config,omitempty"`
}

Ipam holds v2 network IPAM information

type IpamConfig added in v0.3.0

type IpamConfig struct {
	Subnet     string            `yaml:"subnet,omitempty"`
	IPRange    string            `yaml:"ip_range,omitempty"`
	Gateway    string            `yaml:"gateway,omitempty"`
	AuxAddress map[string]string `yaml:"aux_addresses,omitempty"`
}

IpamConfig holds v2 network IPAM configuration information

type Log added in v0.3.0

type Log struct {
	Driver  string            `yaml:"driver,omitempty"`
	Options map[string]string `yaml:"options,omitempty"`
}

Log holds v2 logging information

type NetworkConfig added in v0.3.0

type NetworkConfig struct {
	Driver     string            `yaml:"driver,omitempty"`
	DriverOpts map[string]string `yaml:"driver_opts,omitempty"`
	External   yaml.External     `yaml:"external,omitempty"`
	Ipam       Ipam              `yaml:"ipam,omitempty"`
}

NetworkConfig holds v2 network configuration

type ParseOptions added in v0.3.0

type ParseOptions struct {
	Interpolate bool
	Validate    bool
	Preprocess  func(RawServiceMap) (RawServiceMap, error)
	Postprocess func(map[string]*ServiceConfig) (map[string]*ServiceConfig, error)
}

ParseOptions are a set of options to customize the parsing process

type RawService

type RawService map[string]interface{}

RawService is represent a Service in map form unparsed

type RawServiceMap

type RawServiceMap map[string]RawService

RawServiceMap is a collection of RawServices

type ResourceLookup

type ResourceLookup interface {
	Lookup(file, relativeTo string) ([]byte, string, error)
	ResolvePath(path, inFile string) string
}

ResourceLookup defines methods to provides file loading.

type ServiceConfig

type ServiceConfig struct {
	Build         yaml.Build           `yaml:"build,omitempty"`
	CapAdd        []string             `yaml:"cap_add,omitempty"`
	CapDrop       []string             `yaml:"cap_drop,omitempty"`
	CPUSet        string               `yaml:"cpuset,omitempty"`
	CPUShares     yaml.StringorInt     `yaml:"cpu_shares,omitempty"`
	CPUQuota      yaml.StringorInt     `yaml:"cpu_quota,omitempty"`
	Command       yaml.Command         `yaml:"command,flow,omitempty"`
	CgroupParent  string               `yaml:"cgroup_parent,omitempty"`
	ContainerName string               `yaml:"container_name,omitempty"`
	Devices       []string             `yaml:"devices,omitempty"`
	DependsOn     []string             `yaml:"depends_on,omitempty"`
	DNS           yaml.Stringorslice   `yaml:"dns,omitempty"`
	DNSOpts       []string             `yaml:"dns_opt,omitempty"`
	DNSSearch     yaml.Stringorslice   `yaml:"dns_search,omitempty"`
	DomainName    string               `yaml:"domainname,omitempty"`
	Entrypoint    yaml.Command         `yaml:"entrypoint,flow,omitempty"`
	EnvFile       yaml.Stringorslice   `yaml:"env_file,omitempty"`
	Environment   yaml.MaporEqualSlice `yaml:"environment,omitempty"`
	Expose        []string             `yaml:"expose,omitempty"`
	Extends       yaml.MaporEqualSlice `yaml:"extends,omitempty"`
	ExternalLinks []string             `yaml:"external_links,omitempty"`
	ExtraHosts    []string             `yaml:"extra_hosts,omitempty"`
	GroupAdd      []string             `yaml:"group_add,omitempty"`
	Image         string               `yaml:"image,omitempty"`
	Isolation     string               `yaml:"isolation,omitempty"`
	Hostname      string               `yaml:"hostname,omitempty"`
	Ipc           string               `yaml:"ipc,omitempty"`
	Labels        yaml.SliceorMap      `yaml:"labels,omitempty"`
	Links         yaml.MaporColonSlice `yaml:"links,omitempty"`
	Logging       Log                  `yaml:"logging,omitempty"`
	MacAddress    string               `yaml:"mac_address,omitempty"`
	MemLimit      yaml.MemStringorInt  `yaml:"mem_limit,omitempty"`
	MemSwapLimit  yaml.MemStringorInt  `yaml:"memswap_limit,omitempty"`
	MemSwappiness yaml.MemStringorInt  `yaml:"mem_swappiness,omitempty"`
	NetworkMode   string               `yaml:"network_mode,omitempty"`
	Networks      *yaml.Networks       `yaml:"networks,omitempty"`
	OomScoreAdj   yaml.StringorInt     `yaml:"oom_score_adj,omitempty"`
	Pid           string               `yaml:"pid,omitempty"`
	Ports         []string             `yaml:"ports,omitempty"`
	Privileged    bool                 `yaml:"privileged,omitempty"`
	SecurityOpt   []string             `yaml:"security_opt,omitempty"`
	ShmSize       yaml.MemStringorInt  `yaml:"shm_size,omitempty"`
	StopSignal    string               `yaml:"stop_signal,omitempty"`
	Tmpfs         yaml.Stringorslice   `yaml:"tmpfs,omitempty"`
	VolumeDriver  string               `yaml:"volume_driver,omitempty"`
	Volumes       *yaml.Volumes        `yaml:"volumes,omitempty"`
	VolumesFrom   []string             `yaml:"volumes_from,omitempty"`
	Uts           string               `yaml:"uts,omitempty"`
	Restart       string               `yaml:"restart,omitempty"`
	ReadOnly      bool                 `yaml:"read_only,omitempty"`
	StdinOpen     bool                 `yaml:"stdin_open,omitempty"`
	Tty           bool                 `yaml:"tty,omitempty"`
	User          string               `yaml:"user,omitempty"`
	WorkingDir    string               `yaml:"working_dir,omitempty"`
	Ulimits       yaml.Ulimits         `yaml:"ulimits,omitempty"`
}

ServiceConfig holds version 2 of libcompose service configuration

type ServiceConfigV1 added in v0.3.0

type ServiceConfigV1 struct {
	Build         string               `yaml:"build,omitempty"`
	CapAdd        []string             `yaml:"cap_add,omitempty"`
	CapDrop       []string             `yaml:"cap_drop,omitempty"`
	CgroupParent  string               `yaml:"cgroup_parent,omitempty"`
	CPUQuota      yaml.StringorInt     `yaml:"cpu_quota,omitempty"`
	CPUSet        string               `yaml:"cpuset,omitempty"`
	CPUShares     yaml.StringorInt     `yaml:"cpu_shares,omitempty"`
	Command       yaml.Command         `yaml:"command,flow,omitempty"`
	ContainerName string               `yaml:"container_name,omitempty"`
	Devices       []string             `yaml:"devices,omitempty"`
	DNS           yaml.Stringorslice   `yaml:"dns,omitempty"`
	DNSOpts       []string             `yaml:"dns_opt,omitempty"`
	DNSSearch     yaml.Stringorslice   `yaml:"dns_search,omitempty"`
	Dockerfile    string               `yaml:"dockerfile,omitempty"`
	DomainName    string               `yaml:"domainname,omitempty"`
	Entrypoint    yaml.Command         `yaml:"entrypoint,flow,omitempty"`
	EnvFile       yaml.Stringorslice   `yaml:"env_file,omitempty"`
	Environment   yaml.MaporEqualSlice `yaml:"environment,omitempty"`
	GroupAdd      []string             `yaml:"group_add,omitempty"`
	Hostname      string               `yaml:"hostname,omitempty"`
	Image         string               `yaml:"image,omitempty"`
	Isolation     string               `yaml:"isolation,omitempty"`
	Labels        yaml.SliceorMap      `yaml:"labels,omitempty"`
	Links         yaml.MaporColonSlice `yaml:"links,omitempty"`
	LogDriver     string               `yaml:"log_driver,omitempty"`
	MacAddress    string               `yaml:"mac_address,omitempty"`
	MemLimit      yaml.MemStringorInt  `yaml:"mem_limit,omitempty"`
	MemSwapLimit  yaml.MemStringorInt  `yaml:"memswap_limit,omitempty"`
	MemSwappiness yaml.MemStringorInt  `yaml:"mem_swappiness,omitempty"`
	Name          string               `yaml:"name,omitempty"`
	Net           string               `yaml:"net,omitempty"`
	OomScoreAdj   yaml.StringorInt     `yaml:"oom_score_adj,omitempty"`
	Pid           string               `yaml:"pid,omitempty"`
	Uts           string               `yaml:"uts,omitempty"`
	Ipc           string               `yaml:"ipc,omitempty"`
	Ports         []string             `yaml:"ports,omitempty"`
	Privileged    bool                 `yaml:"privileged,omitempty"`
	Restart       string               `yaml:"restart,omitempty"`
	ReadOnly      bool                 `yaml:"read_only,omitempty"`
	ShmSize       yaml.MemStringorInt  `yaml:"shm_size,omitempty"`
	StdinOpen     bool                 `yaml:"stdin_open,omitempty"`
	SecurityOpt   []string             `yaml:"security_opt,omitempty"`
	StopSignal    string               `yaml:"stop_signal,omitempty"`
	Tmpfs         yaml.Stringorslice   `yaml:"tmpfs,omitempty"`
	Tty           bool                 `yaml:"tty,omitempty"`
	User          string               `yaml:"user,omitempty"`
	VolumeDriver  string               `yaml:"volume_driver,omitempty"`
	Volumes       []string             `yaml:"volumes,omitempty"`
	VolumesFrom   []string             `yaml:"volumes_from,omitempty"`
	WorkingDir    string               `yaml:"working_dir,omitempty"`
	Expose        []string             `yaml:"expose,omitempty"`
	ExternalLinks []string             `yaml:"external_links,omitempty"`
	LogOpt        map[string]string    `yaml:"log_opt,omitempty"`
	ExtraHosts    []string             `yaml:"extra_hosts,omitempty"`
	Ulimits       yaml.Ulimits         `yaml:"ulimits,omitempty"`
}

ServiceConfigV1 holds version 1 of libcompose service configuration

type ServiceConfigs added in v0.3.0

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

ServiceConfigs holds a concurrent safe map of ServiceConfig

func NewServiceConfigs added in v0.3.0

func NewServiceConfigs() *ServiceConfigs

NewServiceConfigs initializes a new Configs struct

func (*ServiceConfigs) Add added in v0.3.0

func (c *ServiceConfigs) Add(name string, service *ServiceConfig)

Add add the specifed config with the specified name

func (*ServiceConfigs) All added in v0.4.0

func (c *ServiceConfigs) All() map[string]*ServiceConfig

All returns all the config at once

func (*ServiceConfigs) Get added in v0.3.0

func (c *ServiceConfigs) Get(name string) (*ServiceConfig, bool)

Get returns the config and the presence of the specified name

func (*ServiceConfigs) Has added in v0.3.0

func (c *ServiceConfigs) Has(name string) bool

Has checks if the config map has the specified name

func (*ServiceConfigs) Keys added in v0.3.0

func (c *ServiceConfigs) Keys() []string

Keys returns the names of the config

func (*ServiceConfigs) Len added in v0.3.0

func (c *ServiceConfigs) Len() int

Len returns the len of the configs

func (*ServiceConfigs) Remove added in v0.3.0

func (c *ServiceConfigs) Remove(name string)

Remove removes the config with the specified name

type VolumeConfig added in v0.3.0

type VolumeConfig struct {
	Driver     string            `yaml:"driver,omitempty"`
	DriverOpts map[string]string `yaml:"driver_opts,omitempty"`
	External   yaml.External     `yaml:"external,omitempty"`
}

VolumeConfig holds v2 volume configuration

Jump to

Keyboard shortcuts

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