The engine will use this flag to decide whether or not to provide undefined input property values to resource providers. This is important because an input property can be defined if it is sourced from another resource's output property that is not known to be stable (i.e. that property is not known to be consistent between preview and apply). Failing to provide these undefined values can then cause input validation to fail.
96 lines
3.3 KiB
Go
96 lines
3.3 KiB
Go
// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/pulumi/pulumi/pkg/engine"
|
|
"github.com/pulumi/pulumi/pkg/tokens"
|
|
"github.com/pulumi/pulumi/pkg/util/cmdutil"
|
|
)
|
|
|
|
func newPreviewCmd() *cobra.Command {
|
|
var debug bool
|
|
var stack string
|
|
|
|
// Flags for engine.UpdateOptions.
|
|
var analyzers []string
|
|
var color colorFlag
|
|
var parallel int
|
|
var showConfig bool
|
|
var showReplacementSteps bool
|
|
var showSames bool
|
|
var summary bool
|
|
|
|
var cmd = &cobra.Command{
|
|
Use: "preview",
|
|
Aliases: []string{"pre"},
|
|
SuggestFor: []string{"build", "plan"},
|
|
Short: "Show a preview of updates to an stack's resources",
|
|
Long: "Show a preview of updates an stack's resources\n" +
|
|
"\n" +
|
|
"This command displays a preview of the updates to an existing stack whose state is\n" +
|
|
"represented by an existing snapshot file. The new desired state is computed by compiling\n" +
|
|
"and evaluating an executable package, and extracting all resource allocations from its\n" +
|
|
"resulting object graph. These allocations are then compared against the existing state to\n" +
|
|
"determine what operations must take place to achieve the desired state. No changes to the\n" +
|
|
"stack will actually take place.\n" +
|
|
"\n" +
|
|
"The package to execute is loaded from the current directory. Use the `-C` or `--cwd` flag to\n" +
|
|
"use a different directory.",
|
|
Args: cmdutil.NoArgs,
|
|
Run: cmdutil.RunFunc(func(cmd *cobra.Command, args []string) error {
|
|
s, err := requireStack(tokens.QName(stack))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
pkg, root, err := readPackage()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return s.Preview(pkg, root, debug, engine.UpdateOptions{
|
|
Analyzers: analyzers,
|
|
DryRun: true,
|
|
Color: color.Colorization(),
|
|
Parallel: parallel,
|
|
ShowConfig: showConfig,
|
|
ShowReplacementSteps: showReplacementSteps,
|
|
ShowSames: showSames,
|
|
Summary: summary,
|
|
})
|
|
}),
|
|
}
|
|
|
|
cmd.PersistentFlags().BoolVarP(
|
|
&debug, "debug", "d", false,
|
|
"Print detailed debugging output during resource operations")
|
|
cmd.PersistentFlags().StringVarP(
|
|
&stack, "stack", "s", "",
|
|
"Choose an stack other than the currently selected one")
|
|
|
|
// Flags for engine.UpdateOptions.
|
|
cmd.PersistentFlags().VarP(
|
|
&color, "color", "c", "Colorize output. Choices are: always, never, raw, auto")
|
|
cmd.PersistentFlags().StringSliceVar(
|
|
&analyzers, "analyzer", []string{},
|
|
"Run one or more analyzers as part of this update")
|
|
cmd.PersistentFlags().IntVarP(
|
|
¶llel, "parallel", "p", 0,
|
|
"Allow P resource operations to run in parallel at once (<=1 for no parallelism)")
|
|
cmd.PersistentFlags().BoolVar(
|
|
&showConfig, "show-config", false,
|
|
"Show configuration keys and variables")
|
|
cmd.PersistentFlags().BoolVar(
|
|
&showReplacementSteps, "show-replacement-steps", false,
|
|
"Show detailed resource replacement creates and deletes instead of a single step")
|
|
cmd.PersistentFlags().BoolVar(
|
|
&showSames, "show-sames", false,
|
|
"Show resources that needn't be updated because they haven't changed, alongside those that do")
|
|
cmd.PersistentFlags().BoolVar(
|
|
&summary, "summary", false,
|
|
"Only display summarization of resources and operations")
|
|
|
|
return cmd
|
|
}
|