Skip to content

Commit

Permalink
Change GetRemoteAddr to return all managers
Browse files Browse the repository at this point in the history
Change in the provider interface to let the provider
return the whole list of managers.
This will allow the netwrok db to have multiple choice
to establish the first adjacencies

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
  • Loading branch information
Flavio Crisciani committed Apr 27, 2017
1 parent 1624c61 commit 3d7bc23
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 11 deletions.
21 changes: 13 additions & 8 deletions libnetwork/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,13 +207,18 @@ func (c *controller) agentSetup() error {
bindAddr := clusterProvider.GetLocalAddress()
advAddr := clusterProvider.GetAdvertiseAddress()
dataAddr := clusterProvider.GetDataPathAddress()
remote := clusterProvider.GetRemoteAddress()
remoteAddr, _, _ := net.SplitHostPort(remote)
remoteList := clusterProvider.GetRemoteAddressList()
remoteAddrList := make([]string, len(remoteList))
for _, remote := range remoteList {
addr, _, _ := net.SplitHostPort(remote)
remoteAddrList = append(remoteAddrList, addr)
}

listen := clusterProvider.GetListenAddress()
listenAddr, _, _ := net.SplitHostPort(listen)

logrus.Infof("Initializing Libnetwork Agent Listen-Addr=%s Local-addr=%s Adv-addr=%s Data-addr=%s Remote-addr=%s",
listenAddr, bindAddr, advAddr, dataAddr, remoteAddr)
logrus.Infof("Initializing Libnetwork Agent Listen-Addr=%s Local-addr=%s Adv-addr=%s Data-addr=%s Remote-addr-list=%v",
listenAddr, bindAddr, advAddr, dataAddr, remoteAddrList)
if advAddr != "" && agent == nil {
if err := c.agentInit(listenAddr, bindAddr, advAddr, dataAddr); err != nil {
logrus.Errorf("Error in agentInit : %v", err)
Expand All @@ -227,8 +232,8 @@ func (c *controller) agentSetup() error {
}
}

if remoteAddr != "" {
if err := c.agentJoin(remoteAddr); err != nil {
if len(remoteAddrList) > 0 {
if err := c.agentJoin(remoteAddrList); err != nil {
logrus.Errorf("Error in joining gossip cluster : %v(join will be retried in background)", err)
}
}
Expand Down Expand Up @@ -342,12 +347,12 @@ func (c *controller) agentInit(listenAddr, bindAddrOrInterface, advertiseAddr, d
return nil
}

func (c *controller) agentJoin(remote string) error {
func (c *controller) agentJoin(remoteAddrList []string) error {
agent := c.getAgent()
if agent == nil {
return nil
}
return agent.networkDB.Join([]string{remote})
return agent.networkDB.Join(remoteAddrList)
}

func (c *controller) agentDriverNotify(d driverapi.Driver) {
Expand Down
2 changes: 1 addition & 1 deletion libnetwork/cluster/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type Provider interface {
GetListenAddress() string
GetAdvertiseAddress() string
GetDataPathAddress() string
GetRemoteAddress() string
GetRemoteAddressList() []string
ListenClusterEvents() <-chan struct{}
AttachNetwork(string, string, []string) (*network.NetworkingConfig, error)
DetachNetwork(string, string) error
Expand Down
4 changes: 2 additions & 2 deletions libnetwork/cmd/dnet/dnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,8 @@ func (d *dnetConnection) GetListenAddress() string {
return d.Orchestration.Bind
}

func (d *dnetConnection) GetRemoteAddress() string {
return d.Orchestration.Peer
func (d *dnetConnection) GetRemoteAddressList() []string {
return []string{d.Orchestration.Peer}
}

func (d *dnetConnection) GetNetworkKeys() []*types.EncryptionKey {
Expand Down

0 comments on commit 3d7bc23

Please sign in to comment.