config

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2022 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 of a YAML manifest file and returns a new Config. Initialize any defaults that can't be parsed (but are optional) across various file formats. Most of these can remain unused.

This function only handles parsing YAML in the general case. Any other file format validation should be handled by the caller.

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"`
	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 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"`
	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 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