Exposed address source start/stop APIs for CNI plugin

This commit is contained in:
Onur Filiz 2017-01-19 16:29:55 -08:00
Родитель ab954ef1c6
Коммит 8e2c0df38d
1 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@ -33,7 +33,11 @@ type AddressManager interface {
Initialize(config *common.PluginConfig, options map[string]interface{}) error Initialize(config *common.PluginConfig, options map[string]interface{}) error
Uninitialize() Uninitialize()
StartSource(options map[string]interface{}) error
StopSource()
GetDefaultAddressSpaces() (string, string) GetDefaultAddressSpaces() (string, string)
RequestPool(asId, poolId, subPoolId string, options map[string]string, v6 bool) (string, string, error) RequestPool(asId, poolId, subPoolId string, options map[string]string, v6 bool) (string, string, error)
ReleasePool(asId, poolId string) error ReleasePool(asId, poolId string) error
GetPoolInfo(asId, poolId string) (*AddressPoolInfo, error) GetPoolInfo(asId, poolId string) (*AddressPoolInfo, error)
@ -77,14 +81,14 @@ func (am *addressManager) Initialize(config *common.PluginConfig, options map[st
} }
// Start source. // Start source.
err = am.startSource(options) err = am.StartSource(options)
return err return err
} }
// Uninitialize cleans up address manager. // Uninitialize cleans up address manager.
func (am *addressManager) Uninitialize() { func (am *addressManager) Uninitialize() {
am.stopSource() am.StopSource()
} }
// Restore reads address manager state from persistent store. // Restore reads address manager state from persistent store.
@ -149,7 +153,7 @@ func (am *addressManager) save() error {
} }
// Starts configuration source. // Starts configuration source.
func (am *addressManager) startSource(options map[string]interface{}) error { func (am *addressManager) StartSource(options map[string]interface{}) error {
var err error var err error
environment, _ := options[common.OptEnvironment].(string) environment, _ := options[common.OptEnvironment].(string)
@ -172,14 +176,19 @@ func (am *addressManager) startSource(options map[string]interface{}) error {
} }
if am.source != nil { if am.source != nil {
log.Printf("[ipam] Starting source %v.", environment)
err = am.source.start(am) err = am.source.start(am)
} }
if err != nil {
log.Printf("[ipam] Failed to start source %v, err:%v.", environment, err)
}
return err return err
} }
// Stops the configuration source. // Stops the configuration source.
func (am *addressManager) stopSource() { func (am *addressManager) StopSource() {
if am.source != nil { if am.source != nil {
am.source.stop() am.source.stop()
am.source = nil am.source = nil