Clean up plugin lookup usage

This commit is contained in:
Chris Roberts 2019-03-14 14:34:33 -07:00
parent db249d58ac
commit c441fac0db
7 changed files with 84 additions and 96 deletions

View File

@ -17,12 +17,12 @@ func GuestCapabilities(pluginName, pluginType *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteGuestCapabilities)
p, ok := i.(plugin.GuestCapabilities)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
}
r.Result, r.Error = p.GuestCapabilities.GuestCapabilities()
r.Result, r.Error = p.GuestCapabilities()
return r.Dump()
}
@ -34,7 +34,7 @@ func GuestCapability(pluginName, pluginType, cname, cplatform, cargs, cmachine *
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteGuestCapabilities)
p, ok := i.(plugin.GuestCapabilities)
if !ok {
r.Error = errors.New("Failed to load requested plugin")
return r.Dump()
@ -53,7 +53,7 @@ func GuestCapability(pluginName, pluginType, cname, cplatform, cargs, cmachine *
cap := &vagrant.SystemCapability{
Name: to_gs(cname),
Platform: to_gs(cplatform)}
r.Result, r.Error = p.GuestCapabilities.GuestCapability(cap, args, machine)
r.Result, r.Error = p.GuestCapability(cap, args, machine)
return r.Dump()
}
@ -65,13 +65,13 @@ func HostCapabilities(pluginName, pluginType *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteHostCapabilities)
p, ok := i.(plugin.HostCapabilities)
if !ok {
r.Error = errors.New("Failed to load requested plugin")
return r.Dump()
}
r.Result, r.Error = p.HostCapabilities.HostCapabilities()
r.Result, r.Error = p.HostCapabilities()
return r.Dump()
}
@ -83,7 +83,7 @@ func HostCapability(pluginName, pluginType, cname, cplatform, cargs, cenv *C.cha
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteHostCapabilities)
p, ok := i.(plugin.HostCapabilities)
if !ok {
r.Error = errors.New("Failed to load requested plugin")
return r.Dump()
@ -103,7 +103,7 @@ func HostCapability(pluginName, pluginType, cname, cplatform, cargs, cenv *C.cha
cap := &vagrant.SystemCapability{
Name: to_gs(cname),
Platform: to_gs(cplatform)}
r.Result, r.Error = p.HostCapabilities.HostCapability(cap, args, env)
r.Result, r.Error = p.HostCapability(cap, args, env)
return r.Dump()
}
@ -115,13 +115,13 @@ func ProviderCapabilities(pluginName, pluginType *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProviderCapabilities)
p, ok := i.(plugin.ProviderCapabilities)
if !ok {
r.Error = errors.New("Failed to load requested plugin")
return r.Dump()
}
r.Result, r.Error = p.ProviderCapabilities.ProviderCapabilities()
r.Result, r.Error = p.ProviderCapabilities()
return r.Dump()
}
@ -133,7 +133,7 @@ func ProviderCapability(pluginName, pluginType, cname, cprovider, cargs, cmach *
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProviderCapabilities)
p, ok := i.(plugin.ProviderCapabilities)
if !ok {
r.Error = errors.New("Failed to load requested plugin")
return r.Dump()
@ -153,6 +153,6 @@ func ProviderCapability(pluginName, pluginType, cname, cprovider, cargs, cmach *
cap := &vagrant.ProviderCapability{
Name: to_gs(cname),
Provider: to_gs(cprovider)}
r.Result, r.Error = p.ProviderCapabilities.ProviderCapability(cap, args, m)
r.Result, r.Error = p.ProviderCapability(cap, args, m)
return r.Dump()
}

View File

@ -23,11 +23,9 @@ func TestCapabilities_GuestCapabilities(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteGuestCapabilities{
GuestCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -69,11 +67,9 @@ func TestCapabilities_GuestCapability(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteGuestCapabilities{
GuestCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -116,11 +112,9 @@ func TestCapabilities_GuestCapability_noargs(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteGuestCapabilities{
GuestCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -158,11 +152,9 @@ func TestCapabilities_HostCapabilities(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteHostCapabilities{
HostCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -204,11 +196,9 @@ func TestCapabilities_HostCapability(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteHostCapabilities{
HostCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -251,11 +241,9 @@ func TestCapabilities_HostCapability_noargs(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteHostCapabilities{
HostCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -293,11 +281,9 @@ func TestCapabilities_ProviderCapabilities(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProviderCapabilities{
ProviderCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -339,11 +325,9 @@ func TestCapabilities_ProviderCapability(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProviderCapabilities{
ProviderCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -386,11 +370,9 @@ func TestCapabilities_ProviderCapability_noargs(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProviderCapabilities{
ProviderCapabilities: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}

View File

@ -17,7 +17,7 @@ func ConfigLoad(pluginName, pluginType, data *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteConfig)
p, ok := i.(plugin.Config)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -27,7 +27,7 @@ func ConfigLoad(pluginName, pluginType, data *C.char) *C.char {
if r.Error != nil {
return r.Dump()
}
r.Result, r.Error = p.Config.ConfigLoad(cdata)
r.Result, r.Error = p.ConfigLoad(cdata)
return r.Dump()
}
@ -39,12 +39,12 @@ func ConfigAttributes(pluginName, pluginType *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteConfig)
p, ok := i.(plugin.Config)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
}
r.Result, r.Error = p.Config.ConfigAttributes()
r.Result, r.Error = p.ConfigAttributes()
return r.Dump()
}
@ -57,7 +57,7 @@ func ConfigValidate(pluginName, pluginType, data, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteConfig)
p, ok := i.(plugin.Config)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -71,7 +71,7 @@ func ConfigValidate(pluginName, pluginType, data, machData *C.char) *C.char {
if r.Error != nil {
return r.Dump()
}
r.Result, r.Error = p.Config.ConfigValidate(cdata, m)
r.Result, r.Error = p.ConfigValidate(cdata, m)
return r.Dump()
}
@ -83,7 +83,7 @@ func ConfigFinalize(pluginName, pluginType, data *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteConfig)
p, ok := i.(plugin.Config)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -91,7 +91,7 @@ func ConfigFinalize(pluginName, pluginType, data *C.char) *C.char {
var cdata map[string]interface{}
r.Error = json.Unmarshal([]byte(to_gs(data)), &cdata)
if r.Error == nil {
r.Result, r.Error = p.Config.ConfigFinalize(cdata)
r.Result, r.Error = p.ConfigFinalize(cdata)
}
return r.Dump()
}

View File

@ -23,11 +23,9 @@ func TestConfig_Load(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteConfig{
Config: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -73,11 +71,9 @@ func TestConfig_Attributes(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteConfig{
Config: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -120,11 +116,9 @@ func TestConfig_Validate(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteConfig{
Config: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -170,11 +164,9 @@ func TestConfig_Finalize(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteConfig{
Config: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}

View File

@ -31,7 +31,7 @@ func ProviderAction(providerName *C.char, actionName *C.char, machData *C.char)
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProvider)
p, ok := i.(plugin.Provider)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -42,7 +42,7 @@ func ProviderAction(providerName *C.char, actionName *C.char, machData *C.char)
return r.Dump()
}
aName := to_gs(actionName)
r.Result, r.Error = p.Provider.Action(aName, m)
r.Result, r.Error = p.Action(aName, m)
return r.Dump()
}
@ -54,7 +54,7 @@ func ProviderIsInstalled(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProvider)
p, ok := i.(plugin.Provider)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -64,7 +64,7 @@ func ProviderIsInstalled(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
r.Result, r.Error = p.Provider.IsInstalled(m)
r.Result, r.Error = p.IsInstalled(m)
return r.Dump()
}
@ -76,7 +76,7 @@ func ProviderIsUsable(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProvider)
p, ok := i.(plugin.Provider)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -87,7 +87,7 @@ func ProviderIsUsable(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
r.Result, r.Error = p.Provider.IsUsable(m)
r.Result, r.Error = p.IsUsable(m)
return r.Dump()
}
@ -99,7 +99,7 @@ func ProviderMachineIdChanged(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProvider)
p, ok := i.(plugin.Provider)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -109,7 +109,7 @@ func ProviderMachineIdChanged(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
r.Error = p.Provider.MachineIdChanged(m)
r.Error = p.MachineIdChanged(m)
return r.Dump()
}
@ -121,7 +121,7 @@ func ProviderRunAction(providerName *C.char, actName *C.char, runData *C.char, m
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProvider)
p, ok := i.(plugin.Provider)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -138,7 +138,7 @@ func ProviderRunAction(providerName *C.char, actName *C.char, runData *C.char, m
r.Error = err
return r.Dump()
}
r.Result, r.Error = p.Provider.RunAction(aName, rData, m)
r.Result, r.Error = p.RunAction(aName, rData, m)
return r.Dump()
}
@ -150,7 +150,7 @@ func ProviderSshInfo(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProvider)
p, ok := i.(plugin.Provider)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -160,7 +160,7 @@ func ProviderSshInfo(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
r.Result, r.Error = p.Provider.SshInfo(m)
r.Result, r.Error = p.SshInfo(m)
return r.Dump()
}
@ -172,7 +172,7 @@ func ProviderState(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
p, ok := i.(*plugin.RemoteProvider)
p, ok := i.(plugin.Provider)
if !ok {
r.Error = errors.New("failed to load requested plugin")
return r.Dump()
@ -182,6 +182,6 @@ func ProviderState(providerName *C.char, machData *C.char) *C.char {
r.Error = err
return r.Dump()
}
r.Result, r.Error = p.Provider.State(m)
r.Result, r.Error = p.State(m)
return r.Dump()
}

View File

@ -74,11 +74,9 @@ func TestProvider_ProviderAction(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProvider{
Provider: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -108,11 +106,9 @@ func TestProvider_ProviderIsInstalled(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProvider{
Provider: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -142,11 +138,9 @@ func TestProvider_ProviderIsUsable(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProvider{
Provider: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -176,11 +170,9 @@ func TestProvider_ProviderMachineIdChanged(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProvider{
Provider: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -206,11 +198,9 @@ func TestProvider_ProviderRunAction(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProvider{
Provider: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -250,11 +240,9 @@ func TestProvider_ProviderSshInfo(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProvider{
Provider: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}
@ -292,11 +280,9 @@ func TestProvider_ProviderState(t *testing.T) {
t.Fatalf("bad %#v", raw)
}
p := &vplugin.RemoteProvider{
Provider: impl}
Plugins = vplugin.VagrantPluginInit()
Plugins.PluginLookup = func(_, _ string) (r interface{}, err error) {
r = p
r = impl
return
}

View File

@ -19,36 +19,64 @@ var (
ProtocolVersion: 1}
)
type RemotePlugin interface {
Impl() interface{}
}
type RemoteConfig struct {
Client *go_plugin.Client
Config vagrant.Config
}
func (r *RemoteConfig) Impl() interface{} {
return r.Config
}
type RemoteProvider struct {
Client *go_plugin.Client
Provider Provider
}
func (r *RemoteProvider) Impl() interface{} {
return r.Provider
}
type RemoteGuestCapabilities struct {
Client *go_plugin.Client
GuestCapabilities vagrant.GuestCapabilities
}
func (r *RemoteGuestCapabilities) Impl() interface{} {
return r.GuestCapabilities
}
type RemoteHostCapabilities struct {
Client *go_plugin.Client
HostCapabilities vagrant.HostCapabilities
}
func (r *RemoteHostCapabilities) Impl() interface{} {
return r.HostCapabilities
}
type RemoteProviderCapabilities struct {
Client *go_plugin.Client
ProviderCapabilities vagrant.ProviderCapabilities
}
func (r *RemoteProviderCapabilities) Impl() interface{} {
return r.ProviderCapabilities
}
type RemoteSyncedFolder struct {
Client *go_plugin.Client
SyncedFolder vagrant.SyncedFolder
}
func (r *RemoteSyncedFolder) Impl() interface{} {
return r.SyncedFolder
}
type VagrantPlugin struct {
Providers map[string]*RemoteProvider
SyncedFolders map[string]*RemoteSyncedFolder
@ -70,9 +98,9 @@ func VagrantPluginInit() *VagrantPlugin {
func (v *VagrantPlugin) DefaultPluginLookup(name, kind string) (p interface{}, err error) {
switch kind {
case "provider":
p = v.Providers[name]
p = v.Providers[name].Impl()
case "synced_folder":
p = v.SyncedFolders[name]
p = v.SyncedFolders[name].Impl()
default:
err = errors.New("invalid plugin type")
return