Remove redundant code in endpoint.go
- JoinOption, LeaveOption, EndpointOption are all the same thing Signed-off-by: Alessandro Boch <aboch@docker.com>
This commit is contained in:
parent
da1cddc320
commit
da97978469
1 changed files with 26 additions and 50 deletions
|
@ -25,11 +25,11 @@ type Endpoint interface {
|
|||
// Join creates a new sandbox for the given container ID and populates the
|
||||
// network resources allocated for the endpoint and joins the sandbox to
|
||||
// the endpoint. It returns the sandbox key to the caller
|
||||
Join(containerID string, options ...JoinOption) (*ContainerData, error)
|
||||
Join(containerID string, options ...EndpointOption) (*ContainerData, error)
|
||||
|
||||
// Leave removes the sandbox associated with container ID and detaches
|
||||
// the network resources populated in the sandbox
|
||||
Leave(containerID string, options ...LeaveOption) error
|
||||
Leave(containerID string, options ...EndpointOption) error
|
||||
|
||||
// SandboxInfo returns the sandbox information for this endpoint.
|
||||
SandboxInfo() *sandbox.Info
|
||||
|
@ -38,22 +38,17 @@ type Endpoint interface {
|
|||
Delete() error
|
||||
}
|
||||
|
||||
// EndpointOption is a option setter function type used to pass varios options to Network
|
||||
// and Endpoint interfaces methods. The various setter functions of type EndpointOption are
|
||||
// provided by libnetwork, they look like <Create|Join|Leave>Option[...](...)
|
||||
type EndpointOption func(ep *endpoint)
|
||||
|
||||
// ContainerData is a set of data returned when a container joins an endpoint.
|
||||
type ContainerData struct {
|
||||
SandboxKey string
|
||||
HostsPath string
|
||||
}
|
||||
|
||||
// JoinOption is a option setter function type used to pass varios options to
|
||||
// endpoint Join method. The various setter functions of type JoinOption are
|
||||
// provided by libnetwork, they look like JoinOption[...](...)
|
||||
type JoinOption func(ep *endpoint)
|
||||
|
||||
// LeaveOption is a option setter function type used to pass varios options to
|
||||
// endpoint Leave method. The various setter functions of type LeaveOption are
|
||||
// provided by libnetwork, they look like LeaveOptionXXXX(...)
|
||||
type LeaveOption func(ep *endpoint)
|
||||
|
||||
type containerConfig struct {
|
||||
hostName string
|
||||
domainName string
|
||||
|
@ -99,19 +94,6 @@ func (ep *endpoint) SandboxInfo() *sandbox.Info {
|
|||
return ep.sandboxInfo.GetCopy()
|
||||
}
|
||||
|
||||
// EndpointOption is a option setter function type used to pass various options to
|
||||
// CreateEndpoint method. The various setter functions of type EndpointOption are
|
||||
// provided by libnetwork, they look like EndpointOptionXXXX(...)
|
||||
type EndpointOption func(ep *endpoint)
|
||||
|
||||
// EndpointOptionGeneric function returns an option setter for a Generic option defined
|
||||
// in a Dictionary of Key-Value pair
|
||||
func EndpointOptionGeneric(generic map[string]interface{}) EndpointOption {
|
||||
return func(ep *endpoint) {
|
||||
ep.generic = generic
|
||||
}
|
||||
}
|
||||
|
||||
func (ep *endpoint) processOptions(options ...EndpointOption) {
|
||||
for _, opt := range options {
|
||||
if opt != nil {
|
||||
|
@ -146,7 +128,7 @@ func createHostsFile(path string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (ep *endpoint) Join(containerID string, options ...JoinOption) (*ContainerData, error) {
|
||||
func (ep *endpoint) Join(containerID string, options ...EndpointOption) (*ContainerData, error) {
|
||||
var err error
|
||||
|
||||
if containerID == "" {
|
||||
|
@ -164,7 +146,7 @@ func (ep *endpoint) Join(containerID string, options ...JoinOption) (*ContainerD
|
|||
}
|
||||
}()
|
||||
|
||||
ep.processJoinOptions(options...)
|
||||
ep.processOptions(options...)
|
||||
|
||||
ep.container.data.HostsPath = prefix + "/" + containerID + "/hosts"
|
||||
err = createHostsFile(ep.container.data.HostsPath)
|
||||
|
@ -221,13 +203,13 @@ func (ep *endpoint) Join(containerID string, options ...JoinOption) (*ContainerD
|
|||
return &cData, nil
|
||||
}
|
||||
|
||||
func (ep *endpoint) Leave(containerID string, options ...LeaveOption) error {
|
||||
func (ep *endpoint) Leave(containerID string, options ...EndpointOption) error {
|
||||
if ep.container == nil || ep.container.id == "" ||
|
||||
containerID == "" || ep.container.id != containerID {
|
||||
return InvalidContainerIDError(containerID)
|
||||
}
|
||||
|
||||
ep.processLeaveOptions(options...)
|
||||
ep.processOptions(options...)
|
||||
|
||||
n := ep.network
|
||||
err := n.driver.Leave(n.id, ep.id, ep.context)
|
||||
|
@ -284,9 +266,19 @@ func (ep *endpoint) buildHostsFiles() error {
|
|||
ep.container.config.domainName, extraContent)
|
||||
}
|
||||
|
||||
// EndpointOptionGeneric function returns an option setter for a Generic option defined
|
||||
// in a Dictionary of Key-Value pair
|
||||
func EndpointOptionGeneric(generic map[string]interface{}) EndpointOption {
|
||||
return func(ep *endpoint) {
|
||||
for k, v := range generic {
|
||||
ep.generic[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// JoinOptionHostname function returns an option setter for hostname option to
|
||||
// be passed to endpoint Join method.
|
||||
func JoinOptionHostname(name string) JoinOption {
|
||||
func JoinOptionHostname(name string) EndpointOption {
|
||||
return func(ep *endpoint) {
|
||||
ep.container.config.hostName = name
|
||||
}
|
||||
|
@ -294,14 +286,14 @@ func JoinOptionHostname(name string) JoinOption {
|
|||
|
||||
// JoinOptionDomainname function returns an option setter for domainname option to
|
||||
// be passed to endpoint Join method.
|
||||
func JoinOptionDomainname(name string) JoinOption {
|
||||
func JoinOptionDomainname(name string) EndpointOption {
|
||||
return func(ep *endpoint) {
|
||||
ep.container.config.domainName = name
|
||||
}
|
||||
}
|
||||
|
||||
// CreateOptionPortMapping function returns an option setter for the container exposed
|
||||
// ports option to be passed to endpoint Join method.
|
||||
// ports option to be passed to network.CreateEndpoint() method.
|
||||
func CreateOptionPortMapping(portBindings []netutils.PortBinding) EndpointOption {
|
||||
return func(ep *endpoint) {
|
||||
// Store endpoint label
|
||||
|
@ -317,33 +309,17 @@ func CreateOptionPortMapping(portBindings []netutils.PortBinding) EndpointOption
|
|||
// JoinOptionGeneric 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
|
||||
// endpoint join method. Container Labels are a good example.
|
||||
func JoinOptionGeneric(generic map[string]interface{}) JoinOption {
|
||||
func JoinOptionGeneric(generic map[string]interface{}) EndpointOption {
|
||||
return func(ep *endpoint) {
|
||||
ep.container.config.generic = generic
|
||||
}
|
||||
}
|
||||
|
||||
func (ep *endpoint) processJoinOptions(options ...JoinOption) {
|
||||
for _, opt := range options {
|
||||
if opt != nil {
|
||||
opt(ep)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// LeaveOptionGeneric 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
|
||||
// endpoint leave method. Container Labels are a good example.
|
||||
func LeaveOptionGeneric(context map[string]interface{}) JoinOption {
|
||||
func LeaveOptionGeneric(context map[string]interface{}) EndpointOption {
|
||||
return func(ep *endpoint) {
|
||||
ep.context = context
|
||||
}
|
||||
}
|
||||
|
||||
func (ep *endpoint) processLeaveOptions(options ...LeaveOption) {
|
||||
for _, opt := range options {
|
||||
if opt != nil {
|
||||
opt(ep)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue