From 9c3c43a755895d42c869a26c0d89a8f333453627 Mon Sep 17 00:00:00 2001
From: Ole Langbehn <ole.langbehn@inoio.de>
Date: Fri, 12 Jul 2024 21:48:36 +0200
Subject: [PATCH] NOISSUE refactor default region code, unify file structure

---
 .gitlab-ci.yml                                   |  2 +-
 terraform/common/init.tf                         |  4 ++--
 terraform/common/vars.tf                         |  3 +++
 terraform/environments/deployment.tf             |  2 +-
 terraform/environments/init.tf                   |  4 ++--
 terraform/environments/scripts/get-api-domain.sh |  8 --------
 terraform/environments/scripts/get-output.sh     | 10 ++++++++++
 terraform/environments/vars.tf                   |  2 ++
 8 files changed, 21 insertions(+), 14 deletions(-)
 create mode 100644 terraform/common/vars.tf
 delete mode 100755 terraform/environments/scripts/get-api-domain.sh
 create mode 100755 terraform/environments/scripts/get-output.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0fd7330..4b305d8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -29,7 +29,7 @@ variables:
   script:
     - export GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_CLOUD_SERVICE_ACCOUNT}
     - terraform/environments/scripts/create-or-update-env.sh $ENVIRONMENT_ID $CI_COMMIT_SHA
-    - echo "$(terraform/environments/scripts/get-api-domain.sh)" > $API_DOMAIN_PATH
+    - echo "$(terraform/environments/scripts/get-output.sh api_domain)" > $API_DOMAIN_PATH
   resource_group: $ENVIRONMENT_ID # never execute terraform in parallel on the same environment
   interruptible: false
 
diff --git a/terraform/common/init.tf b/terraform/common/init.tf
index 1deaa7d..74088f3 100644
--- a/terraform/common/init.tf
+++ b/terraform/common/init.tf
@@ -15,9 +15,9 @@ data "terraform_remote_state" "holi_infra_state" {
 
 # provider google including beta features
 provider "google" {
-  region = "europe-north1"
+  region = local.default_region
 }
 
 provider "google-beta" {
-  region = "europe-north1"
+  region = local.default_region
 }
diff --git a/terraform/common/vars.tf b/terraform/common/vars.tf
new file mode 100644
index 0000000..1c12ce4
--- /dev/null
+++ b/terraform/common/vars.tf
@@ -0,0 +1,3 @@
+locals {
+  default_region = data.terraform_remote_state.holi_infra_state.outputs.default_region
+}
diff --git a/terraform/environments/deployment.tf b/terraform/environments/deployment.tf
index bb0ce29..7f33d5e 100644
--- a/terraform/environments/deployment.tf
+++ b/terraform/environments/deployment.tf
@@ -32,7 +32,7 @@ variable "image_tag" {
 resource "google_cloud_run_service" "donations_api" {
   project  = data.terraform_remote_state.holi_infra_state.outputs.shared_project_id
   name     = random_id.main.hex
-  location = "europe-north1" # finland, low CO2 emissions
+  location = local.default_region
   # https://github.com/hashicorp/terraform-provider-google/issues/5898
   autogenerate_revision_name = true
 
diff --git a/terraform/environments/init.tf b/terraform/environments/init.tf
index 9b1b0db..f7ee1f6 100644
--- a/terraform/environments/init.tf
+++ b/terraform/environments/init.tf
@@ -23,9 +23,9 @@ data "terraform_remote_state" "holi_donations_api_common_state" {
 
 # provider google including beta features
 provider "google" {
-  region = "europe-north1"
+  region = local.default_region
 }
 
 provider "google-beta" {
-  region = "europe-north1"
+  region = local.default_region
 }
diff --git a/terraform/environments/scripts/get-api-domain.sh b/terraform/environments/scripts/get-api-domain.sh
deleted file mode 100755
index 63451fc..0000000
--- a/terraform/environments/scripts/get-api-domain.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env sh
-
-# exit when any command fails
-set -ex
-
-cd terraform/environments > /dev/null
-
-terraform output -raw api_domain
diff --git a/terraform/environments/scripts/get-output.sh b/terraform/environments/scripts/get-output.sh
new file mode 100755
index 0000000..2e1d9b6
--- /dev/null
+++ b/terraform/environments/scripts/get-output.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+
+# exit when any command fails
+set -ex
+
+: "${1?"Usage: $0 OUTPUT_NAME"}"
+
+cd "$(dirname "$0")"/.. > /dev/null
+
+terraform output -raw "$1"
diff --git a/terraform/environments/vars.tf b/terraform/environments/vars.tf
index 967b415..6ade95c 100644
--- a/terraform/environments/vars.tf
+++ b/terraform/environments/vars.tf
@@ -5,4 +5,6 @@ locals {
 
   # the dns name can be at most 64 chars in total
   dns_name = "${trimsuffix(substr(local.environment, 0, 34), ".-")}.${data.terraform_remote_state.holi_donations_api_common_state.outputs.dns_donations_api_domain}"
+
+  default_region = data.terraform_remote_state.holi_infra_state.outputs.default_region
 }
-- 
GitLab