Browse Source

Remove redundant code in endpoint.go

- JoinOption, LeaveOption, EndpointOption are all the same thing

Signed-off-by: Alessandro Boch <aboch@docker.com>
Alessandro Boch 10 năm trước cách đây
mục cha
commit
da97978469
1 tập tin đã thay đổi với 26 bổ sung50 xóa
  1. 26 50
      libnetwork/endpoint.go

+ 26 - 50
libnetwork/endpoint.go

@@ -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)
-		}
-	}
-}