From 7d3d137dba777fb2990d875590e76c4f27249c55 Mon Sep 17 00:00:00 2001
From: Toby Griffiths <toby@cubicmushroom.co.uk>
Date: Tue, 5 Nov 2024 00:07:52 +0000
Subject: [PATCH] Pass `plan` input down from compound templates

This add support for `plan` input variable and passes it down to the
relevant, inner templates.
---
 templates/full-pipeline.yml       | 5 +++++
 templates/job-templates.yml       | 6 ++++++
 templates/validate-plan-apply.yml | 5 +++++
 templates/validate-plan.yml       | 4 ++++
 4 files changed, 20 insertions(+)

diff --git a/templates/full-pipeline.yml b/templates/full-pipeline.yml
index 38aabd5..6f1a6a0 100644
--- a/templates/full-pipeline.yml
+++ b/templates/full-pipeline.yml
@@ -85,6 +85,9 @@ spec:
     state_name:
       default: default
       description: 'Remote OpenTofu state name.'
+    plan_name:
+      default: 'plan'
+      description: 'The name of the plan cache and plan json file.'
     auto_apply:
       default: false
       type: boolean
@@ -212,6 +215,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       artifacts_access: $[[ inputs.plan_artifacts_access ]]
       var_file: $[[ inputs.var_file ]]
       rules: $[[ inputs.plan_rules ]]
@@ -227,6 +231,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       auto_apply: $[[ inputs.auto_apply ]]
       var_file: $[[ inputs.var_file ]]
       rules: $[[ inputs.apply_rules ]]
diff --git a/templates/job-templates.yml b/templates/job-templates.yml
index 6fd140b..6a5cbb8 100644
--- a/templates/job-templates.yml
+++ b/templates/job-templates.yml
@@ -85,6 +85,9 @@ spec:
     state_name:
       default: default
       description: 'Remote OpenTofu state name.'
+    plan_name:
+      default: 'plan'
+      description: 'The name of the plan cache and plan json file.'
     auto_apply:
       default: false
       type: boolean
@@ -161,6 +164,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       var_file: $[[ inputs.var_file ]]
   - local: '/templates/apply.yml'
     inputs:
@@ -174,6 +178,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       auto_apply: $[[ inputs.auto_apply ]]
       var_file: $[[ inputs.var_file ]]
   - local: '/templates/destroy.yml'
@@ -188,6 +193,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       auto_destroy: $[[ inputs.auto_destroy ]]
       var_file: $[[ inputs.var_file ]]
   - local: '/templates/delete-state.yml'
diff --git a/templates/validate-plan-apply.yml b/templates/validate-plan-apply.yml
index 0c7be75..61adc17 100644
--- a/templates/validate-plan-apply.yml
+++ b/templates/validate-plan-apply.yml
@@ -79,6 +79,9 @@ spec:
     state_name:
       default: default
       description: 'Remote OpenTofu state name.'
+    plan_name:
+      default: 'plan'
+      description: 'The name of the plan cache and plan json file.'
     auto_apply:
       default: false
       type: boolean
@@ -164,6 +167,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       artifacts_access: $[[ inputs.plan_artifacts_access ]]
       var_file: $[[ inputs.var_file ]]
       rules: $[[ inputs.plan_rules ]]
@@ -179,6 +183,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       auto_apply: $[[ inputs.auto_apply ]]
       var_file: $[[ inputs.var_file ]]
       rules: $[[ inputs.apply_rules ]]
diff --git a/templates/validate-plan.yml b/templates/validate-plan.yml
index 235bf6f..287f514 100644
--- a/templates/validate-plan.yml
+++ b/templates/validate-plan.yml
@@ -76,6 +76,9 @@ spec:
     state_name:
       default: default
       description: 'Remote OpenTofu state name.'
+    plan_name:
+      default: 'plan'
+      description: 'The name of the plan cache and plan json file.'
     artifacts_access:
       default: 'none'
       description: 'Access level for the plan artifact. See https://docs.gitlab.com/ee/ci/yaml/#artifactsaccess for possible values.'
@@ -150,6 +153,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       state_name: $[[ inputs.state_name ]]
+      plan_name: $[[ inputs.plan_name ]]
       artifacts_access: $[[ inputs.artifacts_access ]]
       var_file: $[[ inputs.var_file ]]
       rules: $[[ inputs.plan_rules ]]
-- 
GitLab