func lookupPlugin(name, home string, opts []string, pg plugingetter.PluginGetter) (Driver, error) { pl, err := pg.Get(name, "GraphDriver", plugingetter.LOOKUP) if err != nil { return nil, fmt.Errorf("Error looking up graphdriver plugin %s: %v", name, err) } return newPluginDriver(name, home, opts, pl.Client()) }
func validateDriver(driver *api.Driver, pg plugingetter.PluginGetter, pluginType string) error { if driver == nil { // It is ok to not specify the driver. We will choose // a default driver. return nil } if driver.Name == "" { return grpc.Errorf(codes.InvalidArgument, "driver name: if driver is specified name is required") } if strings.ToLower(driver.Name) == networkallocator.DefaultDriver || strings.ToLower(driver.Name) == ipamapi.DefaultIPAM { return nil } p, err := pg.Get(driver.Name, pluginType, plugingetter.Lookup) if err != nil { return grpc.Errorf(codes.InvalidArgument, "error during lookup of plugin %s", driver.Name) } if p.IsV1() { return grpc.Errorf(codes.InvalidArgument, "legacy plugin %s of type %s is not supported in swarm mode", driver.Name, pluginType) } return nil }
// validates that the plugins requested with the --authorization-plugin flag are valid AuthzDriver // plugins present on the host and available to the daemon func validateAuthzPlugins(requestedPlugins []string, pg plugingetter.PluginGetter) error { for _, reqPlugin := range requestedPlugins { if _, err := pg.Get(reqPlugin, authorization.AuthZApiImplements, plugingetter.LOOKUP); err != nil { return err } } return nil }
func lookupPlugin(name string, pg plugingetter.PluginGetter, config Options) (Driver, error) { if !config.ExperimentalEnabled { return nil, fmt.Errorf("graphdriver plugins are only supported with experimental mode") } pl, err := pg.Get(name, "GraphDriver", plugingetter.Acquire) if err != nil { return nil, fmt.Errorf("Error looking up graphdriver plugin %s: %v", name, err) } return newPluginDriver(name, pl, config) }