e2ec006797
This commit in conjunction with a libnetwork side commit, cleans up the libnetwork SetClusterProvider logic interaction. The previous code was inducing libnetwork to spawn several go routines that were racing between each other during the agent init and close. A test got added to verify that back to back swarm init and leave are properly processed and not raise crashes Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
26 lines
707 B
Go
26 lines
707 B
Go
package daemon
|
|
|
|
import (
|
|
apitypes "github.com/docker/docker/api/types"
|
|
lncluster "github.com/docker/libnetwork/cluster"
|
|
)
|
|
|
|
// Cluster is the interface for github.com/docker/docker/daemon/cluster.(*Cluster).
|
|
type Cluster interface {
|
|
ClusterStatus
|
|
NetworkManager
|
|
SendClusterEvent(event lncluster.ConfigEventType)
|
|
}
|
|
|
|
// ClusterStatus interface provides information about the Swarm status of the Cluster
|
|
type ClusterStatus interface {
|
|
IsAgent() bool
|
|
IsManager() bool
|
|
}
|
|
|
|
// NetworkManager provides methods to manage networks
|
|
type NetworkManager interface {
|
|
GetNetwork(input string) (apitypes.NetworkResource, error)
|
|
GetNetworks() ([]apitypes.NetworkResource, error)
|
|
RemoveNetwork(input string) error
|
|
}
|