pulumi/pkg/resource/plugin/langruntime.go
Joe Duffy 16ade183d8
Add a manifest to checkpoint files (#630)
This change adds a new manifest section to the checkpoint files.
The existing time moves into it, and we add to it the version of
the Pulumi CLI that created it, along with the names, types, and
versions of all plugins used to generate the file.  There is a
magic cookie that we also use during verification.

This is to help keep us sane when debugging problems "in the wild,"
and I'm sure we will add more to it over time (checksum, etc).

For example, after an up, you can now see this in `pulumi stack`:

```
Current stack is demo:
    Last updated at 2017-12-01 13:48:49.815740523 -0800 PST
    Pulumi version v0.8.3-79-g1ab99ad
    Plugin pulumi-provider-aws [resource] version v0.8.3-22-g4363e77
    Plugin pulumi-langhost-nodejs [language] version v0.8.3-79-g77bb6b6
    Checkpoint file is /Users/joeduffy/dev/code/src/github.com/pulumi/pulumi-aws/.pulumi/stacks/webserver/demo.json
```

This addresses pulumi/pulumi#628.
2017-12-01 13:50:32 -08:00

34 lines
1.8 KiB
Go

// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
package plugin
import (
"io"
"github.com/pulumi/pulumi/pkg/tokens"
)
// LanguageRuntime is a convenient interface for interacting with language runtime plugins. These tend to be
// dynamically loaded as plugins, although this interface hides this fact from the calling code.
type LanguageRuntime interface {
// Closer closes any underlying OS resources associated with this plugin (like processes, RPC channels, etc).
io.Closer
// Run executes a program in the language runtime for planning or deployment purposes. If info.DryRun is true,
// the code must not assume that side-effects or final values resulting from resource deployments are actually
// available. If it is false, on the other hand, a real deployment is occurring and it may safely depend on these.
Run(info RunInfo) (string, error)
// GetPluginInfo returns this plugin's information.
GetPluginInfo() (Info, error)
}
// RunInfo contains all of the information required to perform a plan or deployment operation.
type RunInfo struct {
Project string // the project name housing the program being run.
Stack string // the stack name being evaluated.
Pwd string // the program's working directory.
Program string // the path to the program to execute.
Args []string // any arguments to pass to the program.
Config map[tokens.ModuleMember]string // the configuration variables to apply before running.
DryRun bool // true if we are performing a dry-run (preview).
Parallel int // the degree of parallelism for resource operations (<=1 for serial).
}