config

package
v2.0.0-...-57bd716 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 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

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

func InterpolateRawServiceMap(baseRawServices *RawServiceMap, environmentLookup EnvironmentLookup) error

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

func IsValidRemote

func IsValidRemote(remote string) bool

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

func Merge

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

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

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

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

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

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

Ipam holds v2 network IPAM information

type IpamConfig

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

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

Log holds v2 logging information

type NetworkConfig

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

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"`
	MemReservation  yaml.MemStringorInt  `yaml:"mem_reservation,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"`
	OomKillDisable  bool                 `yaml:"oom_kill_disable,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"`
	StopGracePeriod string               `yaml:"stop_grace_period,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

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"`
	OomKillDisable bool                 `yaml:"oom_kill_disable,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

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

ServiceConfigs holds a concurrent safe map of ServiceConfig

func NewServiceConfigs

func NewServiceConfigs() *ServiceConfigs

NewServiceConfigs initializes a new Configs struct

func (*ServiceConfigs) Add

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

Add add the specifed config with the specified name

func (*ServiceConfigs) All

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

All returns all the config at once

func (*ServiceConfigs) Get

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

Get returns the config and the presence of the specified name

func (*ServiceConfigs) Has

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

Has checks if the config map has the specified name

func (*ServiceConfigs) Keys

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

Keys returns the names of the config

func (*ServiceConfigs) Len

func (c *ServiceConfigs) Len() int

Len returns the len of the configs

func (*ServiceConfigs) Remove

func (c *ServiceConfigs) Remove(name string)

Remove removes the config with the specified name

type VolumeConfig

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