mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #1719 from fcrisciani/data_path
Add the datapath-addr in libnetwork
This commit is contained in:
commit
8711829092
3 changed files with 29 additions and 14 deletions
|
@ -39,11 +39,21 @@ type agent struct {
|
||||||
networkDB *networkdb.NetworkDB
|
networkDB *networkdb.NetworkDB
|
||||||
bindAddr string
|
bindAddr string
|
||||||
advertiseAddr string
|
advertiseAddr string
|
||||||
|
dataPathAddr string
|
||||||
epTblCancel func()
|
epTblCancel func()
|
||||||
driverCancelFuncs map[string][]func()
|
driverCancelFuncs map[string][]func()
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *agent) dataPathAddress() string {
|
||||||
|
a.Lock()
|
||||||
|
defer a.Unlock()
|
||||||
|
if a.dataPathAddr != "" {
|
||||||
|
return a.dataPathAddr
|
||||||
|
}
|
||||||
|
return a.advertiseAddr
|
||||||
|
}
|
||||||
|
|
||||||
const libnetworkEPTable = "endpoint_table"
|
const libnetworkEPTable = "endpoint_table"
|
||||||
|
|
||||||
func getBindAddr(ifaceName string) (string, error) {
|
func getBindAddr(ifaceName string) (string, error) {
|
||||||
|
@ -196,14 +206,16 @@ func (c *controller) agentSetup() error {
|
||||||
|
|
||||||
bindAddr := clusterProvider.GetLocalAddress()
|
bindAddr := clusterProvider.GetLocalAddress()
|
||||||
advAddr := clusterProvider.GetAdvertiseAddress()
|
advAddr := clusterProvider.GetAdvertiseAddress()
|
||||||
|
dataAddr := clusterProvider.GetDataPathAddress()
|
||||||
remote := clusterProvider.GetRemoteAddress()
|
remote := clusterProvider.GetRemoteAddress()
|
||||||
remoteAddr, _, _ := net.SplitHostPort(remote)
|
remoteAddr, _, _ := net.SplitHostPort(remote)
|
||||||
listen := clusterProvider.GetListenAddress()
|
listen := clusterProvider.GetListenAddress()
|
||||||
listenAddr, _, _ := net.SplitHostPort(listen)
|
listenAddr, _, _ := net.SplitHostPort(listen)
|
||||||
|
|
||||||
logrus.Infof("Initializing Libnetwork Agent Listen-Addr=%s Local-addr=%s Adv-addr=%s Remote-addr =%s", listenAddr, bindAddr, advAddr, remoteAddr)
|
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)
|
||||||
if advAddr != "" && agent == nil {
|
if advAddr != "" && agent == nil {
|
||||||
if err := c.agentInit(listenAddr, bindAddr, advAddr); err != nil {
|
if err := c.agentInit(listenAddr, bindAddr, advAddr, dataAddr); err != nil {
|
||||||
logrus.Errorf("Error in agentInit : %v", err)
|
logrus.Errorf("Error in agentInit : %v", err)
|
||||||
} else {
|
} else {
|
||||||
c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool {
|
c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool {
|
||||||
|
@ -269,7 +281,7 @@ func (c *controller) getPrimaryKeyTag(subsys string) ([]byte, uint64, error) {
|
||||||
return keys[1].Key, keys[1].LamportTime, nil
|
return keys[1].Key, keys[1].LamportTime, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *controller) agentInit(listenAddr, bindAddrOrInterface, advertiseAddr string) error {
|
func (c *controller) agentInit(listenAddr, bindAddrOrInterface, advertiseAddr, dataPathAddr string) error {
|
||||||
if !c.isAgent() {
|
if !c.isAgent() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -303,6 +315,7 @@ func (c *controller) agentInit(listenAddr, bindAddrOrInterface, advertiseAddr st
|
||||||
networkDB: nDB,
|
networkDB: nDB,
|
||||||
bindAddr: bindAddr,
|
bindAddr: bindAddr,
|
||||||
advertiseAddr: advertiseAddr,
|
advertiseAddr: advertiseAddr,
|
||||||
|
dataPathAddr: dataPathAddr,
|
||||||
epTblCancel: cancel,
|
epTblCancel: cancel,
|
||||||
driverCancelFuncs: make(map[string][]func()),
|
driverCancelFuncs: make(map[string][]func()),
|
||||||
}
|
}
|
||||||
|
@ -343,25 +356,22 @@ func (c *controller) agentDriverNotify(d driverapi.Driver) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
d.DiscoverNew(discoverapi.NodeDiscovery, discoverapi.NodeDiscoveryData{
|
if err := d.DiscoverNew(discoverapi.NodeDiscovery, discoverapi.NodeDiscoveryData{
|
||||||
Address: agent.advertiseAddr,
|
Address: agent.dataPathAddress(),
|
||||||
BindAddress: agent.bindAddr,
|
BindAddress: agent.bindAddr,
|
||||||
Self: true,
|
Self: true,
|
||||||
})
|
}); err != nil {
|
||||||
|
logrus.Warnf("Failed the node discovery in driver: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
drvEnc := discoverapi.DriverEncryptionConfig{}
|
drvEnc := discoverapi.DriverEncryptionConfig{}
|
||||||
keys, tags := c.getKeys(subsysIPSec)
|
keys, tags := c.getKeys(subsysIPSec)
|
||||||
drvEnc.Keys = keys
|
drvEnc.Keys = keys
|
||||||
drvEnc.Tags = tags
|
drvEnc.Tags = tags
|
||||||
|
|
||||||
c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool {
|
if err := d.DiscoverNew(discoverapi.EncryptionKeysConfig, drvEnc); err != nil {
|
||||||
err := driver.DiscoverNew(discoverapi.EncryptionKeysConfig, drvEnc)
|
logrus.Warnf("Failed to set datapath keys in driver: %v", err)
|
||||||
if err != nil {
|
|
||||||
logrus.Warnf("Failed to set datapath keys in driver %s: %v", name, err)
|
|
||||||
}
|
}
|
||||||
return false
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *controller) agentClose() {
|
func (c *controller) agentClose() {
|
||||||
|
|
|
@ -12,6 +12,7 @@ type Provider interface {
|
||||||
GetLocalAddress() string
|
GetLocalAddress() string
|
||||||
GetListenAddress() string
|
GetListenAddress() string
|
||||||
GetAdvertiseAddress() string
|
GetAdvertiseAddress() string
|
||||||
|
GetDataPathAddress() string
|
||||||
GetRemoteAddress() string
|
GetRemoteAddress() string
|
||||||
ListenClusterEvents() <-chan struct{}
|
ListenClusterEvents() <-chan struct{}
|
||||||
AttachNetwork(string, string, []string) (*network.NetworkingConfig, error)
|
AttachNetwork(string, string, []string) (*network.NetworkingConfig, error)
|
||||||
|
|
|
@ -312,6 +312,10 @@ func (d *dnetConnection) GetAdvertiseAddress() string {
|
||||||
return d.Orchestration.Bind
|
return d.Orchestration.Bind
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *dnetConnection) GetDataPathAddress() string {
|
||||||
|
return d.Orchestration.Bind
|
||||||
|
}
|
||||||
|
|
||||||
func (d *dnetConnection) GetLocalAddress() string {
|
func (d *dnetConnection) GetLocalAddress() string {
|
||||||
return d.Orchestration.Bind
|
return d.Orchestration.Bind
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue