config

package
v0.0.0-...-5bbac13 Latest Latest
Warning

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

Go to latest
Published: Mar 30, 2020 License: Apache-2.0 Imports: 21 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"`
	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"`
	// Hacked by Chiwen
	// Scalable
	Scalable bool `yaml:"scalable,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"`
	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