diff --git a/cmd/phase/render.go b/cmd/phase/render.go index e0a28d86f..15714a264 100644 --- a/cmd/phase/render.go +++ b/cmd/phase/render.go @@ -97,6 +97,12 @@ func addRenderFlags(filterOptions *phase.RenderCommand, cmd *cobra.Command) { "error will be returned\n"+ "executor: rendering will be performed by executor if the phase\n"+ "config: this will render bundle containing phase and executor documents") + flags.BoolVarP( + &filterOptions.FailOnDecryptionError, + "decrypt", + "d", + false, + "ensure that decryption of encrypted documents has finished successfully") } // RenderArgs returns an error if there are not exactly n args. diff --git a/cmd/phase/testdata/TestRenderGoldenOutput/render-with-help.golden b/cmd/phase/testdata/TestRenderGoldenOutput/render-with-help.golden index a16cefea5..0b04720a8 100644 --- a/cmd/phase/testdata/TestRenderGoldenOutput/render-with-help.golden +++ b/cmd/phase/testdata/TestRenderGoldenOutput/render-with-help.golden @@ -23,6 +23,7 @@ airshipctl phase render initinfra --source executor Flags: -a, --annotation string filter documents by Annotations -g, --apiversion string filter documents by API version + -d, --decrypt ensure that decryption of encrypted documents has finished successfully -h, --help help for render -k, --kind string filter documents by Kinds -l, --label string filter documents by Labels diff --git a/docs/source/cli/airshipctl_phase_render.md b/docs/source/cli/airshipctl_phase_render.md index c1c09cd6e..76beb1598 100644 --- a/docs/source/cli/airshipctl_phase_render.md +++ b/docs/source/cli/airshipctl_phase_render.md @@ -35,6 +35,7 @@ airshipctl phase render initinfra --source executor ``` -a, --annotation string filter documents by Annotations -g, --apiversion string filter documents by API version + -d, --decrypt ensure that decryption of encrypted documents has finished successfully -h, --help help for render -k, --kind string filter documents by Kinds -l, --label string filter documents by Labels diff --git a/pkg/phase/render.go b/pkg/phase/render.go index 9b42edbcb..effdee291 100644 --- a/pkg/phase/render.go +++ b/pkg/phase/render.go @@ -16,6 +16,7 @@ package phase import ( "io" + "os" "strings" "opendev.org/airship/airshipctl/pkg/config" @@ -49,8 +50,11 @@ type RenderCommand struct { // phase the source will use kustomize root at phase entry point // config will render a bundle that comes from site metadata file, and contains phase and executor docs // executor means that rendering will be delegated to phase executor - Source string - PhaseID ifc.ID + Source string + // FailOnDecryptionError makes sure that encrypted documents are getting decrypted by avoiding setting + // env variable TOLERATE_DECRYPTION_FAILURES=true + FailOnDecryptionError bool + PhaseID ifc.ID } // RunE prints out filtered documents @@ -58,6 +62,11 @@ func (fo *RenderCommand) RunE(cfgFactory config.Factory, out io.Writer) error { if err := fo.Validate(); err != nil { return err } + + if !fo.FailOnDecryptionError { + os.Setenv("TOLERATE_DECRYPTION_FAILURES", "true") + } + cfg, err := cfgFactory() if err != nil { return err