// RegisterDriver registers the network driver when it gets discovered. func (r *DrvRegistry) RegisterDriver(ntype string, driver driverapi.Driver, capability driverapi.Capability) error { if strings.TrimSpace(ntype) == "" { return fmt.Errorf("network type string cannot be empty") } r.Lock() _, ok := r.drivers[ntype] r.Unlock() if ok { return driverapi.ErrActiveRegistration(ntype) } if r.dfn != nil { if err := r.dfn(ntype, driver, capability); err != nil { return err } } dData := &driverData{driver, capability} r.Lock() r.drivers[ntype] = dData r.Unlock() return nil }
func (c *controller) RegisterDriver(networkType string, driver driverapi.Driver) error { c.Lock() defer c.Unlock() if _, ok := c.drivers[networkType]; ok { return driverapi.ErrActiveRegistration(networkType) } c.drivers[networkType] = driver return nil }
func (c *controller) RegisterDriver(networkType string, driver driverapi.Driver, capability driverapi.Capability) error { if !config.IsValidName(networkType) { return ErrInvalidName(networkType) } c.Lock() if _, ok := c.drivers[networkType]; ok { c.Unlock() return driverapi.ErrActiveRegistration(networkType) } c.drivers[networkType] = &driverData{driver, capability} c.Unlock() return nil }
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) RegisterDriver(networkType string, driver driverapi.Driver, capability driverapi.Capability) error { if !config.IsValidName(networkType) { return ErrInvalidName(networkType) } c.Lock() if _, ok := c.drivers[networkType]; ok { c.Unlock() return driverapi.ErrActiveRegistration(networkType) } dData := &driverData{driver, capability} c.drivers[networkType] = dData hd := c.discovery c.Unlock() if hd != nil { c.pushNodeDiscovery(dData, hd.Fetch(), true) } return nil }
func (c *controller) RegisterIpamDriver(name string, driver ipamapi.Ipam) error { if !config.IsValidName(name) { return ErrInvalidName(name) } c.Lock() _, ok := c.ipamDrivers[name] c.Unlock() if ok { return driverapi.ErrActiveRegistration(name) } locAS, glbAS, err := driver.GetDefaultAddressSpaces() if err != nil { return fmt.Errorf("ipam driver %s failed to return default address spaces: %v", name, err) } c.Lock() c.ipamDrivers[name] = &ipamData{driver: driver, defaultLocalAddressSpace: locAS, defaultGlobalAddressSpace: glbAS} c.Unlock() log.Debugf("Registering ipam provider: %s", name) return nil }