From dd37d079551e12e26888096853c37c8fd9d9929d Mon Sep 17 00:00:00 2001 From: simonebruzzechesse <60114646+simonebruzzechesse@users.noreply.github.com> Date: Mon, 10 Jul 2023 16:18:42 +0200 Subject: [PATCH] Update ncc-spoke-ra module to explicity request ncc hub id when referencing existing hubs (#1479) * Updated ncc-spoke-ra module to explicity requesting ncc hub id when referencing existing hub * fix documentation * updated hub variable description * more explicit validation condition on hub variable --- modules/ncc-spoke-ra/README.md | 20 ++++++++++---------- modules/ncc-spoke-ra/main.tf | 2 +- modules/ncc-spoke-ra/variables.tf | 9 +++++++-- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/modules/ncc-spoke-ra/README.md b/modules/ncc-spoke-ra/README.md index 64d37843..0b193407 100644 --- a/modules/ncc-spoke-ra/README.md +++ b/modules/ncc-spoke-ra/README.md @@ -40,7 +40,7 @@ module "spoke-ra" { ```hcl module "spoke-ra-a" { source = "./fabric/modules/ncc-spoke-ra" - hub = { name = "ncc-hub" } + hub = { id = "projects/my-project/locations/global/hubs/ncc-hub" } name = "spoke-ra-a" project_id = "my-project" region = "europe-west1" @@ -64,7 +64,7 @@ module "spoke-ra-a" { module "spoke-ra-b" { source = "./fabric/modules/ncc-spoke-ra" - hub = { name = "ncc-hub" } + hub = { id = "projects/my-project/locations/global/hubs/ncc-hub" } name = "spoke-ra-b" project_id = "my-project" region = "europe-west3" @@ -93,7 +93,7 @@ module "spoke-ra-b" { ```hcl module "spoke-ra" { source = "./fabric/modules/ncc-spoke-ra" - hub = { name = "ncc-hub" } + hub = { id = "projects/my-project/locations/global/hubs/ncc-hub" } name = "spoke-ra" project_id = "my-project" region = "europe-west1" @@ -132,13 +132,13 @@ module "spoke-ra" { | name | description | type | required | default | |---|---|:---:|:---:|:---:| -| [hub](variables.tf#L23) | The name of the NCC hub to create or use. | object({…}) | ✓ | | -| [name](variables.tf#L32) | The name of the NCC spoke. | string | ✓ | | -| [project_id](variables.tf#L37) | The ID of the project where the NCC hub & spokes will be created. | string | ✓ | | -| [region](variables.tf#L42) | Region where the spoke is located. | string | ✓ | | -| [router_appliances](variables.tf#L47) | List of router appliances this spoke is associated with. | list(object({…})) | ✓ | | -| [router_config](variables.tf#L55) | Configuration of the Cloud Router. | object({…}) | ✓ | | -| [vpc_config](variables.tf#L71) | Network and subnetwork for the CR interfaces. | object({…}) | ✓ | | +| [hub](variables.tf#L23) | The NCC hub. You should either provide an existing hub id or a hub name if create is true. | object({…}) | ✓ | | +| [name](variables.tf#L37) | The name of the NCC spoke. | string | ✓ | | +| [project_id](variables.tf#L42) | The ID of the project where the NCC hub & spokes will be created. | string | ✓ | | +| [region](variables.tf#L47) | Region where the spoke is located. | string | ✓ | | +| [router_appliances](variables.tf#L52) | List of router appliances this spoke is associated with. | list(object({…})) | ✓ | | +| [router_config](variables.tf#L60) | Configuration of the Cloud Router. | object({…}) | ✓ | | +| [vpc_config](variables.tf#L76) | Network and subnetwork for the CR interfaces. | object({…}) | ✓ | | | [data_transfer](variables.tf#L17) | Site-to-site data transfer feature, available only in some regions. | bool | | false | ## Outputs diff --git a/modules/ncc-spoke-ra/main.tf b/modules/ncc-spoke-ra/main.tf index 72ac20fa..a1255498 100644 --- a/modules/ncc-spoke-ra/main.tf +++ b/modules/ncc-spoke-ra/main.tf @@ -35,7 +35,7 @@ resource "google_network_connectivity_hub" "hub" { resource "google_network_connectivity_spoke" "spoke-ra" { project = var.project_id - hub = try(google_network_connectivity_hub.hub[0].name, var.hub.name) + hub = try(google_network_connectivity_hub.hub[0].id, var.hub.id) location = var.region name = var.name linked_router_appliance_instances { diff --git a/modules/ncc-spoke-ra/variables.tf b/modules/ncc-spoke-ra/variables.tf index 17286651..4b01ea16 100644 --- a/modules/ncc-spoke-ra/variables.tf +++ b/modules/ncc-spoke-ra/variables.tf @@ -21,12 +21,17 @@ variable "data_transfer" { } variable "hub" { - description = "The name of the NCC hub to create or use." + description = "The NCC hub. You should either provide an existing hub id or a hub name if create is true." type = object({ create = optional(bool, false) description = optional(string) - name = string + id = optional(string) + name = optional(string) }) + validation { + condition = var.hub.create && var.hub.name != null || var.hub.create == false && var.hub.id != null + error_message = "Name is required for configuring new ncc hub while referencing existing hub requires id." + } } variable "name" {