func (c *controller) agentDriverNotify(d driverapi.Driver) { if c.agent == nil { return } d.DiscoverNew(discoverapi.NodeDiscovery, discoverapi.NodeDiscoveryData{ Address: c.agent.advertiseAddr, BindAddress: c.agent.bindAddr, Self: true, }) drvEnc := discoverapi.DriverEncryptionConfig{} keys, tags := c.getKeys(subsysIPSec) drvEnc.Keys = keys drvEnc.Tags = tags c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool { err := driver.DiscoverNew(discoverapi.EncryptionKeysConfig, drvEnc) if err != nil { logrus.Warnf("Failed to set datapath keys in driver %s: %v", name, err) } return false }) }
func (c *controller) agentDriverNotify(d driverapi.Driver) { if c.agent == nil { return } d.DiscoverNew(discoverapi.NodeDiscovery, discoverapi.NodeDiscoveryData{ Address: c.agent.bindAddr, Self: true, }) drvEnc := discoverapi.DriverEncryptionConfig{} for _, key := range c.keys { if key.Subsystem == "networking:gossip" /*"networking:ipsec"*/ { drvEnc.Keys = append(drvEnc.Keys, hex.EncodeToString(key.Key)) drvEnc.Tags = append(drvEnc.Tags, strconv.FormatUint(key.LamportTime, 10)) } } c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool { err := driver.DiscoverNew(discoverapi.EncryptionKeysConfig, drvEnc) if err != nil { logrus.Warnf("Failed to set datapath keys in driver %s: %v", name, err) } return false }) }
func (c *controller) agentDriverNotify(d driverapi.Driver) { if c.agent == nil { return } d.DiscoverNew(discoverapi.NodeDiscovery, discoverapi.NodeDiscoveryData{ Address: c.agent.bindAddr, Self: true, }) }
func (c *controller) RegisterDriver(networkType string, driver driverapi.Driver, capability driverapi.Capability) error { c.Lock() if !config.IsValidName(networkType) { c.Unlock() return ErrInvalidName(networkType) } if _, ok := c.drivers[networkType]; ok { c.Unlock() return driverapi.ErrActiveRegistration(networkType) } c.drivers[networkType] = &driverData{driver, capability} if c.cfg == nil { c.Unlock() return nil } opt := make(map[string]interface{}) for _, label := range c.cfg.Daemon.Labels { if strings.HasPrefix(label, netlabel.DriverPrefix+"."+networkType) { opt[netlabel.Key(label)] = netlabel.Value(label) } } if capability.DataScope == datastore.GlobalScope && c.validateGlobalStoreConfig() { opt[netlabel.KVProvider] = c.cfg.GlobalStore.Client.Provider opt[netlabel.KVProviderURL] = c.cfg.GlobalStore.Client.Address } if capability.DataScope == datastore.LocalScope { localStoreConfig := c.getLocalStoreConfig(c.cfg) opt[netlabel.KVProvider] = localStoreConfig.Client.Provider opt[netlabel.KVProviderURL] = localStoreConfig.Client.Address opt[netlabel.KVProviderConfig] = localStoreConfig.Client.Config } c.Unlock() if len(opt) != 0 { if err := driver.Config(opt); err != nil { return err } } return nil }
func (c *controller) pushNodeDiscovery(d driverapi.Driver, cap driverapi.Capability, nodes []net.IP, add bool) { var self net.IP if c.cfg != nil { addr := strings.Split(c.cfg.Cluster.Address, ":") self = net.ParseIP(addr[0]) } if d == nil || cap.DataScope != datastore.GlobalScope || nodes == nil { return } for _, node := range nodes { nodeData := discoverapi.NodeDiscoveryData{Address: node.String(), Self: node.Equal(self)} var err error if add { err = d.DiscoverNew(discoverapi.NodeDiscovery, nodeData) } else { err = d.DiscoverDelete(discoverapi.NodeDiscovery, nodeData) } if err != nil { log.Debugf("discovery notification error : %v", err) } } }