Paul Hinze 8dbe72a5a0
Use Component Options to implement ProviderOptions
* Populates ComponentOptions into plugin structs
* Maps options for legacy Provider Plugins into PluginOptions
* Demos use of PluginOptions in a stub provider
* Honors plugin priority and defaultable settings
2022-06-03 16:37:05 -05:00

97 lines
2.0 KiB
Go

package provider
import (
"context"
"github.com/hashicorp/vagrant-plugin-sdk/component"
"github.com/hashicorp/vagrant-plugin-sdk/core"
)
// Happy is a provider that is just happy to be backing your vagrant VMs.
type Happy struct{}
func (p *Happy) Action(name string, args ...interface{}) error {
return nil
}
// ActionFunc implements component.Provider
func (h *Happy) ActionFunc(actionName string) interface{} {
return h.Action
}
func (h *Happy) Capability(name string, args ...interface{}) (interface{}, error) {
return nil, nil
}
// CapabilityFunc implements component.Provider
func (h *Happy) CapabilityFunc(name string) interface{} {
return h.Capability
}
func (h *Happy) HasCapability(n *component.NamedCapability) bool {
return false
}
// HasCapabilityFunc implements component.Provicer
func (h *Happy) HasCapabilityFunc() interface{} {
return h.HasCapability
}
func (h *Happy) MachineIdChanged() error {
return nil
}
// MachineIdChangedFunc implements component.Provicer
func (h *Happy) MachineIdChangedFunc() interface{} {
return h.MachineIdChanged
}
func (h *Happy) Installed(context.Context) (bool, error) {
return true, nil
}
// InstalledFunc implements component.Provider
func (h *Happy) InstalledFunc() interface{} {
return h.Installed
}
func (h *Happy) Init() (bool, error) {
return true, nil
}
// InitFunc implements component.Provider
func (h *Happy) InitFunc() interface{} {
return h.Init
}
func (h *Happy) SshInfo() (*core.SshInfo, error) {
return nil, nil
}
// SshInfoFunc implements component.Provider
func (h *Happy) SshInfoFunc() interface{} {
return h.SshInfo
}
func (h *Happy) State() (*core.MachineState, error) {
return nil, nil
}
// StateFunc implements component.Provider
func (h *Happy) StateFunc() interface{} {
return h.State
}
func (h *Happy) Usable() (bool, error) {
return false, nil
}
// UsableFunc implements component.Provider
func (h *Happy) UsableFunc() interface{} {
return h.Usable
}
var (
_ component.Provider = (*Happy)(nil)
)