From 4e86fbcd04290293b9936aff15274f393b2e74a9 Mon Sep 17 00:00:00 2001 From: Saurabh Shivgunde Date: Thu, 3 Feb 2022 00:02:26 +0530 Subject: [PATCH] Add ip_range variable to apigee-x-instance module (#485) * Add ip_range variable for apigee-x-instance module * Add variable definition and validation for ip_range * Update the validation rule for ip_range variable --- modules/apigee-x-instance/README.md | 6 +++--- modules/apigee-x-instance/main.tf | 2 +- modules/apigee-x-instance/variables.tf | 10 +++++----- tests/modules/apigee_x_instance/fixture/main.tf | 8 ++++---- tests/modules/apigee_x_instance/fixture/variables.tf | 5 +++++ tests/modules/apigee_x_instance/test_plan.py | 2 +- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/modules/apigee-x-instance/README.md b/modules/apigee-x-instance/README.md index 90f5d11e..bca575dc 100644 --- a/modules/apigee-x-instance/README.md +++ b/modules/apigee-x-instance/README.md @@ -11,7 +11,7 @@ module "apigee-x-instance" { source = "./modules/apigee-x-instance" name = "my-us-instance" region = "us-central1" - cidr_mask = 22 + ip_range = "10.0.0.0/22" apigee_org_id = "my-project" apigee_environments = [ @@ -29,7 +29,7 @@ module "apigee-x-instance" { source = "./modules/apigee-x-instance" name = "my-us-instance" region = "us-central1" - cidr_mask = 16 + ip_range = "10.0.0.0/22" disk_encryption_key = "my-disk-key" apigee_org_id = "my-project" @@ -49,7 +49,7 @@ module "apigee-x-instance" { | name | description | type | required | default | |---|---|:---:|:---:|:---:| | [apigee_org_id](variables.tf#L32) | Apigee Organization ID. | string | ✓ | | -| [cidr_mask](variables.tf#L37) | CIDR mask for the Apigee instance. | number | ✓ | | +| [ip_range](variables.tf#L37) | Customer-provided CIDR block of length 22 for the Apigee instance. | string | ✓ | | | [name](variables.tf#L52) | Apigee instance name. | string | ✓ | | | [region](variables.tf#L57) | Compute region. | string | ✓ | | | [apigee_envgroups](variables.tf#L17) | Apigee Environment Groups. | map(object({…})) | | {} | diff --git a/modules/apigee-x-instance/main.tf b/modules/apigee-x-instance/main.tf index 1d6f84e8..1ef2c66b 100644 --- a/modules/apigee-x-instance/main.tf +++ b/modules/apigee-x-instance/main.tf @@ -18,7 +18,7 @@ resource "google_apigee_instance" "apigee_instance" { org_id = var.apigee_org_id name = var.name location = var.region - peering_cidr_range = "SLASH_${var.cidr_mask}" + ip_range = var.ip_range disk_encryption_key_name = var.disk_encryption_key } diff --git a/modules/apigee-x-instance/variables.tf b/modules/apigee-x-instance/variables.tf index b50daf0a..10122a2b 100644 --- a/modules/apigee-x-instance/variables.tf +++ b/modules/apigee-x-instance/variables.tf @@ -34,12 +34,12 @@ variable "apigee_org_id" { type = string } -variable "cidr_mask" { - description = "CIDR mask for the Apigee instance." - type = number +variable "ip_range" { + description = "Customer-provided CIDR block of length 22 for the Apigee instance." + type = string validation { - condition = contains([16, 20, 22], var.cidr_mask) - error_message = "Invalid CIDR mask; Allowed values for cidr_mask: [16, 20, 22]." + condition = try(cidrnetmask(var.ip_range), null) == "255.255.252.0" + error_message = "Invalid CIDR block provided; Allowed pattern for ip_range: X.X.X.X/22." } } diff --git a/tests/modules/apigee_x_instance/fixture/main.tf b/tests/modules/apigee_x_instance/fixture/main.tf index a7c8c9a0..19373a3b 100644 --- a/tests/modules/apigee_x_instance/fixture/main.tf +++ b/tests/modules/apigee_x_instance/fixture/main.tf @@ -15,10 +15,10 @@ */ module "apigee-x-instance" { - source = "../../../../modules/apigee-x-instance" - name = var.name - region = var.region - cidr_mask = 22 + source = "../../../../modules/apigee-x-instance" + name = var.name + region = var.region + ip_range = var.ip_range apigee_org_id = "my-project" apigee_environments = [ diff --git a/tests/modules/apigee_x_instance/fixture/variables.tf b/tests/modules/apigee_x_instance/fixture/variables.tf index 4fc58d62..b55e641f 100644 --- a/tests/modules/apigee_x_instance/fixture/variables.tf +++ b/tests/modules/apigee_x_instance/fixture/variables.tf @@ -23,3 +23,8 @@ variable "region" { type = string default = "europe-west1" } + +variable "ip_range" { + type = string + default = "10.0.0.0/22" +} \ No newline at end of file diff --git a/tests/modules/apigee_x_instance/test_plan.py b/tests/modules/apigee_x_instance/test_plan.py index 4e695b8c..e7d2f60a 100644 --- a/tests/modules/apigee_x_instance/test_plan.py +++ b/tests/modules/apigee_x_instance/test_plan.py @@ -39,6 +39,6 @@ def test_instance(resources): instances = [r['values'] for r in resources if r['type'] == 'google_apigee_instance'] assert len(instances) == 1 - assert instances[0]['peering_cidr_range'] == 'SLASH_22' + assert instances[0]['ip_range'] == '10.0.0.0/22' assert instances[0]['name'] == 'my-test-instance' assert instances[0]['location'] == 'europe-west1'