mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
096a7afd37
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
34 lines
927 B
Go
34 lines
927 B
Go
package drivers
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/docker/docker/pkg/plugingetter"
|
|
"github.com/docker/swarmkit/api"
|
|
)
|
|
|
|
// DriverProvider provides external drivers
|
|
type DriverProvider struct {
|
|
pluginGetter plugingetter.PluginGetter
|
|
}
|
|
|
|
// New returns a new driver provider
|
|
func New(pluginGetter plugingetter.PluginGetter) *DriverProvider {
|
|
return &DriverProvider{pluginGetter: pluginGetter}
|
|
}
|
|
|
|
// NewSecretDriver creates a new driver for fetching secrets
|
|
func (m *DriverProvider) NewSecretDriver(driver *api.Driver) (*SecretDriver, error) {
|
|
if m.pluginGetter == nil {
|
|
return nil, fmt.Errorf("plugin getter is nil")
|
|
}
|
|
if driver == nil || driver.Name == "" {
|
|
return nil, fmt.Errorf("driver specification is nil")
|
|
}
|
|
// Search for the specified plugin
|
|
plugin, err := m.pluginGetter.Get(driver.Name, SecretsProviderCapability, plugingetter.Lookup)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return NewSecretDriver(plugin), nil
|
|
}
|