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  }