135 lines
3.0 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package communicator
import (
"github.com/hashicorp/go-argmapper"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/vagrant-plugin-sdk/component"
plugincore "github.com/hashicorp/vagrant-plugin-sdk/core"
pb "github.com/hashicorp/vagrant/builtin/myplugin/proto"
)
type DummyConfig struct {
}
// DummyCommunicator is a Communicator implementation for myplugin.
type DummyCommunicator struct {
config DummyConfig
}
func (h *DummyCommunicator) MatchFunc() interface{} {
return h.Match
}
func (h *DummyCommunicator) Match(machine plugincore.Machine) (isMatch bool, err error) {
return true, nil
}
func (h *DummyCommunicator) InitFunc() interface{} {
return h.Init
}
func (h *DummyCommunicator) Init(machine plugincore.Machine) error {
return nil
}
func (h *DummyCommunicator) ReadyFunc() interface{} {
return h.Ready
}
func (h *DummyCommunicator) Ready(machine plugincore.Machine) (isReady bool, err error) {
return false, nil
}
func (h *DummyCommunicator) WaitForReadyFunc() interface{} {
return h.WaitForReady
}
func (h *DummyCommunicator) WaitForReady(machine plugincore.Machine, wait int) (isReady bool, err error) {
return false, nil
}
func (h *DummyCommunicator) DownloadFunc() interface{} {
return h.Download
}
func (h *DummyCommunicator) Download(input struct {
argmapper.Struct
Machine plugincore.Machine `argmapper:",typeOnly"`
Logger hclog.Logger `argmapper:",typeOnly"`
Source string
Destination string
},
) error {
input.Logger.Debug("got Source ", input.Source)
input.Logger.Debug("got Destination ", input.Destination)
return nil
}
func (h *DummyCommunicator) UploadFunc() interface{} {
return h.Upload
}
func (h *DummyCommunicator) Upload(input struct {
argmapper.Struct
Machine plugincore.Machine `argmapper:",typeOnly"`
Logger hclog.Logger `argmapper:",typeOnly"`
Source string
Destination string
},
) error {
input.Logger.Debug("got Source ", input.Source)
input.Logger.Debug("got Destination ", input.Destination)
return nil
}
func (h *DummyCommunicator) ExecuteFunc() interface{} {
return h.Execute
}
func (h *DummyCommunicator) Execute(
machine plugincore.Machine,
command []string,
options *pb.CommunicatorOptions,
) (status int32, err error) {
return 0, nil
}
func (h *DummyCommunicator) PrivilegedExecuteFunc() interface{} {
return h.PrivilegedExecute
}
func (h *DummyCommunicator) PrivilegedExecute(
machine plugincore.Machine,
command []string,
options *pb.CommunicatorOptions,
) (status int32, err error) {
return 0, nil
}
func (h *DummyCommunicator) TestFunc() interface{} {
return h.Test
}
func (h *DummyCommunicator) Test(
machine plugincore.Machine,
command []string,
options ...pb.CommunicatorOptions,
) (valid bool, err error) {
return true, nil
}
func (h *DummyCommunicator) ResetFunc() interface{} {
return h.Reset
}
func (h *DummyCommunicator) Reset(machine plugincore.Machine) (err error) {
return nil
}
var (
_ component.Communicator = (*DummyCommunicator)(nil)
)