diff --git a/fast/stages/0-org-setup/organization.tf b/fast/stages/0-org-setup/organization.tf index 3a6064d76..3f6187944 100644 --- a/fast/stages/0-org-setup/organization.tf +++ b/fast/stages/0-org-setup/organization.tf @@ -81,6 +81,7 @@ module "organization" { } locations = local.ctx.locations } + contacts = lookup(local.organization, "contacts", {}) factories_config = { org_policy_custom_constraints = "${local.paths.organization}/custom-constraints" custom_roles = "${local.paths.organization}/custom-roles" diff --git a/fast/stages/0-org-setup/schemas/organization.schema.json b/fast/stages/0-org-setup/schemas/organization.schema.json index 46b32cc2b..c0afbdeff 100644 --- a/fast/stages/0-org-setup/schemas/organization.schema.json +++ b/fast/stages/0-org-setup/schemas/organization.schema.json @@ -11,7 +11,7 @@ "type": "object", "additionalProperties": false, "patternProperties": { - "^[a-z0-9_-]+$": { + "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$": { "type": "array", "items": { "type": "string" @@ -45,7 +45,7 @@ "type": "object", "additionalProperties": false, "patternProperties": { - "^[a-z][a-z0-9-]+$": { + "^[a-z][a-z0-9-_]+$": { "type": "object", "additionalProperties": false, "properties": { diff --git a/fast/stages/0-org-setup/schemas/organization.schema.md b/fast/stages/0-org-setup/schemas/organization.schema.md index fd55572bc..278764350 100644 --- a/fast/stages/0-org-setup/schemas/organization.schema.md +++ b/fast/stages/0-org-setup/schemas/organization.schema.md @@ -9,18 +9,19 @@ - **id**: *string* - **contacts**: *object*
*additional properties: false* - - **`^[a-z0-9_-]+$`**: *array* + - **`^[^@\s]+@[^@\s]+\.[^@\s]+$`**: *array* - items: *string* - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_additive**: *reference([iam_by_principals](#refs-iam_by_principals))* - **logging**: *object*
*additional properties: false* - **storage_location**: *string* - **sinks**: *object*
*additional properties: false* - - **`^[a-z][a-z0-9-]+$`**: *object* + - **`^[a-z][a-z0-9-_]+$`**: *object*
*additional properties: false* - **description**: *string* - **destination**: *string* diff --git a/modules/gke-cluster-autopilot/README.md b/modules/gke-cluster-autopilot/README.md index 179eedce7..f881bb528 100644 --- a/modules/gke-cluster-autopilot/README.md +++ b/modules/gke-cluster-autopilot/README.md @@ -297,12 +297,11 @@ module "cluster-1" { | [cluster](outputs.tf#L23) | Cluster resource. | ✓ | | [dns_endpoint](outputs.tf#L29) | Control plane DNS endpoint. | | | [endpoint](outputs.tf#L37) | Cluster endpoint. | | -| [fleet](outputs.tf#L42) | GKE Fleet Membership. | | -| [id](outputs.tf#L47) | Fully qualified cluster ID. | | -| [location](outputs.tf#L52) | Cluster location. | | -| [master_version](outputs.tf#L57) | Master version. | | -| [name](outputs.tf#L62) | Cluster name. | | -| [notifications](outputs.tf#L67) | GKE Pub/Sub notifications topic. | | -| [self_link](outputs.tf#L72) | Cluster self link. | ✓ | -| [workload_identity_pool](outputs.tf#L78) | Workload identity pool. | | +| [id](outputs.tf#L42) | Fully qualified cluster ID. | | +| [location](outputs.tf#L47) | Cluster location. | | +| [master_version](outputs.tf#L52) | Master version. | | +| [name](outputs.tf#L57) | Cluster name. | | +| [notifications](outputs.tf#L62) | GKE Pub/Sub notifications topic. | | +| [self_link](outputs.tf#L67) | Cluster self link. | ✓ | +| [workload_identity_pool](outputs.tf#L73) | Workload identity pool. | | diff --git a/modules/gke-cluster-autopilot/outputs.tf b/modules/gke-cluster-autopilot/outputs.tf index f6890b391..81bdc2a0c 100644 --- a/modules/gke-cluster-autopilot/outputs.tf +++ b/modules/gke-cluster-autopilot/outputs.tf @@ -39,11 +39,6 @@ output "endpoint" { value = google_container_cluster.cluster.endpoint } -output "fleet" { - description = "GKE Fleet Membership." - value = google_container_cluster.cluster.endpoint -} - output "id" { description = "Fully qualified cluster ID." value = google_container_cluster.cluster.id diff --git a/modules/gke-cluster-standard/README.md b/modules/gke-cluster-standard/README.md index 12b8aa294..3bbdf1b0e 100644 --- a/modules/gke-cluster-standard/README.md +++ b/modules/gke-cluster-standard/README.md @@ -543,12 +543,11 @@ module "cluster-1" { | [cluster](outputs.tf#L25) | Cluster resource. | ✓ | | [dns_endpoint](outputs.tf#L31) | Control plane DNS endpoint. | | | [endpoint](outputs.tf#L39) | Cluster endpoint. | | -| [fleet](outputs.tf#L44) | GKE Fleet Membership. | | -| [id](outputs.tf#L49) | FUlly qualified cluster id. | | -| [location](outputs.tf#L54) | Cluster location. | | -| [master_version](outputs.tf#L59) | Master version. | | -| [name](outputs.tf#L64) | Cluster name. | | -| [notifications](outputs.tf#L69) | GKE PubSub notifications topic. | | -| [self_link](outputs.tf#L74) | Cluster self link. | ✓ | -| [workload_identity_pool](outputs.tf#L80) | Workload identity pool. | | +| [id](outputs.tf#L44) | FUlly qualified cluster id. | | +| [location](outputs.tf#L49) | Cluster location. | | +| [master_version](outputs.tf#L54) | Master version. | | +| [name](outputs.tf#L59) | Cluster name. | | +| [notifications](outputs.tf#L64) | GKE PubSub notifications topic. | | +| [self_link](outputs.tf#L69) | Cluster self link. | ✓ | +| [workload_identity_pool](outputs.tf#L75) | Workload identity pool. | | diff --git a/modules/gke-cluster-standard/outputs.tf b/modules/gke-cluster-standard/outputs.tf index b6829fd27..bc6c8e9a4 100644 --- a/modules/gke-cluster-standard/outputs.tf +++ b/modules/gke-cluster-standard/outputs.tf @@ -41,11 +41,6 @@ output "endpoint" { value = google_container_cluster.cluster.endpoint } -output "fleet" { - description = "GKE Fleet Membership." - value = google_container_cluster.cluster.endpoint -} - output "id" { description = "FUlly qualified cluster id." value = google_container_cluster.cluster.id diff --git a/modules/project-factory/projects.tf b/modules/project-factory/projects.tf index c33e41cf7..9788ca0d3 100644 --- a/modules/project-factory/projects.tf +++ b/modules/project-factory/projects.tf @@ -37,6 +37,7 @@ locals { _projects_raw = { for f in try(fileset(local._projects_path, "**/*.yaml"), []) : trimsuffix(f, ".yaml") => yamldecode(file("${local._projects_path}/${f}")) + if !endswith(f, ".config.yaml") } _templates_path = try( pathexpand(var.factories_config.project_templates), null diff --git a/tests/fast/stages/s0_org_setup/simple.yaml b/tests/fast/stages/s0_org_setup/simple.yaml index 2e1a7a375..adc1a0190 100644 --- a/tests/fast/stages/s0_org_setup/simple.yaml +++ b/tests/fast/stages/s0_org_setup/simple.yaml @@ -2805,6 +2805,7 @@ counts: google_bigquery_dataset: 1 google_bigquery_default_service_account: 2 google_billing_account_iam_member: 6 + google_essential_contacts_contact: 1 google_folder: 8 google_folder_iam_binding: 44 google_iam_workload_identity_pool: 1 @@ -2836,5 +2837,5 @@ counts: google_tags_tag_value_iam_binding: 4 local_file: 9 modules: 48 - resources: 311 + resources: 312 terraform_data: 2