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  }