Explorar o código

Including hostdiscovery conditionaly under a build tag

In order to vendor-in libnetwork to docker, we need to remove the swarm
dependency even though it is used as library. using this PR, a new build
flag libnetwork_discovery is introduced in order to avoid pulling in the
unused hostdiscovery functionality into docker.
We are working with the Swarm project to see if we can modularize the
discovery package to become independent so that we can include them as a
vendor-in package in docker.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Madhu Venugopal %!s(int64=10) %!d(string=hai) anos
pai
achega
5fff515028

+ 1 - 1
libnetwork/Makefile

@@ -22,7 +22,7 @@ build: ${build_image}.created
 	${docker} make build-local
 
 build-local:
-	$(shell which godep) go build -tags experimental ./...
+	$(shell which godep) go build -tags experimental,libnetwork_discovery ./...
 
 check: ${build_image}.created
 	${docker} make check-local

+ 2 - 16
libnetwork/hostdiscovery/hostdiscovery.go

@@ -1,3 +1,5 @@
+// +build libnetwork_discovery
+
 package hostdiscovery
 
 import (
@@ -24,22 +26,6 @@ import (
 
 const defaultHeartbeat = 10
 
-// JoinCallback provides a callback event for new node joining the cluster
-type JoinCallback func(entries []net.IP)
-
-// LeaveCallback provides a callback event for node leaving the cluster
-type LeaveCallback func(entries []net.IP)
-
-// HostDiscovery primary interface
-type HostDiscovery interface {
-	// StartDiscovery initiates the discovery process and provides appropriate callbacks
-	StartDiscovery(*config.ClusterCfg, JoinCallback, LeaveCallback) error
-	// StopDiscovery stops the discovery perocess
-	StopDiscovery() error
-	// Fetch returns a list of host IPs that are currently discovered
-	Fetch() ([]net.IP, error)
-}
-
 type hostDiscovery struct {
 	discovery discovery.Discovery
 	nodes     mapset.Set

+ 23 - 0
libnetwork/hostdiscovery/hostdiscovery_api.go

@@ -0,0 +1,23 @@
+package hostdiscovery
+
+import (
+	"net"
+
+	"github.com/docker/libnetwork/config"
+)
+
+// JoinCallback provides a callback event for new node joining the cluster
+type JoinCallback func(entries []net.IP)
+
+// LeaveCallback provides a callback event for node leaving the cluster
+type LeaveCallback func(entries []net.IP)
+
+// HostDiscovery primary interface
+type HostDiscovery interface {
+	// StartDiscovery initiates the discovery process and provides appropriate callbacks
+	StartDiscovery(*config.ClusterCfg, JoinCallback, LeaveCallback) error
+	// StopDiscovery stops the discovery perocess
+	StopDiscovery() error
+	// Fetch returns a list of host IPs that are currently discovered
+	Fetch() ([]net.IP, error)
+}

+ 28 - 0
libnetwork/hostdiscovery/hostdiscovery_disabled.go

@@ -0,0 +1,28 @@
+// +build !libnetwork_discovery
+
+package hostdiscovery
+
+import (
+	"net"
+
+	"github.com/docker/libnetwork/config"
+)
+
+type hostDiscovery struct{}
+
+// NewHostDiscovery function creates a host discovery object
+func NewHostDiscovery() HostDiscovery {
+	return &hostDiscovery{}
+}
+
+func (h *hostDiscovery) StartDiscovery(cfg *config.ClusterCfg, joinCallback JoinCallback, leaveCallback LeaveCallback) error {
+	return nil
+}
+
+func (h *hostDiscovery) StopDiscovery() error {
+	return nil
+}
+
+func (h *hostDiscovery) Fetch() ([]net.IP, error) {
+	return []net.IP{}, nil
+}

+ 2 - 0
libnetwork/hostdiscovery/hostdiscovery_test.go

@@ -1,3 +1,5 @@
+// +build libnetwork_discovery
+
 package hostdiscovery
 
 import (