libnetwork: move all SandboxOptions to a separate file
Just a minor reorganisation; move options together into a dedicated file. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
01ac4892e0
commit
06e540c271
2 changed files with 173 additions and 167 deletions
|
@ -12,7 +12,6 @@ import (
|
||||||
|
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
"github.com/docker/docker/libnetwork/etchosts"
|
"github.com/docker/docker/libnetwork/etchosts"
|
||||||
"github.com/docker/docker/libnetwork/netlabel"
|
|
||||||
"github.com/docker/docker/libnetwork/osl"
|
"github.com/docker/docker/libnetwork/osl"
|
||||||
"github.com/docker/docker/libnetwork/types"
|
"github.com/docker/docker/libnetwork/types"
|
||||||
)
|
)
|
||||||
|
@ -998,172 +997,6 @@ func (sb *Sandbox) joinLeaveEnd() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// OptionHostname function returns an option setter for hostname option to
|
|
||||||
// be passed to NewSandbox method.
|
|
||||||
func OptionHostname(name string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.hostName = name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionDomainname function returns an option setter for domainname option to
|
|
||||||
// be passed to NewSandbox method.
|
|
||||||
func OptionDomainname(name string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.domainName = name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionHostsPath function returns an option setter for hostspath option to
|
|
||||||
// be passed to NewSandbox method.
|
|
||||||
func OptionHostsPath(path string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.hostsPath = path
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionOriginHostsPath function returns an option setter for origin hosts file path
|
|
||||||
// to be passed to NewSandbox method.
|
|
||||||
func OptionOriginHostsPath(path string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.originHostsPath = path
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionExtraHost function returns an option setter for extra /etc/hosts options
|
|
||||||
// which is a name and IP as strings.
|
|
||||||
func OptionExtraHost(name string, IP string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.extraHosts = append(sb.config.extraHosts, extraHost{name: name, IP: IP})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionParentUpdate function returns an option setter for parent container
|
|
||||||
// which needs to update the IP address for the linked container.
|
|
||||||
func OptionParentUpdate(cid string, name, ip string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.parentUpdates = append(sb.config.parentUpdates, parentUpdate{cid: cid, name: name, ip: ip})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionResolvConfPath function returns an option setter for resolvconfpath option to
|
|
||||||
// be passed to net container methods.
|
|
||||||
func OptionResolvConfPath(path string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.resolvConfPath = path
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionOriginResolvConfPath function returns an option setter to set the path to the
|
|
||||||
// origin resolv.conf file to be passed to net container methods.
|
|
||||||
func OptionOriginResolvConfPath(path string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.originResolvConfPath = path
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionDNS function returns an option setter for dns entry option to
|
|
||||||
// be passed to container Create method.
|
|
||||||
func OptionDNS(dns []string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.dnsList = dns
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionDNSSearch function returns an option setter for dns search entry option to
|
|
||||||
// be passed to container Create method.
|
|
||||||
func OptionDNSSearch(search []string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.dnsSearchList = search
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionDNSOptions function returns an option setter for dns options entry option to
|
|
||||||
// be passed to container Create method.
|
|
||||||
func OptionDNSOptions(options []string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.dnsOptionsList = options
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionUseDefaultSandbox function returns an option setter for using default sandbox
|
|
||||||
// (host namespace) to be passed to container Create method.
|
|
||||||
func OptionUseDefaultSandbox() SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.useDefaultSandBox = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionUseExternalKey function returns an option setter for using provided namespace
|
|
||||||
// instead of creating one.
|
|
||||||
func OptionUseExternalKey() SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.config.useExternalKey = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionGeneric function returns an option setter for Generic configuration
|
|
||||||
// that is not managed by libNetwork but can be used by the Drivers during the call to
|
|
||||||
// net container creation method. Container Labels are a good example.
|
|
||||||
func OptionGeneric(generic map[string]interface{}) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
if sb.config.generic == nil {
|
|
||||||
sb.config.generic = make(map[string]interface{}, len(generic))
|
|
||||||
}
|
|
||||||
for k, v := range generic {
|
|
||||||
sb.config.generic[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionExposedPorts function returns an option setter for the container exposed
|
|
||||||
// ports option to be passed to container Create method.
|
|
||||||
func OptionExposedPorts(exposedPorts []types.TransportPort) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
if sb.config.generic == nil {
|
|
||||||
sb.config.generic = make(map[string]interface{})
|
|
||||||
}
|
|
||||||
// Defensive copy
|
|
||||||
eps := make([]types.TransportPort, len(exposedPorts))
|
|
||||||
copy(eps, exposedPorts)
|
|
||||||
// Store endpoint label and in generic because driver needs it
|
|
||||||
sb.config.exposedPorts = eps
|
|
||||||
sb.config.generic[netlabel.ExposedPorts] = eps
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionPortMapping function returns an option setter for the mapping
|
|
||||||
// ports option to be passed to container Create method.
|
|
||||||
func OptionPortMapping(portBindings []types.PortBinding) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
if sb.config.generic == nil {
|
|
||||||
sb.config.generic = make(map[string]interface{})
|
|
||||||
}
|
|
||||||
// Store a copy of the bindings as generic data to pass to the driver
|
|
||||||
pbs := make([]types.PortBinding, len(portBindings))
|
|
||||||
copy(pbs, portBindings)
|
|
||||||
sb.config.generic[netlabel.PortMap] = pbs
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionIngress function returns an option setter for marking a
|
|
||||||
// sandbox as the controller's ingress sandbox.
|
|
||||||
func OptionIngress() SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.ingress = true
|
|
||||||
sb.oslTypes = append(sb.oslTypes, osl.SandboxTypeIngress)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// OptionLoadBalancer function returns an option setter for marking a
|
|
||||||
// sandbox as a load balancer sandbox.
|
|
||||||
func OptionLoadBalancer(nid string) SandboxOption {
|
|
||||||
return func(sb *Sandbox) {
|
|
||||||
sb.loadBalancerNID = nid
|
|
||||||
sb.oslTypes = append(sb.oslTypes, osl.SandboxTypeLoadBalancer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// <=> Returns true if a < b, false if a > b and advances to next level if a == b
|
// <=> Returns true if a < b, false if a > b and advances to next level if a == b
|
||||||
// epi.prio <=> epj.prio # 2 < 1
|
// epi.prio <=> epj.prio # 2 < 1
|
||||||
// epi.gw <=> epj.gw # non-gw < gw
|
// epi.gw <=> epj.gw # non-gw < gw
|
||||||
|
|
173
libnetwork/sandbox_options.go
Normal file
173
libnetwork/sandbox_options.go
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
package libnetwork
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/docker/docker/libnetwork/netlabel"
|
||||||
|
"github.com/docker/docker/libnetwork/osl"
|
||||||
|
"github.com/docker/docker/libnetwork/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// OptionHostname function returns an option setter for hostname option to
|
||||||
|
// be passed to NewSandbox method.
|
||||||
|
func OptionHostname(name string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.hostName = name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionDomainname function returns an option setter for domainname option to
|
||||||
|
// be passed to NewSandbox method.
|
||||||
|
func OptionDomainname(name string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.domainName = name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionHostsPath function returns an option setter for hostspath option to
|
||||||
|
// be passed to NewSandbox method.
|
||||||
|
func OptionHostsPath(path string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.hostsPath = path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionOriginHostsPath function returns an option setter for origin hosts file path
|
||||||
|
// to be passed to NewSandbox method.
|
||||||
|
func OptionOriginHostsPath(path string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.originHostsPath = path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionExtraHost function returns an option setter for extra /etc/hosts options
|
||||||
|
// which is a name and IP as strings.
|
||||||
|
func OptionExtraHost(name string, IP string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.extraHosts = append(sb.config.extraHosts, extraHost{name: name, IP: IP})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionParentUpdate function returns an option setter for parent container
|
||||||
|
// which needs to update the IP address for the linked container.
|
||||||
|
func OptionParentUpdate(cid string, name, ip string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.parentUpdates = append(sb.config.parentUpdates, parentUpdate{cid: cid, name: name, ip: ip})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionResolvConfPath function returns an option setter for resolvconfpath option to
|
||||||
|
// be passed to net container methods.
|
||||||
|
func OptionResolvConfPath(path string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.resolvConfPath = path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionOriginResolvConfPath function returns an option setter to set the path to the
|
||||||
|
// origin resolv.conf file to be passed to net container methods.
|
||||||
|
func OptionOriginResolvConfPath(path string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.originResolvConfPath = path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionDNS function returns an option setter for dns entry option to
|
||||||
|
// be passed to container Create method.
|
||||||
|
func OptionDNS(dns []string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.dnsList = dns
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionDNSSearch function returns an option setter for dns search entry option to
|
||||||
|
// be passed to container Create method.
|
||||||
|
func OptionDNSSearch(search []string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.dnsSearchList = search
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionDNSOptions function returns an option setter for dns options entry option to
|
||||||
|
// be passed to container Create method.
|
||||||
|
func OptionDNSOptions(options []string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.dnsOptionsList = options
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionUseDefaultSandbox function returns an option setter for using default sandbox
|
||||||
|
// (host namespace) to be passed to container Create method.
|
||||||
|
func OptionUseDefaultSandbox() SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.useDefaultSandBox = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionUseExternalKey function returns an option setter for using provided namespace
|
||||||
|
// instead of creating one.
|
||||||
|
func OptionUseExternalKey() SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.config.useExternalKey = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionGeneric function returns an option setter for Generic configuration
|
||||||
|
// that is not managed by libNetwork but can be used by the Drivers during the call to
|
||||||
|
// net container creation method. Container Labels are a good example.
|
||||||
|
func OptionGeneric(generic map[string]interface{}) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
if sb.config.generic == nil {
|
||||||
|
sb.config.generic = make(map[string]interface{}, len(generic))
|
||||||
|
}
|
||||||
|
for k, v := range generic {
|
||||||
|
sb.config.generic[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionExposedPorts function returns an option setter for the container exposed
|
||||||
|
// ports option to be passed to container Create method.
|
||||||
|
func OptionExposedPorts(exposedPorts []types.TransportPort) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
if sb.config.generic == nil {
|
||||||
|
sb.config.generic = make(map[string]interface{})
|
||||||
|
}
|
||||||
|
// Defensive copy
|
||||||
|
eps := make([]types.TransportPort, len(exposedPorts))
|
||||||
|
copy(eps, exposedPorts)
|
||||||
|
// Store endpoint label and in generic because driver needs it
|
||||||
|
sb.config.exposedPorts = eps
|
||||||
|
sb.config.generic[netlabel.ExposedPorts] = eps
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionPortMapping function returns an option setter for the mapping
|
||||||
|
// ports option to be passed to container Create method.
|
||||||
|
func OptionPortMapping(portBindings []types.PortBinding) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
if sb.config.generic == nil {
|
||||||
|
sb.config.generic = make(map[string]interface{})
|
||||||
|
}
|
||||||
|
// Store a copy of the bindings as generic data to pass to the driver
|
||||||
|
pbs := make([]types.PortBinding, len(portBindings))
|
||||||
|
copy(pbs, portBindings)
|
||||||
|
sb.config.generic[netlabel.PortMap] = pbs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionIngress function returns an option setter for marking a
|
||||||
|
// sandbox as the controller's ingress sandbox.
|
||||||
|
func OptionIngress() SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.ingress = true
|
||||||
|
sb.oslTypes = append(sb.oslTypes, osl.SandboxTypeIngress)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OptionLoadBalancer function returns an option setter for marking a
|
||||||
|
// sandbox as a load balancer sandbox.
|
||||||
|
func OptionLoadBalancer(nid string) SandboxOption {
|
||||||
|
return func(sb *Sandbox) {
|
||||||
|
sb.loadBalancerNID = nid
|
||||||
|
sb.oslTypes = append(sb.oslTypes, osl.SandboxTypeLoadBalancer)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue