Documentation ¶
Overview ¶
Package rpc contains the implementation of the remote procedure call code that the Packer core uses to communicate with packer plugins. As a plugin maintainer, you are unlikely to need to directly import or use this package, but it underpins the packer server that all plugins must implement.
Index ¶
- Constants
- func Communicator(client *rpc.Client) *communicator
- func NewFileInfo(fi os.FileInfo) *fileInfo
- type ArtifactServer
- func (s *ArtifactServer) BuilderId(args *interface{}, reply *string) error
- func (s *ArtifactServer) Destroy(args *interface{}, reply *error) error
- func (s *ArtifactServer) Files(args *interface{}, reply *[]string) error
- func (s *ArtifactServer) Id(args *interface{}, reply *string) error
- func (s *ArtifactServer) State(name string, reply *interface{}) error
- func (s *ArtifactServer) String(args *interface{}, reply *string) error
- type BasicError
- type BuildPrepareResponse
- type BuildServer
- func (b *BuildServer) Cancel(args *interface{}, reply *interface{}) error
- func (b *BuildServer) Name(args *interface{}, reply *string) error
- func (b *BuildServer) Prepare(args *interface{}, resp *BuildPrepareResponse) error
- func (b *BuildServer) Run(streamId uint32, reply *[]uint32) error
- func (b *BuildServer) SetDebug(val *bool, reply *interface{}) error
- func (b *BuildServer) SetForce(val *bool, reply *interface{}) error
- func (b *BuildServer) SetOnError(val *string, reply *interface{}) error
- type BuilderPrepareArgs
- type BuilderPrepareResponse
- type BuilderServer
- func (b *BuilderServer) Cancel(args *interface{}, reply *interface{}) error
- func (s *BuilderServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
- func (b *BuilderServer) Prepare(args *BuilderPrepareArgs, reply *BuilderPrepareResponse) error
- func (b *BuilderServer) Run(streamId uint32, reply *uint32) error
- type Client
- func (c *Client) Artifact() packer.Artifact
- func (c *Client) Build() packer.Build
- func (c *Client) Builder() packer.Builder
- func (c *Client) Close() error
- func (c *Client) Communicator() packer.Communicator
- func (c *Client) Datasource() packer.Datasource
- func (c *Client) Hook() packer.Hook
- func (c *Client) PostProcessor() packer.PostProcessor
- func (c *Client) Provisioner() packer.Provisioner
- func (c *Client) Ui() packer.Ui
- type CommandFinished
- type CommunicatorDownloadArgs
- type CommunicatorDownloadDirArgs
- type CommunicatorServer
- func (s *CommunicatorServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
- func (c *CommunicatorServer) Download(args *CommunicatorDownloadArgs, reply *interface{}) (err error)
- func (c *CommunicatorServer) DownloadDir(args *CommunicatorUploadDirArgs, reply *error) error
- func (c *CommunicatorServer) Start(args *CommunicatorStartArgs, reply *interface{}) error
- func (c *CommunicatorServer) Upload(args *CommunicatorUploadArgs, reply *interface{}) (err error)
- func (c *CommunicatorServer) UploadDir(args *CommunicatorUploadDirArgs, reply *error) error
- type CommunicatorStartArgs
- type CommunicatorUploadArgs
- type CommunicatorUploadDirArgs
- type ConfigSpecResponse
- type DatasourceConfigureArgs
- type DatasourceConfigureResponse
- type DatasourceServer
- func (d *DatasourceServer) Cancel(args *interface{}, reply *interface{}) error
- func (s *DatasourceServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
- func (d *DatasourceServer) Configure(args *DatasourceConfigureArgs, reply *DatasourceConfigureResponse) error
- func (d *DatasourceServer) Execute(args *interface{}, reply *ExecuteResponse) error
- func (d *DatasourceServer) OutputSpec(args *DatasourceConfigureArgs, reply *OutputSpecResponse) error
- type ExecuteResponse
- type HookRunArgs
- type HookServer
- type OutputSpecResponse
- type PluginServer
- func (s *PluginServer) Close() error
- func (s *PluginServer) RegisterArtifact(a packer.Artifact) error
- func (s *PluginServer) RegisterBuild(b packer.Build) error
- func (s *PluginServer) RegisterBuilder(b packer.Builder) error
- func (s *PluginServer) RegisterCommunicator(c packer.Communicator) error
- func (s *PluginServer) RegisterDatasource(d packer.Datasource) error
- func (s *PluginServer) RegisterHook(h packer.Hook) error
- func (s *PluginServer) RegisterPostProcessor(p packer.PostProcessor) error
- func (s *PluginServer) RegisterProvisioner(p packer.Provisioner) error
- func (s *PluginServer) RegisterUi(ui packer.Ui) error
- func (s *PluginServer) Serve()
- type PostProcessorConfigureArgs
- type PostProcessorProcessResponse
- type PostProcessorServer
- func (b *PostProcessorServer) Cancel(args *interface{}, reply *interface{}) error
- func (s *PostProcessorServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
- func (p *PostProcessorServer) Configure(args *PostProcessorConfigureArgs, reply *interface{}) (err error)
- func (p *PostProcessorServer) PostProcess(streamId uint32, reply *PostProcessorProcessResponse) error
- type ProgressTrackingClient
- type ProgressTrackingServer
- type ProvisionerPrepareArgs
- type ProvisionerProvisionArgs
- type ProvisionerServer
- func (p *ProvisionerServer) Cancel(args *interface{}, reply *interface{}) error
- func (s *ProvisionerServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
- func (p *ProvisionerServer) Prepare(args *ProvisionerPrepareArgs, reply *interface{}) error
- func (p *ProvisionerServer) Provision(args *ProvisionerProvisionArgs, reply *interface{}) error
- type TrackProgressParameters
- type Ui
- func (u *Ui) Ask(query string) (result string, err error)
- func (u *Ui) Askf(query string, args ...any) (string, error)
- func (p *Ui) ConfigSpec() hcldec.ObjectSpec
- func (u *Ui) Error(message string)
- func (u *Ui) Errorf(message string, args ...any)
- func (u *Ui) Machine(t string, args ...string)
- func (u *Ui) Message(message string)
- func (u *Ui) Say(message string)
- func (u *Ui) Sayf(message string, args ...any)
- func (u *Ui) TrackProgress(src string, currentSize, totalSize int64, stream io.ReadCloser) io.ReadCloser
- type UiMachineArgs
- type UiServer
- func (u *UiServer) Ask(query string, reply *string) (err error)
- func (u *UiServer) Error(message *string, reply *interface{}) error
- func (u *UiServer) Machine(args *UiMachineArgs, reply *interface{}) error
- func (u *UiServer) Message(message *string, reply *interface{}) error
- func (ui *UiServer) NewTrackProgress(pl *TrackProgressParameters, reply *string) error
- func (u *UiServer) Say(message *string, reply *interface{}) error
Constants ¶
const ( DefaultArtifactEndpoint string = "Artifact" DefaultBuildEndpoint string = "Build" DefaultBuilderEndpoint string = "Builder" DefaultCacheEndpoint string = "Cache" DefaultCommandEndpoint string = "Command" DefaultCommunicatorEndpoint string = "Communicator" DefaultHookEndpoint string = "Hook" DefaultPostProcessorEndpoint string = "PostProcessor" DefaultProvisionerEndpoint string = "Provisioner" DefaultDatasourceEndpoint string = "Datasource" DefaultUiEndpoint string = "Ui" )
Variables ¶
This section is empty.
Functions ¶
func Communicator ¶
func NewFileInfo ¶
Types ¶
type ArtifactServer ¶
type ArtifactServer struct {
// contains filtered or unexported fields
}
ArtifactServer wraps a packersdk.Artifact implementation and makes it exportable as part of a Golang RPC server.
func (*ArtifactServer) BuilderId ¶
func (s *ArtifactServer) BuilderId(args *interface{}, reply *string) error
func (*ArtifactServer) Destroy ¶
func (s *ArtifactServer) Destroy(args *interface{}, reply *error) error
func (*ArtifactServer) Files ¶
func (s *ArtifactServer) Files(args *interface{}, reply *[]string) error
func (*ArtifactServer) Id ¶
func (s *ArtifactServer) Id(args *interface{}, reply *string) error
func (*ArtifactServer) State ¶
func (s *ArtifactServer) State(name string, reply *interface{}) error
func (*ArtifactServer) String ¶
func (s *ArtifactServer) String(args *interface{}, reply *string) error
type BasicError ¶
type BasicError struct {
Message string
}
This is a type that wraps error types so that they can be messaged across RPC channels. Since "error" is an interface, we can't always gob-encode the underlying structure. This is a valid error interface implementer that we will push across.
func NewBasicError ¶
func NewBasicError(err error) *BasicError
func (*BasicError) Error ¶
func (e *BasicError) Error() string
type BuildPrepareResponse ¶
type BuildPrepareResponse struct { Warnings []string Error *BasicError }
type BuildServer ¶
type BuildServer struct {
// contains filtered or unexported fields
}
BuildServer wraps a packersdk.Build implementation and makes it exportable as part of a Golang RPC server.
func (*BuildServer) Cancel ¶
func (b *BuildServer) Cancel(args *interface{}, reply *interface{}) error
func (*BuildServer) Name ¶
func (b *BuildServer) Name(args *interface{}, reply *string) error
func (*BuildServer) Prepare ¶
func (b *BuildServer) Prepare(args *interface{}, resp *BuildPrepareResponse) error
func (*BuildServer) SetDebug ¶
func (b *BuildServer) SetDebug(val *bool, reply *interface{}) error
func (*BuildServer) SetForce ¶
func (b *BuildServer) SetForce(val *bool, reply *interface{}) error
func (*BuildServer) SetOnError ¶
func (b *BuildServer) SetOnError(val *string, reply *interface{}) error
type BuilderPrepareArgs ¶
type BuilderPrepareArgs struct {
Configs []interface{}
}
type BuilderPrepareResponse ¶
type BuilderPrepareResponse struct { GeneratedVars []string Warnings []string Error *BasicError }
type BuilderServer ¶
type BuilderServer struct {
// contains filtered or unexported fields
}
BuilderServer wraps a packersdk.Builder implementation and makes it exportable as part of a Golang RPC server.
func (*BuilderServer) Cancel ¶
func (b *BuilderServer) Cancel(args *interface{}, reply *interface{}) error
func (*BuilderServer) ConfigSpec ¶
func (s *BuilderServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
func (*BuilderServer) Prepare ¶
func (b *BuilderServer) Prepare(args *BuilderPrepareArgs, reply *BuilderPrepareResponse) error
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is the client end that communicates with a Packer RPC server. Establishing a connection is up to the user. The Client can communicate over any ReadWriteCloser. In Packer, each "plugin" (builder, provisioner, and post-processor) creates and launches a server. The the packer "core" creates and uses the client.
func (*Client) Communicator ¶
func (c *Client) Communicator() packer.Communicator
func (*Client) Datasource ¶ added in v0.0.7
func (c *Client) Datasource() packer.Datasource
func (*Client) PostProcessor ¶
func (c *Client) PostProcessor() packer.PostProcessor
func (*Client) Provisioner ¶
func (c *Client) Provisioner() packer.Provisioner
type CommandFinished ¶
type CommandFinished struct {
ExitStatus int
}
type CommunicatorServer ¶
type CommunicatorServer struct {
// contains filtered or unexported fields
}
CommunicatorServer wraps a packersdk.Communicator implementation and makes it exportable as part of a Golang RPC server.
func (*CommunicatorServer) ConfigSpec ¶
func (s *CommunicatorServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
func (*CommunicatorServer) Download ¶
func (c *CommunicatorServer) Download(args *CommunicatorDownloadArgs, reply *interface{}) (err error)
func (*CommunicatorServer) DownloadDir ¶
func (c *CommunicatorServer) DownloadDir(args *CommunicatorUploadDirArgs, reply *error) error
func (*CommunicatorServer) Start ¶
func (c *CommunicatorServer) Start(args *CommunicatorStartArgs, reply *interface{}) error
func (*CommunicatorServer) Upload ¶
func (c *CommunicatorServer) Upload(args *CommunicatorUploadArgs, reply *interface{}) (err error)
func (*CommunicatorServer) UploadDir ¶
func (c *CommunicatorServer) UploadDir(args *CommunicatorUploadDirArgs, reply *error) error
type CommunicatorStartArgs ¶
type CommunicatorUploadArgs ¶
type ConfigSpecResponse ¶
type ConfigSpecResponse struct {
ConfigSpec []byte
}
type DatasourceConfigureArgs ¶ added in v0.0.7
type DatasourceConfigureArgs struct {
Configs []interface{}
}
type DatasourceConfigureResponse ¶ added in v0.0.7
type DatasourceConfigureResponse struct {
Error *BasicError
}
type DatasourceServer ¶ added in v0.0.7
type DatasourceServer struct {
// contains filtered or unexported fields
}
DatasourceServer wraps a packer.Datasource implementation and makes it exportable as part of a Golang RPC server.
func (*DatasourceServer) Cancel ¶ added in v0.0.7
func (d *DatasourceServer) Cancel(args *interface{}, reply *interface{}) error
func (*DatasourceServer) ConfigSpec ¶ added in v0.0.7
func (s *DatasourceServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
func (*DatasourceServer) Configure ¶ added in v0.0.7
func (d *DatasourceServer) Configure(args *DatasourceConfigureArgs, reply *DatasourceConfigureResponse) error
func (*DatasourceServer) Execute ¶ added in v0.0.7
func (d *DatasourceServer) Execute(args *interface{}, reply *ExecuteResponse) error
func (*DatasourceServer) OutputSpec ¶ added in v0.0.7
func (d *DatasourceServer) OutputSpec(args *DatasourceConfigureArgs, reply *OutputSpecResponse) error
type ExecuteResponse ¶ added in v0.0.7
type ExecuteResponse struct { Value []byte Error *BasicError }
type HookRunArgs ¶
type HookServer ¶
type HookServer struct {
// contains filtered or unexported fields
}
HookServer wraps a packersdk.Hook implementation and makes it exportable as part of a Golang RPC server.
func (*HookServer) Cancel ¶
func (h *HookServer) Cancel(args *interface{}, reply *interface{}) error
func (*HookServer) Run ¶
func (h *HookServer) Run(args *HookRunArgs, reply *interface{}) error
type OutputSpecResponse ¶ added in v0.0.7
type OutputSpecResponse struct {
OutputSpec []byte
}
type PluginServer ¶ added in v0.0.11
type PluginServer struct {
// contains filtered or unexported fields
}
PluginServer represents an RPC server for Packer. This must be paired on the other side with a PluginClient. In Packer, each "plugin" (builder, provisioner, and post-processor) creates and launches a server. The client created and used by the packer "core"
func NewServer ¶
func NewServer(conn io.ReadWriteCloser) (*PluginServer, error)
NewServer returns a new Packer RPC server.
func (*PluginServer) Close ¶ added in v0.0.11
func (s *PluginServer) Close() error
func (*PluginServer) RegisterArtifact ¶ added in v0.0.11
func (s *PluginServer) RegisterArtifact(a packer.Artifact) error
func (*PluginServer) RegisterBuild ¶ added in v0.0.11
func (s *PluginServer) RegisterBuild(b packer.Build) error
func (*PluginServer) RegisterBuilder ¶ added in v0.0.11
func (s *PluginServer) RegisterBuilder(b packer.Builder) error
func (*PluginServer) RegisterCommunicator ¶ added in v0.0.11
func (s *PluginServer) RegisterCommunicator(c packer.Communicator) error
func (*PluginServer) RegisterDatasource ¶ added in v0.0.11
func (s *PluginServer) RegisterDatasource(d packer.Datasource) error
func (*PluginServer) RegisterHook ¶ added in v0.0.11
func (s *PluginServer) RegisterHook(h packer.Hook) error
func (*PluginServer) RegisterPostProcessor ¶ added in v0.0.11
func (s *PluginServer) RegisterPostProcessor(p packer.PostProcessor) error
func (*PluginServer) RegisterProvisioner ¶ added in v0.0.11
func (s *PluginServer) RegisterProvisioner(p packer.Provisioner) error
func (*PluginServer) RegisterUi ¶ added in v0.0.11
func (s *PluginServer) RegisterUi(ui packer.Ui) error
func (*PluginServer) Serve ¶ added in v0.0.11
func (s *PluginServer) Serve()
ServeConn serves a single connection over the RPC server. It is up to the caller to obtain a proper io.ReadWriteCloser.
type PostProcessorConfigureArgs ¶
type PostProcessorConfigureArgs struct {
Configs []interface{}
}
type PostProcessorProcessResponse ¶
type PostProcessorProcessResponse struct { Err *BasicError Keep bool ForceOverride bool StreamId uint32 }
type PostProcessorServer ¶
type PostProcessorServer struct {
// contains filtered or unexported fields
}
PostProcessorServer wraps a packersdk.PostProcessor implementation and makes it exportable as part of a Golang RPC server.
func (*PostProcessorServer) Cancel ¶
func (b *PostProcessorServer) Cancel(args *interface{}, reply *interface{}) error
func (*PostProcessorServer) ConfigSpec ¶
func (s *PostProcessorServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
func (*PostProcessorServer) Configure ¶
func (p *PostProcessorServer) Configure(args *PostProcessorConfigureArgs, reply *interface{}) (err error)
func (*PostProcessorServer) PostProcess ¶
func (p *PostProcessorServer) PostProcess(streamId uint32, reply *PostProcessorProcessResponse) error
type ProgressTrackingClient ¶
type ProgressTrackingClient struct {
// contains filtered or unexported fields
}
func (*ProgressTrackingClient) Close ¶
func (u *ProgressTrackingClient) Close() error
type ProgressTrackingServer ¶
type ProgressTrackingServer struct {
// contains filtered or unexported fields
}
func (*ProgressTrackingServer) Add ¶
func (t *ProgressTrackingServer) Add(size int, _ *interface{}) error
func (*ProgressTrackingServer) Close ¶
func (t *ProgressTrackingServer) Close(_, _ *interface{}) error
type ProvisionerPrepareArgs ¶
type ProvisionerPrepareArgs struct {
Configs []interface{}
}
type ProvisionerServer ¶
type ProvisionerServer struct {
// contains filtered or unexported fields
}
ProvisionerServer wraps a packersdk.Provisioner implementation and makes it exportable as part of a Golang RPC server.
func (*ProvisionerServer) Cancel ¶
func (p *ProvisionerServer) Cancel(args *interface{}, reply *interface{}) error
func (*ProvisionerServer) ConfigSpec ¶
func (s *ProvisionerServer) ConfigSpec(_ interface{}, reply *ConfigSpecResponse) error
func (*ProvisionerServer) Prepare ¶
func (p *ProvisionerServer) Prepare(args *ProvisionerPrepareArgs, reply *interface{}) error
func (*ProvisionerServer) Provision ¶
func (p *ProvisionerServer) Provision(args *ProvisionerProvisionArgs, reply *interface{}) error
type TrackProgressParameters ¶
type Ui ¶
type Ui struct {
// contains filtered or unexported fields
}
An implementation of packersdk.Ui where the Ui is actually executed over an RPC connection.
func (*Ui) ConfigSpec ¶
func (p *Ui) ConfigSpec() hcldec.ObjectSpec
func (*Ui) TrackProgress ¶
func (u *Ui) TrackProgress(src string, currentSize, totalSize int64, stream io.ReadCloser) io.ReadCloser
TrackProgress starts a pair of ProgressTrackingClient and ProgressProgressTrackingServer that will send the size of each read bytes of stream. In order to track an operation on the terminal side.
type UiMachineArgs ¶
The arguments sent to Ui.Machine
type UiServer ¶
type UiServer struct {
// contains filtered or unexported fields
}
UiServer wraps a packersdk.Ui implementation and makes it exportable as part of a Golang RPC server.
func (*UiServer) Machine ¶
func (u *UiServer) Machine(args *UiMachineArgs, reply *interface{}) error
func (*UiServer) NewTrackProgress ¶
func (ui *UiServer) NewTrackProgress(pl *TrackProgressParameters, reply *string) error