The existing logic would flow colorization information into the engine, so depending on the settings in the CLI, the engine may or may not have emitted colorized events. This coupling is not great and we want to start moving to a world where the presentation happens exclusively at the CLI level. With this change, the engine will always produce strings that have the colorization formatting directives (i.e. the directives that reconquest/loreley understands) and the CLI will apply colorization (which could mean either running loreley to turn the directives into ANSI escape codes, or drop them or retain them, for debuging purposes). Fixes #742
80 lines
3.4 KiB
Go
80 lines
3.4 KiB
Go
// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
|
|
|
|
package backend
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/pulumi/pulumi/pkg/engine"
|
|
"github.com/pulumi/pulumi/pkg/operations"
|
|
"github.com/pulumi/pulumi/pkg/pack"
|
|
"github.com/pulumi/pulumi/pkg/resource/config"
|
|
"github.com/pulumi/pulumi/pkg/resource/deploy"
|
|
"github.com/pulumi/pulumi/pkg/tokens"
|
|
)
|
|
|
|
// Stack is a stack associated with a particular backend implementation.
|
|
type Stack interface {
|
|
Name() tokens.QName // this stack's name.
|
|
Config() config.Map // the current config map.
|
|
Snapshot() *deploy.Snapshot // the latest deployment snapshot.
|
|
Backend() Backend // the backend this stack belongs to.
|
|
|
|
// Preview changes to this stack.
|
|
Preview(pkg *pack.Package, root string,
|
|
debug bool, opts engine.UpdateOptions, displayOpts DisplayOptions) error
|
|
// Update this stack.
|
|
Update(pkg *pack.Package, root string,
|
|
debug bool, m UpdateMetadata, opts engine.UpdateOptions, displayOpts DisplayOptions) error
|
|
// Destroy this stack's resources.
|
|
Destroy(pkg *pack.Package, root string,
|
|
debug bool, m UpdateMetadata, opts engine.UpdateOptions, displayOpts DisplayOptions) error
|
|
|
|
Remove(force bool) (bool, error) // remove this stack.
|
|
GetLogs(query operations.LogQuery) ([]operations.LogEntry, error) // list log entries for this stack.
|
|
ExportDeployment() (json.RawMessage, error) // export this stack's deployment.
|
|
ImportDeployment(json.RawMessage) error // import the given deployment into this stack.
|
|
}
|
|
|
|
// RemoveStack returns the stack, or returns an error if it cannot.
|
|
func RemoveStack(s Stack, force bool) (bool, error) {
|
|
return s.Backend().RemoveStack(s.Name(), force)
|
|
}
|
|
|
|
// PreviewStack initiates a preview of the current workspace's contents.
|
|
func PreviewStack(s Stack, pkg *pack.Package, root string,
|
|
debug bool, opts engine.UpdateOptions, displayOpts DisplayOptions) error {
|
|
return s.Backend().Preview(s.Name(), pkg, root, debug, opts, displayOpts)
|
|
}
|
|
|
|
// UpdateStack updates the target stack with the current workspace's contents (config and code).
|
|
func UpdateStack(s Stack, pkg *pack.Package, root string,
|
|
debug bool, m UpdateMetadata, opts engine.UpdateOptions, displayOpts DisplayOptions) error {
|
|
return s.Backend().Update(s.Name(), pkg, root, debug, m, opts, displayOpts)
|
|
}
|
|
|
|
// DestroyStack destroys all of this stack's resources.
|
|
func DestroyStack(s Stack, pkg *pack.Package, root string,
|
|
debug bool, m UpdateMetadata, opts engine.UpdateOptions, displayOpts DisplayOptions) error {
|
|
return s.Backend().Destroy(s.Name(), pkg, root, debug, m, opts, displayOpts)
|
|
}
|
|
|
|
// GetStackCrypter fetches the encrypter/decrypter for a stack.
|
|
func GetStackCrypter(s Stack) (config.Crypter, error) {
|
|
return s.Backend().GetStackCrypter(s.Name())
|
|
}
|
|
|
|
// GetStackLogs fetches a list of log entries for the current stack in the current backend.
|
|
func GetStackLogs(s Stack, query operations.LogQuery) ([]operations.LogEntry, error) {
|
|
return s.Backend().GetLogs(s.Name(), query)
|
|
}
|
|
|
|
// ExportStackDeployment exports the given stack's deployment as an opaque JSON message.
|
|
func ExportStackDeployment(s Stack) (json.RawMessage, error) {
|
|
return s.Backend().ExportDeployment(s.Name())
|
|
}
|
|
|
|
// ImportStackDeployment imports the given deployment into the indicated stack.
|
|
func ImportStackDeployment(s Stack, deployment json.RawMessage) error {
|
|
return s.Backend().ImportDeployment(s.Name(), deployment)
|
|
}
|