diff --git a/modules/apigee/README.md b/modules/apigee/README.md
index fb26c1e727..02b1d13f99 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 fe34a73829..f1c71ec1f1 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 266f0d34ed..81cf77f6ea 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/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 0000000000..2a9164bf48
--- /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 0000000000..48ef24e681
--- /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 266f0d34ed..81cf77f6ea 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 e693ddbb29..d16ef2963b 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')