Remove the Engine type entirely.

It no longer carries any state. All of its methods are now package-level
functions.
This commit is contained in:
pat@pulumi.com 2018-01-08 14:20:51 -08:00
parent c56e716c31
commit 5f28d52e00
7 changed files with 23 additions and 29 deletions

View file

@ -31,12 +31,11 @@ type Backend interface {
}
type localBackend struct {
d diag.Sink
engineCache map[tokens.QName]engine.Engine
d diag.Sink
}
func New(d diag.Sink) Backend {
return &localBackend{d: d, engineCache: make(map[tokens.QName]engine.Engine)}
return &localBackend{d: d}
}
func (b *localBackend) Name() string {
@ -117,8 +116,7 @@ func (b *localBackend) Preview(stackName tokens.QName, pkg *pack.Package, root s
go displayEvents(events, done, debug)
var pulumiEngine engine.Engine
if err = pulumiEngine.Preview(update, events, opts); err != nil {
if err = engine.Preview(update, events, opts); err != nil {
return err
}
@ -141,8 +139,7 @@ func (b *localBackend) Update(stackName tokens.QName, pkg *pack.Package, root st
go displayEvents(events, done, debug)
var pulumiEngine engine.Engine
if err = pulumiEngine.Deploy(update, events, opts); err != nil {
if err = engine.Deploy(update, events, opts); err != nil {
return err
}
@ -165,8 +162,7 @@ func (b *localBackend) Destroy(stackName tokens.QName, pkg *pack.Package, root s
go displayEvents(events, done, debug)
var pulumiEngine engine.Engine
if err := pulumiEngine.Destroy(update, events, opts); err != nil {
if err := engine.Destroy(update, events, opts); err != nil {
return err
}

View file

@ -28,19 +28,19 @@ type DeployOptions struct {
Color colors.Colorization // How output should be colorized.
}
func (eng *Engine) Deploy(update Update, events chan<- Event, opts DeployOptions) error {
func Deploy(update Update, events chan<- Event, opts DeployOptions) error {
contract.Require(update != nil, "update")
contract.Require(events != nil, "events")
defer func() { events <- cancelEvent() }()
info, err := eng.planContextFromUpdate(update)
info, err := planContextFromUpdate(update)
if err != nil {
return err
}
defer info.Close()
return eng.deployLatest(info, deployOptions{
return deployLatest(info, deployOptions{
Destroy: false,
DryRun: opts.DryRun,
Analyzers: opts.Analyzers,
@ -74,8 +74,8 @@ type deployOptions struct {
Diag diag.Sink // the sink to use for diag'ing.
}
func (eng *Engine) deployLatest(info *planContext, opts deployOptions) error {
result, err := eng.plan(info, opts)
func deployLatest(info *planContext, opts deployOptions) error {
result, err := plan(info, opts)
if err != nil {
return err
}
@ -91,7 +91,7 @@ func (eng *Engine) deployLatest(info *planContext, opts deployOptions) error {
if opts.DryRun {
// If a dry run, just print the plan, don't actually carry out the deployment.
if err := eng.printPlan(result); err != nil {
if err := printPlan(result); err != nil {
return err
}
} else {

View file

@ -15,18 +15,18 @@ type DestroyOptions struct {
Color colors.Colorization
}
func (eng *Engine) Destroy(update Update, events chan<- Event, opts DestroyOptions) error {
func Destroy(update Update, events chan<- Event, opts DestroyOptions) error {
contract.Require(update != nil, "update")
defer func() { events <- cancelEvent() }()
info, err := eng.planContextFromUpdate(update)
info, err := planContextFromUpdate(update)
if err != nil {
return err
}
defer info.Close()
return eng.deployLatest(info, deployOptions{
return deployLatest(info, deployOptions{
Destroy: true,
DryRun: opts.DryRun,
Parallel: opts.Parallel,

View file

@ -7,8 +7,6 @@ import (
"github.com/pulumi/pulumi/pkg/resource/deploy"
)
type Engine int
// Update abstracts away information about an apply, preview, or destroy.
type Update interface {
// GetRoot returns the root directory for this update. This defines the scope for any filesystem resources

View file

@ -8,7 +8,7 @@ import (
)
// Callers must call Close on the resulting planContext once they have completed the associated planning operation
func (eng *Engine) planContextFromUpdate(update Update) (*planContext, error) {
func planContextFromUpdate(update Update) (*planContext, error) {
contract.Require(update != nil, "update")
// Create a root span for the operation

View file

@ -24,7 +24,7 @@ import (
)
// plan just uses the standard logic to parse arguments, options, and to create a snapshot and plan.
func (eng *Engine) plan(info *planContext, opts deployOptions) (*planResult, error) {
func plan(info *planContext, opts deployOptions) (*planResult, error) {
contract.Assert(info != nil)
contract.Assert(info.Update != nil)
@ -157,7 +157,7 @@ func (res *planResult) Close() error {
return res.Ctx.Close()
}
func (eng *Engine) printPlan(result *planResult) error {
func printPlan(result *planResult) error {
// First print config/unchanged/etc. if necessary.
var prelude bytes.Buffer
printPrelude(&prelude, result, true)

View file

@ -23,19 +23,19 @@ type PreviewOptions struct {
Color colors.Colorization
}
func (eng *Engine) Preview(update Update, events chan<- Event, opts PreviewOptions) error {
func Preview(update Update, events chan<- Event, opts PreviewOptions) error {
contract.Require(update != nil, "update")
contract.Require(events != nil, "events")
defer func() { events <- cancelEvent() }()
info, err := eng.planContextFromUpdate(update)
info, err := planContextFromUpdate(update)
if err != nil {
return err
}
defer info.Close()
return eng.previewLatest(info, deployOptions{
return previewLatest(info, deployOptions{
Destroy: false,
DryRun: true,
Analyzers: opts.Analyzers,
@ -52,8 +52,8 @@ func (eng *Engine) Preview(update Update, events chan<- Event, opts PreviewOptio
})
}
func (eng *Engine) previewLatest(info *planContext, opts deployOptions) error {
result, err := eng.plan(info, opts)
func previewLatest(info *planContext, opts deployOptions) error {
result, err := plan(info, opts)
if err != nil {
return err
}
@ -67,7 +67,7 @@ func (eng *Engine) previewLatest(info *planContext, opts deployOptions) error {
}
defer done()
if err := eng.printPlan(result); err != nil {
if err := printPlan(result); err != nil {
return err
}
}