From 0efe8ed8bc9ad56a8ffae2f7fa45cc7f90509ed8 Mon Sep 17 00:00:00 2001 From: Mateusz Kyc Date: Wed, 25 Nov 2020 16:22:01 +0100 Subject: [PATCH] Added PlanDestroy operation --- cmd/main.go | 108 +++++++++++++++++++++++++++++++++++++--------------- plan.go | 4 ++ 2 files changed, 82 insertions(+), 30 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 444315d..7392ecd 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -15,11 +15,11 @@ func main() { panic(err) } - println("===============") - println("===============") - println("=== init ======") - println("===============") - println("===============") + println("================") + println("================") + println("=== init =======") + println("================") + println("================") s, err := terra.Init(opts) if err != nil { @@ -27,11 +27,11 @@ func main() { } println(s) - println("===============") - println("===============") - println("=== plan ======") - println("===============") - println("===============") + println("================") + println("================") + println("=== plan =======") + println("================") + println("================") s, err = terra.Plan(opts) if err != nil { @@ -39,11 +39,11 @@ func main() { } println(s) - println("===============") - println("===============") - println("=== show ======") - println("===============") - println("===============") + println("================") + println("================") + println("=== show =======") + println("================") + println("================") s, err = terra.Show(opts) if err != nil { @@ -51,11 +51,11 @@ func main() { } println(s) - println("===============") - println("===============") - println("=== apply =====") - println("===============") - println("===============") + println("================") + println("================") + println("=== apply ======") + println("================") + println("================") s, err = terra.Apply(opts) if err != nil { @@ -63,11 +63,11 @@ func main() { } println(s) - println("===============") - println("===============") - println("=== output ====") - println("===============") - println("===============") + println("================") + println("================") + println("=== output =====") + println("================") + println("================") m, err := terra.OutputAll(opts) if err != nil { @@ -78,14 +78,62 @@ func main() { fmt.Printf("%s : %v\n", k, v) } - println("===============") - println("===============") - println("=== destroy ===") - println("===============") - println("===============") + println("================") + println("================") + println("=== destroy ====") + println("================") + println("================") s, err = terra.Destroy(opts) if err != nil { panic(err) } + + println("================") + println("=== plan =======") + println("================") + println("=== apply ======") + println("================") + + _, err = terra.Plan(opts) + if err != nil { + panic(err) + } + _, err = terra.Apply(opts) + if err != nil { + panic(err) + } + + opts, err = terra.WithDefaultRetryableErrors(&terra.Options{ + TerraformDir: "./tests", + StateFilePath: "./subdir/other-state.tfstate", + PlanFilePath: "./subdir/other-destroy-plan.tfplan", + }) + if err != nil { + panic(err) + } + + println("================") + println("================") + println("= plan destroy =") + println("================") + println("================") + + s, err = terra.PlanDestroy(opts) + if err != nil { + panic(err) + } + println(s) + + println("================") + println("= destroy via ==") + println("=== plan of ====") + println("= destruction===") + println("================") + + s, err = terra.Apply(opts) + if err != nil { + panic(err) + } + println(s) } diff --git a/plan.go b/plan.go index 71aff6f..04d3eaf 100644 --- a/plan.go +++ b/plan.go @@ -3,3 +3,7 @@ package terra func Plan(options *Options) (string, error) { return RunTerraformCommandE(options, FormatArgs(options, "plan", "-input=false", "-lock=false")...) } + +func PlanDestroy(options *Options) (string, error) { + return RunTerraformCommandE(options, FormatArgs(options, "plan", "-destroy", "-input=false", "-lock=false")...) +}