diff --git a/blueprints/data-solutions/data-platform-foundations/README.md b/blueprints/data-solutions/data-platform-foundations/README.md
index 30cdab834..b038cfe4b 100644
--- a/blueprints/data-solutions/data-platform-foundations/README.md
+++ b/blueprints/data-solutions/data-platform-foundations/README.md
@@ -219,7 +219,7 @@ module "data-platform" {
prefix = "myprefix"
}
-# tftest modules=39 resources=286
+# tftest modules=39 resources=287
```
## Customizations
diff --git a/modules/apigee/README.md b/modules/apigee/README.md
index fb26c1e72..02b1d13f9 100644
--- a/modules/apigee/README.md
+++ b/modules/apigee/README.md
@@ -25,14 +25,18 @@ module "apigee" {
}
environments = {
apis-test = {
- display_name = "APIs test"
- description = "APIs Test"
- envgroups = ["test"]
+ display_name = "APIs test"
+ description = "APIs Test"
+ deployment_type = "ARCHIVE"
+ api_proxy_type = "PROGRAMMABLE"
+ envgroups = ["test"]
}
apis-prod = {
- display_name = "APIs prod"
- description = "APIs prod"
- envgroups = ["prod"]
+ display_name = "APIs prod"
+ description = "APIs prod"
+ deployment_type = "PROXY"
+ api_proxy_type = "CONFIGURABLE"
+ envgroups = ["prod"]
iam = {
"roles/viewer" = ["group:devops@myorg.com"]
}
@@ -169,12 +173,12 @@ module "apigee" {
| name | description | type | required | default |
|---|---|:---:|:---:|:---:|
-| [project_id](variables.tf#L75) | Project ID. | string | ✓ | |
+| [project_id](variables.tf#L77) | Project ID. | string | ✓ | |
| [endpoint_attachments](variables.tf#L17) | Endpoint attachments. | map(object({…})) | | null |
| [envgroups](variables.tf#L26) | Environment groups (NAME => [HOSTNAMES]). | map(list(string)) | | null |
-| [environments](variables.tf#L32) | Environments. | map(object({…})) | | null |
-| [instances](variables.tf#L47) | Instances. | map(object({…})) | | null |
-| [organization](variables.tf#L61) | Apigee organization. If set to null the organization must already exist. | object({…}) | | null |
+| [environments](variables.tf#L32) | Environments. | map(object({…})) | | null |
+| [instances](variables.tf#L49) | Instances. | map(object({…})) | | null |
+| [organization](variables.tf#L63) | Apigee organization. If set to null the organization must already exist. | object({…}) | | null |
## Outputs
diff --git a/modules/apigee/main.tf b/modules/apigee/main.tf
index fe34a7382..f1c71ec1f 100644
--- a/modules/apigee/main.tf
+++ b/modules/apigee/main.tf
@@ -40,10 +40,12 @@ resource "google_apigee_envgroup" "envgroups" {
}
resource "google_apigee_environment" "environments" {
- for_each = local.environments
- name = each.key
- display_name = each.value.display_name
- description = each.value.description
+ for_each = local.environments
+ name = each.key
+ display_name = each.value.display_name
+ description = each.value.description
+ deployment_type = each.value.deployment_type
+ api_proxy_type = each.value.api_proxy_type
dynamic "node_config" {
for_each = try(each.value.node_config, null) != null ? [""] : []
content {
diff --git a/modules/apigee/variables.tf b/modules/apigee/variables.tf
index 266f0d34e..81cf77f6e 100644
--- a/modules/apigee/variables.tf
+++ b/modules/apigee/variables.tf
@@ -32,8 +32,10 @@ variable "envgroups" {
variable "environments" {
description = "Environments."
type = map(object({
- display_name = optional(string)
- description = optional(string, "Terraform-managed")
+ display_name = optional(string)
+ description = optional(string, "Terraform-managed")
+ deployment_type = optional(string)
+ api_proxy_type = optional(string)
node_config = optional(object({
min_node_count = optional(number)
max_node_count = optional(number)
diff --git a/modules/project/service-accounts.tf b/modules/project/service-accounts.tf
index abf34cae0..b25c61269 100644
--- a/modules/project/service-accounts.tf
+++ b/modules/project/service-accounts.tf
@@ -75,7 +75,8 @@ locals {
"gkehub.googleapis.com",
"pubsub.googleapis.com",
"secretmanager.googleapis.com",
- "sqladmin.googleapis.com"
+ "sqladmin.googleapis.com",
+ "cloudbuild.googleapis.com",
]
service_accounts_cmek_service_keys = distinct(flatten([
for s in keys(var.service_encryption_key_ids) : [
diff --git a/tests/blueprints/apigee/bigquery-analytics/basic.yaml b/tests/blueprints/apigee/bigquery-analytics/basic.yaml
index 2b044dcb6..d89eaef58 100644
--- a/tests/blueprints/apigee/bigquery-analytics/basic.yaml
+++ b/tests/blueprints/apigee/bigquery-analytics/basic.yaml
@@ -14,4 +14,4 @@
counts:
modules: 9
- resources: 60
+ resources: 61
diff --git a/tests/blueprints/cloud_operations/asset_inventory_feed_remediation/test_plan.py b/tests/blueprints/cloud_operations/asset_inventory_feed_remediation/test_plan.py
index df03e144f..497af6be5 100644
--- a/tests/blueprints/cloud_operations/asset_inventory_feed_remediation/test_plan.py
+++ b/tests/blueprints/cloud_operations/asset_inventory_feed_remediation/test_plan.py
@@ -16,4 +16,4 @@ def test_resources(e2e_plan_runner):
"Test that plan works and the numbers of resources is as expected."
modules, resources = e2e_plan_runner()
assert len(modules) == 6
- assert len(resources) == 18
+ assert len(resources) == 19
diff --git a/tests/blueprints/cloud_operations/scheduled_asset_inventory_export_bq/test_plan.py b/tests/blueprints/cloud_operations/scheduled_asset_inventory_export_bq/test_plan.py
index c5394839d..3bcc63440 100644
--- a/tests/blueprints/cloud_operations/scheduled_asset_inventory_export_bq/test_plan.py
+++ b/tests/blueprints/cloud_operations/scheduled_asset_inventory_export_bq/test_plan.py
@@ -16,4 +16,4 @@ def test_resources(e2e_plan_runner):
"Test that plan works and the numbers of resources is as expected."
modules, resources = e2e_plan_runner()
assert len(modules) == 7
- assert len(resources) == 29
+ assert len(resources) == 30
diff --git a/tests/blueprints/cloud_operations/unmanaged_instances_healthcheck/test_plan.py b/tests/blueprints/cloud_operations/unmanaged_instances_healthcheck/test_plan.py
index c79be049e..b1f0fba3c 100644
--- a/tests/blueprints/cloud_operations/unmanaged_instances_healthcheck/test_plan.py
+++ b/tests/blueprints/cloud_operations/unmanaged_instances_healthcheck/test_plan.py
@@ -16,4 +16,4 @@ def test_resources(e2e_plan_runner):
"Test that plan works and the numbers of resources is as expected."
modules, resources = e2e_plan_runner()
assert len(modules) == 10
- assert len(resources) == 31
+ assert len(resources) == 32
diff --git a/tests/blueprints/data_solutions/data_platform_foundations/test_plan.py b/tests/blueprints/data_solutions/data_platform_foundations/test_plan.py
index 17563647c..93961b5e8 100644
--- a/tests/blueprints/data_solutions/data_platform_foundations/test_plan.py
+++ b/tests/blueprints/data_solutions/data_platform_foundations/test_plan.py
@@ -22,4 +22,4 @@ def test_resources(e2e_plan_runner):
"Test that plan works and the numbers of resources is as expected."
modules, resources = e2e_plan_runner(FIXTURES_DIR)
assert len(modules) == 38
- assert len(resources) == 285
+ assert len(resources) == 286
diff --git a/tests/blueprints/gke/binauthz/test_plan.py b/tests/blueprints/gke/binauthz/test_plan.py
index cf012c061..b4437b6f3 100644
--- a/tests/blueprints/gke/binauthz/test_plan.py
+++ b/tests/blueprints/gke/binauthz/test_plan.py
@@ -16,4 +16,4 @@ def test_resources(e2e_plan_runner):
"Test that plan works and the numbers of resources is as expected."
modules, resources = e2e_plan_runner()
assert len(modules) == 13
- assert len(resources) == 43
+ assert len(resources) == 44
diff --git a/tests/blueprints/networking/private_cloud_function_from_onprem/test_plan.py b/tests/blueprints/networking/private_cloud_function_from_onprem/test_plan.py
index 2b3f8d7f7..81225db36 100644
--- a/tests/blueprints/networking/private_cloud_function_from_onprem/test_plan.py
+++ b/tests/blueprints/networking/private_cloud_function_from_onprem/test_plan.py
@@ -16,4 +16,4 @@ def test_resources(e2e_plan_runner):
"Test that plan works and the numbers of resources is as expected."
modules, resources = e2e_plan_runner()
assert len(modules) == 10
- assert len(resources) == 38
+ assert len(resources) == 39
diff --git a/tests/blueprints/serverless/api_gateway/test_plan.py b/tests/blueprints/serverless/api_gateway/test_plan.py
index 6cf48a87b..9d658398e 100644
--- a/tests/blueprints/serverless/api_gateway/test_plan.py
+++ b/tests/blueprints/serverless/api_gateway/test_plan.py
@@ -16,4 +16,4 @@ def test_resources(e2e_plan_runner):
"Test that plan works and the numbers of resources is as expected."
modules, resources = e2e_plan_runner()
assert len(modules) == 7
- assert len(resources) == 31
+ assert len(resources) == 32
diff --git a/tests/fast/stages/s00_bootstrap/simple.yaml b/tests/fast/stages/s00_bootstrap/simple.yaml
index 703b84b45..ed0d77380 100644
--- a/tests/fast/stages/s00_bootstrap/simple.yaml
+++ b/tests/fast/stages/s00_bootstrap/simple.yaml
@@ -24,7 +24,7 @@ counts:
google_project_iam_binding: 9
google_project_iam_member: 1
google_project_service: 29
- google_project_service_identity: 2
+ google_project_service_identity: 3
google_service_account: 3
google_service_account_iam_binding: 3
google_storage_bucket: 4
diff --git a/tests/modules/apigee/fixture/test.env_only_with_api_proxy_type.tfvars b/tests/modules/apigee/fixture/test.env_only_with_api_proxy_type.tfvars
new file mode 100644
index 000000000..2a9164bf4
--- /dev/null
+++ b/tests/modules/apigee/fixture/test.env_only_with_api_proxy_type.tfvars
@@ -0,0 +1,13 @@
+project_id = "my-project"
+environments = {
+ apis-test = {
+ display_name = "APIs test"
+ description = "APIs Test"
+ api_proxy_type = "PROGRAMMABLE"
+ envgroups = ["test"]
+ node_config = {
+ min_node_count = 2
+ max_node_count = 5
+ }
+ }
+}
diff --git a/tests/modules/apigee/fixture/test.env_only_with_deployment_type.tfvars b/tests/modules/apigee/fixture/test.env_only_with_deployment_type.tfvars
new file mode 100644
index 000000000..48ef24e68
--- /dev/null
+++ b/tests/modules/apigee/fixture/test.env_only_with_deployment_type.tfvars
@@ -0,0 +1,13 @@
+project_id = "my-project"
+environments = {
+ apis-test = {
+ display_name = "APIs test"
+ description = "APIs Test"
+ deployment_type = "ARCHIVE"
+ envgroups = ["test"]
+ node_config = {
+ min_node_count = 2
+ max_node_count = 5
+ }
+ }
+}
diff --git a/tests/modules/apigee/fixture/variables.tf b/tests/modules/apigee/fixture/variables.tf
index 266f0d34e..81cf77f6e 100644
--- a/tests/modules/apigee/fixture/variables.tf
+++ b/tests/modules/apigee/fixture/variables.tf
@@ -32,8 +32,10 @@ variable "envgroups" {
variable "environments" {
description = "Environments."
type = map(object({
- display_name = optional(string)
- description = optional(string, "Terraform-managed")
+ display_name = optional(string)
+ description = optional(string, "Terraform-managed")
+ deployment_type = optional(string)
+ api_proxy_type = optional(string)
node_config = optional(object({
min_node_count = optional(number)
max_node_count = optional(number)
diff --git a/tests/modules/apigee/test_plan.py b/tests/modules/apigee/test_plan.py
index e693ddbb2..d16ef2963 100644
--- a/tests/modules/apigee/test_plan.py
+++ b/tests/modules/apigee/test_plan.py
@@ -54,6 +54,18 @@ def test_env_only(plan_runner):
'google_apigee_envgroup_attachment.envgroup_attachments': 1,
}
+def test_env_only_with_deployment_type(plan_runner):
+ "Test that creates an environment in an existing environment group, with deployment_type set."
+ _, resources = plan_runner(tf_var_file='test.env_only_with_deployment_type.tfvars')
+ assert [r['values'].get('deployment_type') for r in resources
+ ] == [None, 'ARCHIVE']
+
+def test_env_only_with_api_proxy_type(plan_runner):
+ "Test that creates an environment in an existing environment group, with api_proxy_type set."
+ _, resources = plan_runner(tf_var_file='test.env_only_with_api_proxy_type.tfvars')
+ assert [r['values'].get('api_proxy_type') for r in resources
+ ] == [None, 'PROGRAMMABLE']
+
def test_instance_only(plan_runner):
"Test that creates only an instance."
_, resources = plan_runner(tf_var_file='test.instance_only.tfvars')