github.com/tonistiigi/docker@v0.10.1-0.20240229224939-974013b0dc6a/libnetwork/sandbox_options.go (about) 1 package libnetwork 2 3 import ( 4 "github.com/docker/docker/libnetwork/netlabel" 5 "github.com/docker/docker/libnetwork/osl" 6 "github.com/docker/docker/libnetwork/types" 7 ) 8 9 // OptionHostname function returns an option setter for hostname option to 10 // be passed to NewSandbox method. 11 func OptionHostname(name string) SandboxOption { 12 return func(sb *Sandbox) { 13 sb.config.hostName = name 14 } 15 } 16 17 // OptionDomainname function returns an option setter for domainname option to 18 // be passed to NewSandbox method. 19 func OptionDomainname(name string) SandboxOption { 20 return func(sb *Sandbox) { 21 sb.config.domainName = name 22 } 23 } 24 25 // OptionHostsPath function returns an option setter for hostspath option to 26 // be passed to NewSandbox method. 27 func OptionHostsPath(path string) SandboxOption { 28 return func(sb *Sandbox) { 29 sb.config.hostsPath = path 30 } 31 } 32 33 // OptionOriginHostsPath function returns an option setter for origin hosts file path 34 // to be passed to NewSandbox method. 35 func OptionOriginHostsPath(path string) SandboxOption { 36 return func(sb *Sandbox) { 37 sb.config.originHostsPath = path 38 } 39 } 40 41 // OptionExtraHost function returns an option setter for extra /etc/hosts options 42 // which is a name and IP as strings. 43 func OptionExtraHost(name string, IP string) SandboxOption { 44 return func(sb *Sandbox) { 45 sb.config.extraHosts = append(sb.config.extraHosts, extraHost{name: name, IP: IP}) 46 } 47 } 48 49 // OptionParentUpdate function returns an option setter for parent container 50 // which needs to update the IP address for the linked container. 51 func OptionParentUpdate(cid string, name, ip string) SandboxOption { 52 return func(sb *Sandbox) { 53 sb.config.parentUpdates = append(sb.config.parentUpdates, parentUpdate{cid: cid, name: name, ip: ip}) 54 } 55 } 56 57 // OptionResolvConfPath function returns an option setter for resolvconfpath option to 58 // be passed to net container methods. 59 func OptionResolvConfPath(path string) SandboxOption { 60 return func(sb *Sandbox) { 61 sb.config.resolvConfPath = path 62 } 63 } 64 65 // OptionOriginResolvConfPath function returns an option setter to set the path to the 66 // origin resolv.conf file to be passed to net container methods. 67 func OptionOriginResolvConfPath(path string) SandboxOption { 68 return func(sb *Sandbox) { 69 sb.config.originResolvConfPath = path 70 } 71 } 72 73 // OptionDNS function returns an option setter for dns entry option to 74 // be passed to container Create method. 75 func OptionDNS(dns []string) SandboxOption { 76 return func(sb *Sandbox) { 77 sb.config.dnsList = dns 78 } 79 } 80 81 // OptionDNSSearch function returns an option setter for dns search entry option to 82 // be passed to container Create method. 83 func OptionDNSSearch(search []string) SandboxOption { 84 return func(sb *Sandbox) { 85 sb.config.dnsSearchList = search 86 } 87 } 88 89 // OptionDNSOptions function returns an option setter for dns options entry option to 90 // be passed to container Create method. 91 func OptionDNSOptions(options []string) SandboxOption { 92 return func(sb *Sandbox) { 93 sb.config.dnsOptionsList = options 94 } 95 } 96 97 // OptionUseDefaultSandbox function returns an option setter for using default sandbox 98 // (host namespace) to be passed to container Create method. 99 func OptionUseDefaultSandbox() SandboxOption { 100 return func(sb *Sandbox) { 101 sb.config.useDefaultSandBox = true 102 } 103 } 104 105 // OptionUseExternalKey function returns an option setter for using provided namespace 106 // instead of creating one. 107 func OptionUseExternalKey() SandboxOption { 108 return func(sb *Sandbox) { 109 sb.config.useExternalKey = true 110 } 111 } 112 113 // OptionGeneric function returns an option setter for Generic configuration 114 // that is not managed by libNetwork but can be used by the Drivers during the call to 115 // net container creation method. Container Labels are a good example. 116 func OptionGeneric(generic map[string]interface{}) SandboxOption { 117 return func(sb *Sandbox) { 118 if sb.config.generic == nil { 119 sb.config.generic = make(map[string]interface{}, len(generic)) 120 } 121 for k, v := range generic { 122 sb.config.generic[k] = v 123 } 124 } 125 } 126 127 // OptionExposedPorts function returns an option setter for the container exposed 128 // ports option to be passed to container Create method. 129 func OptionExposedPorts(exposedPorts []types.TransportPort) SandboxOption { 130 return func(sb *Sandbox) { 131 if sb.config.generic == nil { 132 sb.config.generic = make(map[string]interface{}) 133 } 134 // Defensive copy 135 eps := make([]types.TransportPort, len(exposedPorts)) 136 copy(eps, exposedPorts) 137 // Store endpoint label and in generic because driver needs it 138 sb.config.exposedPorts = eps 139 sb.config.generic[netlabel.ExposedPorts] = eps 140 } 141 } 142 143 // OptionPortMapping function returns an option setter for the mapping 144 // ports option to be passed to container Create method. 145 func OptionPortMapping(portBindings []types.PortBinding) SandboxOption { 146 return func(sb *Sandbox) { 147 if sb.config.generic == nil { 148 sb.config.generic = make(map[string]interface{}) 149 } 150 // Store a copy of the bindings as generic data to pass to the driver 151 pbs := make([]types.PortBinding, len(portBindings)) 152 copy(pbs, portBindings) 153 sb.config.generic[netlabel.PortMap] = pbs 154 } 155 } 156 157 // OptionIngress function returns an option setter for marking a 158 // sandbox as the controller's ingress sandbox. 159 func OptionIngress() SandboxOption { 160 return func(sb *Sandbox) { 161 sb.ingress = true 162 sb.oslTypes = append(sb.oslTypes, osl.SandboxTypeIngress) 163 } 164 } 165 166 // OptionLoadBalancer function returns an option setter for marking a 167 // sandbox as a load balancer sandbox. 168 func OptionLoadBalancer(nid string) SandboxOption { 169 return func(sb *Sandbox) { 170 sb.loadBalancerNID = nid 171 sb.oslTypes = append(sb.oslTypes, osl.SandboxTypeLoadBalancer) 172 } 173 }