github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/manager/drivers/provider.go (about) 1 package drivers 2 3 import ( 4 "fmt" 5 6 "github.com/docker/docker/pkg/plugingetter" 7 "github.com/docker/swarmkit/api" 8 ) 9 10 // DriverProvider provides external drivers 11 type DriverProvider struct { 12 pluginGetter plugingetter.PluginGetter 13 } 14 15 // New returns a new driver provider 16 func New(pluginGetter plugingetter.PluginGetter) *DriverProvider { 17 return &DriverProvider{pluginGetter: pluginGetter} 18 } 19 20 // NewSecretDriver creates a new driver for fetching secrets 21 func (m *DriverProvider) NewSecretDriver(driver *api.Driver) (*SecretDriver, error) { 22 if m.pluginGetter == nil { 23 return nil, fmt.Errorf("plugin getter is nil") 24 } 25 if driver == nil || driver.Name == "" { 26 return nil, fmt.Errorf("driver specification is nil") 27 } 28 // Search for the specified plugin 29 plugin, err := m.pluginGetter.Get(driver.Name, SecretsProviderCapability, plugingetter.Lookup) 30 if err != nil { 31 return nil, err 32 } 33 return NewSecretDriver(plugin), nil 34 }