From a5432ed9813608a148e2dcef2da0983aafa9a556 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 20 Sep 2023 16:05:27 +0300 Subject: [PATCH 1/8] add gcp regions modules --- gcp-regions/README.md | 23 +++++ gcp-regions/main.tf | 221 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 244 insertions(+) create mode 100644 gcp-regions/README.md create mode 100644 gcp-regions/main.tf diff --git a/gcp-regions/README.md b/gcp-regions/README.md new file mode 100644 index 0000000..46941b9 --- /dev/null +++ b/gcp-regions/README.md @@ -0,0 +1,23 @@ +--- +display_name: GCP Regions +description: Add Google Cloud Platform regions to your Coder template. +icon: ../.icons/gcp.svg +maintainer_github: coder +verified: true +tags: [gcp, regions, zones] +--- +# Google Cloud Platform Regions + +This module adds Google Cloud Platform regions to your Coder template. + +## How to use this module + +To use this module, add the following snippet to your template manifest: + +```hcl +module "gcp_regions" { + source = "https://registry.coder.com/modules/gcp-regions" + gcp_regions = ["us-west1", "us-west2", "us-west3"] # Add your desired regions here, use ["all"] for all regions + gpu_only = true +} +``` diff --git a/gcp-regions/main.tf b/gcp-regions/main.tf new file mode 100644 index 0000000..d6ec61b --- /dev/null +++ b/gcp-regions/main.tf @@ -0,0 +1,221 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + coder = { + source = "coder/coder" + version = ">= 0.11" + } + } +} + +variable "gcp_regions" { + description = "List of GCP regions to include." + type = list(string) + default = [] + validation { + condition = length(var.gcp_regions) > 0 + error_message = "At least one region must be selected." + } + validation { + condition = can(regexall("^[a-z0-9-]+$", var.gcp_regions)) + error_message = "All regions must be valid names." + } +} + +variable "gpu_only" { + description = "Whether to only include zones with GPUs." + type = bool + default = false +} + +locals { + all_zones = [ + # US Central + { zone = "us-central1-a", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-central1-b", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-central1-c", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-central1-f", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # US East + { zone = "us-east1-b", has_gpu = true, location = "Moncks Corner, South Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east1-c", has_gpu = true, location = "Moncks Corner, South Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east1-d", has_gpu = true, location = "Moncks Corner, South Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-east4-a", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east4-b", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east4-c", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-east5-a", has_gpu = false, location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east5-b", has_gpu = true, location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east5-c", has_gpu = false, location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # Us West + { zone = "us-west1-a", has_gpu = true, location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west1-b", has_gpu = true, location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west1-c", has_gpu = false, location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-west2-a", has_gpu = false, location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west2-b", has_gpu = true, location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west2-c", has_gpu = true, location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-west3-a", has_gpu = true, location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west3-b", has_gpu = true, location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west3-c", has_gpu = true, location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-west4-a", has_gpu = true, location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west4-b", has_gpu = true, location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west4-c", has_gpu = true, location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # US South + { zone = "us-south1-a", has_gpu = false, location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-south1-b", has_gpu = false, location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-south1-c", has_gpu = false, location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # Canada + { zone = "northamerica-northeast1-a", has_gpu = true, location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast1-b", has_gpu = true, location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast1-c", has_gpu = true, location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + + { zone = "northamerica-northeast2-a", has_gpu = false, location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast2-b", has_gpu = false, location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast2-c", has_gpu = false, location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + + # South America East (Brazil, Chile) + { zone = "southamerica-east1-a", has_gpu = true, location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, + { zone = "southamerica-east1-b", has_gpu = false, location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, + { zone = "southamerica-east1-c", has_gpu = true, location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, + + { zone = "southamerica-west1-a", has_gpu = false, location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, + { zone = "southamerica-west1-b", has_gpu = false, location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, + { zone = "southamerica-west1-c", has_gpu = false, location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, + + # Europe North (Finland) + { zone = "europe-north1-a", has_gpu = false, location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, + { zone = "europe-north1-b", has_gpu = false, location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, + { zone = "europe-north1-c", has_gpu = false, location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, + + # Europe Central (Poland) + { zone = "europe-central2-a", has_gpu = false, location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, + { zone = "europe-central2-b", has_gpu = true, location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, + { zone = "europe-central2-c", has_gpu = true, location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, + + # Europe Southwest (Spain) + { zone = "europe-southwest1-a", has_gpu = false, location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, + { zone = "europe-southwest1-b", has_gpu = false, location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, + { zone = "europe-southwest1-c", has_gpu = false, location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, + + # Europe West + { zone = "europe-west1-b", has_gpu = true, location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, + { zone = "europe-west1-c", has_gpu = true, location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, + { zone = "europe-west1-d", has_gpu = true, location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, + + { zone = "europe-west2-a", has_gpu = true, location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, + { zone = "europe-west2-b", has_gpu = true, location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, + { zone = "europe-west2-c", has_gpu = false, location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, + + { zone = "europe-west3-b", has_gpu = false, location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west3-c", has_gpu = true, location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west3-d", has_gpu = false, location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + + { zone = "europe-west4-a", has_gpu = true, location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, + { zone = "europe-west4-b", has_gpu = true, location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, + { zone = "europe-west4-c", has_gpu = true, location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, + + { zone = "europe-west6-a", has_gpu = false, location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, + { zone = "europe-west6-b", has_gpu = false, location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, + { zone = "europe-west6-c", has_gpu = false, location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, + + { zone = "europe-west8-a", has_gpu = false, location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west8-b", has_gpu = false, location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west8-c", has_gpu = false, location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + + { zone = "europe-west9-a", has_gpu = false, location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, + { zone = "europe-west9-b", has_gpu = false, location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, + { zone = "europe-west9-c", has_gpu = false, location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, + + { zone = "europe-west10-a", has_gpu = false, location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west10-b", has_gpu = false, location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west10-c", has_gpu = false, location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + + { zone = "europe-west12-a", has_gpu = false, location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west12-b", has_gpu = false, location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west12-c", has_gpu = false, location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + + # Middleeast Central (Qatar, Saudi Arabia) + { zone = "me-central1-a ", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + { zone = "me-central1-b ", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + { zone = "me-central1-c ", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + + { zone = "me-central2-a ", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + { zone = "me-central2-b ", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + { zone = "me-central2-c ", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + + # Middleeast West (Israel) + { zone = "me-west1-a", has_gpu = false, location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, + { zone = "me-west1-b", has_gpu = true, location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, + { zone = "me-west1-c", has_gpu = true, location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, + + # Asia East (Taiwan, Hong Kong) + { zone = "asia-east1-a", has_gpu = true, location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, + { zone = "asia-east1-b", has_gpu = true, location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, + { zone = "asia-east1-c", has_gpu = true, location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, + + { zone = "asia-east2-a", has_gpu = true, location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, + { zone = "asia-east2-b", has_gpu = false, location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, + { zone = "asia-east2-c", has_gpu = true, location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, + + # Asia Northeast (Japan, South Korea) + { zone = "asia-northeast1-a", has_gpu = true, location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast1-b", has_gpu = false, location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast1-c", has_gpu = true, location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast2-a", has_gpu = false, location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast2-b", has_gpu = false, location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast2-c", has_gpu = false, location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast3-a", has_gpu = true, location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, + { zone = "asia-northeast3-b", has_gpu = true, location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, + { zone = "asia-northeast3-c", has_gpu = true, location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, + + # Asia South (India) + { zone = "asia-south1-a", has_gpu = true, location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south1-b", has_gpu = true, location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south1-c", has_gpu = false, location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south2-a", has_gpu = false, location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south2-b", has_gpu = false, location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south2-c", has_gpu = false, location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, + + # Asia Southeast (Singapore, Indonesia) + { zone = "asia-southeast1-a", has_gpu = true, location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, + { zone = "asia-southeast1-b", has_gpu = true, location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, + { zone = "asia-southeast1-c", has_gpu = true, location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, + { zone = "asia-southeast2-a", has_gpu = true, location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, + { zone = "asia-southeast2-b", has_gpu = true, location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, + { zone = "asia-southeast2-c", has_gpu = true, location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, + + # Australia (Sydney, Melbourne) + { zone = "australia-southeast1-a", has_gpu = true, location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast1-b", has_gpu = true, location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast1-c", has_gpu = true, location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast2-a", has_gpu = false, location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast2-b", has_gpu = false, location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast2-c", has_gpu = false, location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + ] +} + +data "coder_parameter" "gcp-zones" { + type = "list(string)" + name = "gcp_zones" + display_name = "GCP Zones" + icon = "/icon/gcp/svg" + mutable = true + + dynamic "option" { + for_each = [for z in local.all_zones : z if contains(var.gcp_regions, substr(z.zone, 0, index(z.zone, "-"))) && (!var.gpu_only || z.has_gpu)] + content { + icon = option.value.icon + name = option.value.location + description = option.value.zone + value = option.value.zone + } + } +} From b8eb296abd3130dbf6a823f330721718e08e3e19 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 20 Sep 2023 16:09:27 +0300 Subject: [PATCH 2/8] use short name --- gcp-regions/main.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcp-regions/main.tf b/gcp-regions/main.tf index d6ec61b..0a0b451 100644 --- a/gcp-regions/main.tf +++ b/gcp-regions/main.tf @@ -38,9 +38,9 @@ locals { { zone = "us-central1-f", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, # US East - { zone = "us-east1-b", has_gpu = true, location = "Moncks Corner, South Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east1-c", has_gpu = true, location = "Moncks Corner, South Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east1-d", has_gpu = true, location = "Moncks Corner, South Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east1-b", has_gpu = true, location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east1-c", has_gpu = true, location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east1-d", has_gpu = true, location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, { zone = "us-east4-a", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, { zone = "us-east4-b", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, From 8ab05d70a8e079c845d3897802e52884e609b800 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 20 Sep 2023 16:48:42 +0300 Subject: [PATCH 3/8] wip --- aws-regions/README.md | 22 +++++ aws-regions/main.tf | 215 ++++++++++++++++++++++++++++++++++++++++++ aws-regions/update.sh | 34 +++++++ gcp-regions/README.md | 2 +- gcp-regions/main.tf | 16 ++-- gcp-regions/update.sh | 56 +++++++++++ 6 files changed, 336 insertions(+), 9 deletions(-) create mode 100644 aws-regions/README.md create mode 100644 aws-regions/main.tf create mode 100644 aws-regions/update.sh create mode 100644 gcp-regions/update.sh diff --git a/aws-regions/README.md b/aws-regions/README.md new file mode 100644 index 0000000..6690c42 --- /dev/null +++ b/aws-regions/README.md @@ -0,0 +1,22 @@ +--- +display_name: AWS Regions +description: Add Amazon Web Services regions to your Coder template. +icon: ../.icons/aws.svg +maintainer_github: coder +verified: true +tags: [aws, regions, zones] +--- +# Amazon Web Services Regions + +This module adds Amazon Web Services regions to your Coder template. + +## How to use this module + +To use this module, add the following snippet to your template manifest: + +```hcl +module "aws_regions" { + source = "https://registry.coder.com/modules/aws-regions" + gcp_regions = ["us-west-1", "us-west-2"] # Add your desired regions here, use ["all"] for all regions +} +``` diff --git a/aws-regions/main.tf b/aws-regions/main.tf new file mode 100644 index 0000000..20b18e1 --- /dev/null +++ b/aws-regions/main.tf @@ -0,0 +1,215 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + coder = { + source = "coder/coder" + version = ">= 0.11" + } + } +} + +variable "gcp_regions" { + description = "List of GCP regions to include." + type = list(string) + default = [] + validation { + condition = length(var.gcp_regions) > 0 + error_message = "At least one region must be selected." + } + validation { + condition = can(regexall("^[a-z0-9-]+$", var.gcp_regions)) + error_message = "All regions must be valid names." + } +} + +locals { + all_zones = [ + # US Central + { zone = "us-central1-a", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-central1-b", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-central1-c", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-central1-f", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # US East + { zone = "us-east1-b", location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east1-c", location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east1-d", location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-east4-a", location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east4-b", location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east4-c", location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-east5-a", location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east5-b", location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-east5-c", location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # Us West + { zone = "us-west1-a", location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west1-b", location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west1-c", location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-west2-a", location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west2-b", location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west2-c", location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-west3-a", location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west3-b", location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west3-c", location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + { zone = "us-west4-a", location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west4-b", location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-west4-c", location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # US South + { zone = "us-south1-a", location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-south1-b", location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + { zone = "us-south1-c", location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + + # Canada + { zone = "northamerica-northeast1-a", location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast1-b", location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast1-c", location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + + { zone = "northamerica-northeast2-a", location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast2-b", location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + { zone = "northamerica-northeast2-c", location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + + # South America East (Brazil, Chile) + { zone = "southamerica-east1-a", location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, + { zone = "southamerica-east1-b", location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, + { zone = "southamerica-east1-c", location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, + + { zone = "southamerica-west1-a", location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, + { zone = "southamerica-west1-b", location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, + { zone = "southamerica-west1-c", location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, + + # Europe North (Finland) + { zone = "europe-north1-a", location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, + { zone = "europe-north1-b", location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, + { zone = "europe-north1-c", location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, + + # Europe Central (Poland) + { zone = "europe-central2-a", location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, + { zone = "europe-central2-b", location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, + { zone = "europe-central2-c", location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, + + # Europe Southwest (Spain) + { zone = "europe-southwest1-a", location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, + { zone = "europe-southwest1-b", location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, + { zone = "europe-southwest1-c", location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, + + # Europe West + { zone = "europe-west1-b", location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, + { zone = "europe-west1-c", location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, + { zone = "europe-west1-d", location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, + + { zone = "europe-west2-a", location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, + { zone = "europe-west2-b", location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, + { zone = "europe-west2-c", location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, + + { zone = "europe-west3-b", location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west3-c", location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west3-d", location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + + { zone = "europe-west4-a", location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, + { zone = "europe-west4-b", location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, + { zone = "europe-west4-c", location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, + + { zone = "europe-west6-a", location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, + { zone = "europe-west6-b", location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, + { zone = "europe-west6-c", location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, + + { zone = "europe-west8-a", location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west8-b", location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west8-c", location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + + { zone = "europe-west9-a", location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, + { zone = "europe-west9-b", location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, + { zone = "europe-west9-c", location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, + + { zone = "europe-west10-a", location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west10-b", location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + { zone = "europe-west10-c", location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + + { zone = "europe-west12-a", location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west12-b", location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + { zone = "europe-west12-c", location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + + # Middleeast Central (Qatar, Saudi Arabia) + { zone = "me-central1-a ", location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + { zone = "me-central1-b ", location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + { zone = "me-central1-c ", location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + + { zone = "me-central2-a ", location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + { zone = "me-central2-b ", location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + { zone = "me-central2-c ", location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + + # Middleeast West (Israel) + { zone = "me-west1-a", location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, + { zone = "me-west1-b", location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, + { zone = "me-west1-c", location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, + + # Asia East (Taiwan, Hong Kong) + { zone = "asia-east1-a", location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, + { zone = "asia-east1-b", location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, + { zone = "asia-east1-c", location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, + + { zone = "asia-east2-a", location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, + { zone = "asia-east2-b", location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, + { zone = "asia-east2-c", location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, + + # Asia Northeast (Japan, South Korea) + { zone = "asia-northeast1-a", location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast1-b", location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast1-c", location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast2-a", location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast2-b", location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast2-c", location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, + { zone = "asia-northeast3-a", location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, + { zone = "asia-northeast3-b", location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, + { zone = "asia-northeast3-c", location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, + + # Asia South (India) + { zone = "asia-south1-a", location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south1-b", location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south1-c", location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south2-a", location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south2-b", location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, + { zone = "asia-south2-c", location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, + + # Asia Southeast (Singapore, Indonesia) + { zone = "asia-southeast1-a", location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, + { zone = "asia-southeast1-b", location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, + { zone = "asia-southeast1-c", location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, + { zone = "asia-southeast2-a", location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, + { zone = "asia-southeast2-b", location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, + { zone = "asia-southeast2-c", location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, + + # Australia (Sydney, Melbourne) + { zone = "australia-southeast1-a", location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast1-b", location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast1-c", location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast2-a", location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast2-b", location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + { zone = "australia-southeast2-c", location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, + ] +} + +data "coder_parameter" "aws_zones" { + type = "list(string)" + name = "aws_zones" + display_name = "AWS Zones" + icon = "/icon/aws.svg" + mutable = false + + dynamic "option" { + for_each = [for z in local.all_zones : z if contains(var.aws_regions, substr(z.zone, 0, index(z.zone, "-")))] + content { + icon = option.value.icon + name = option.value.location + description = option.value.zone + value = option.value.zone + } + } +} diff --git a/aws-regions/update.sh b/aws-regions/update.sh new file mode 100644 index 0000000..9701495 --- /dev/null +++ b/aws-regions/update.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Function to fetch AWS zones based on regions in `gcp_regions` variable in Terraform +fetch_aws_zones() { + for region in $(awk -F\" '/var\.aws_regions/{flag=1; next} flag && /],/{flag=0} flag' your_terraform_file.tf); do + aws ec2 describe-availability-zones --region "$region" --query 'AvailabilityZones[].ZoneName' --output text | tr '\t' '\n' | while read -r zone; do + location="AWS $region" # Adjust this as needed + icon="/emojis/1f1fa-1f1f8.png" # Adjust this as needed + + # Format the Terraform entry for this zone + echo " { zone = \"${zone}\", location = \"${location}\", icon = \"${icon}\" }," + done + done +} + +# Temporary file to store the updated Terraform content +temp_file=$(mktemp) + +# Print everything before the AWS zones list +awk '/locals {/,/aws_zones = \[/{print; exit}' your_terraform_file.tf > "$temp_file" + +# Fetch and format the AWS zones, appending them to the temporary file +echo " aws_zones = [" >> "$temp_file" +fetch_aws_zones >> "$temp_file" +echo " ]" >> "$temp_file" + +# Print everything after the AWS zones list +awk '/\],/{flag=1; next} flag' your_terraform_file.tf >> "$temp_file" + +# Replace the original Terraform file with the updated one +mv "$temp_file" your_terraform_file.tf + +# Clean up +rm -f "$temp_file" diff --git a/gcp-regions/README.md b/gcp-regions/README.md index 46941b9..292efc7 100644 --- a/gcp-regions/README.md +++ b/gcp-regions/README.md @@ -18,6 +18,6 @@ To use this module, add the following snippet to your template manifest: module "gcp_regions" { source = "https://registry.coder.com/modules/gcp-regions" gcp_regions = ["us-west1", "us-west2", "us-west3"] # Add your desired regions here, use ["all"] for all regions - gpu_only = true + gpu_only = true } ``` diff --git a/gcp-regions/main.tf b/gcp-regions/main.tf index 0a0b451..cb0ae02 100644 --- a/gcp-regions/main.tf +++ b/gcp-regions/main.tf @@ -143,13 +143,13 @@ locals { { zone = "europe-west12-c", has_gpu = false, location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, # Middleeast Central (Qatar, Saudi Arabia) - { zone = "me-central1-a ", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - { zone = "me-central1-b ", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - { zone = "me-central1-c ", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + { zone = "me-central1-a", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + { zone = "me-central1-b", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + { zone = "me-central1-c", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - { zone = "me-central2-a ", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, - { zone = "me-central2-b ", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, - { zone = "me-central2-c ", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + { zone = "me-central2-a", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + { zone = "me-central2-b", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + { zone = "me-central2-c", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, # Middleeast West (Israel) { zone = "me-west1-a", has_gpu = false, location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, @@ -202,11 +202,11 @@ locals { ] } -data "coder_parameter" "gcp-zones" { +data "coder_parameter" "gcp_zones" { type = "list(string)" name = "gcp_zones" display_name = "GCP Zones" - icon = "/icon/gcp/svg" + icon = "/icon/gcp.svg" mutable = true dynamic "option" { diff --git a/gcp-regions/update.sh b/gcp-regions/update.sh new file mode 100644 index 0000000..31d4802 --- /dev/null +++ b/gcp-regions/update.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +declare -A zone_to_location=( + ["us-central1"]="Council Bluffs, Iowa, USA" + ["us-east1"]="Moncks Corner, S. Carolina, USA" +) + +declare -A zone_to_emoji=( + ["us-central1"]="/emojis/1f1fa-1f1f8.png" + ["us-east1"]="/emojis/1f1fa-1f1f8.png" + # ... Add other mappings here +) + +# Function to check if a zone has a GPU +has_gpu() { + local zone=$1 + gcloud compute machine-types list --filter="zone:($zone) AND guestCpus:>=0" --format="csv[no-heading](name)" | grep -q "gpu" +} + +# Function to fetch zones from GCP and format them for Terraform +fetch_zones() { + gcloud compute zones list --format="csv[no-heading](name,region)" | while IFS=',' read -r zone region; do + # Check if the zone has a GPU + gpu_status=false + if has_gpu "$zone"; then + gpu_status=true + fi + + # Fetch location and emoji from the mapping + location=${zone_to_location[${zone%-*}]:-"TODO: Add Location"} + emoji=${zone_to_emoji[${zone%-*}]:-"/emojis/TODO: Add Emoji"} + + # Format the Terraform entry for this zone + echo " { zone = \"${zone}\", has_gpu = ${gpu_status}, location = \"${location}\", icon = \"${emoji}\" }," + done +} + +# Temporary file to store the updated Terraform content +temp_file=$(mktemp) + +# Print everything before the zone list +awk '/locals {/,/all_zones = \[/{print; exit}' your_terraform_file.tf > "$temp_file" + +# Fetch and format the zones, appending them to the temporary file +echo " all_zones = [" >> "$temp_file" +fetch_zones >> "$temp_file" +echo " ]" >> "$temp_file" + +# Print everything after the zone list +awk '/\],/{flag=1; next} flag' your_terraform_file.tf >> "$temp_file" + +# Replace the original Terraform file with the updated one +mv "$temp_file" your_terraform_file.tf + +# Clean up +rm -f "$temp_file" From 34ef7a2d2fb88939697349e174141e72c6f62dfe Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 20 Sep 2023 22:50:40 +0300 Subject: [PATCH 4/8] drop aws regions --- aws-regions/README.md | 22 ----- aws-regions/main.tf | 215 ------------------------------------------ aws-regions/update.sh | 34 ------- 3 files changed, 271 deletions(-) delete mode 100644 aws-regions/README.md delete mode 100644 aws-regions/main.tf delete mode 100644 aws-regions/update.sh diff --git a/aws-regions/README.md b/aws-regions/README.md deleted file mode 100644 index 6690c42..0000000 --- a/aws-regions/README.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -display_name: AWS Regions -description: Add Amazon Web Services regions to your Coder template. -icon: ../.icons/aws.svg -maintainer_github: coder -verified: true -tags: [aws, regions, zones] ---- -# Amazon Web Services Regions - -This module adds Amazon Web Services regions to your Coder template. - -## How to use this module - -To use this module, add the following snippet to your template manifest: - -```hcl -module "aws_regions" { - source = "https://registry.coder.com/modules/aws-regions" - gcp_regions = ["us-west-1", "us-west-2"] # Add your desired regions here, use ["all"] for all regions -} -``` diff --git a/aws-regions/main.tf b/aws-regions/main.tf deleted file mode 100644 index 20b18e1..0000000 --- a/aws-regions/main.tf +++ /dev/null @@ -1,215 +0,0 @@ -terraform { - required_version = ">= 1.0" - - required_providers { - coder = { - source = "coder/coder" - version = ">= 0.11" - } - } -} - -variable "gcp_regions" { - description = "List of GCP regions to include." - type = list(string) - default = [] - validation { - condition = length(var.gcp_regions) > 0 - error_message = "At least one region must be selected." - } - validation { - condition = can(regexall("^[a-z0-9-]+$", var.gcp_regions)) - error_message = "All regions must be valid names." - } -} - -locals { - all_zones = [ - # US Central - { zone = "us-central1-a", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-central1-b", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-central1-c", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-central1-f", location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - # US East - { zone = "us-east1-b", location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east1-c", location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east1-d", location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - { zone = "us-east4-a", location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east4-b", location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east4-c", location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - { zone = "us-east5-a", location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east5-b", location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east5-c", location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - # Us West - { zone = "us-west1-a", location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west1-b", location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west1-c", location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - { zone = "us-west2-a", location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west2-b", location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west2-c", location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - { zone = "us-west3-a", location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west3-b", location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west3-c", location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - { zone = "us-west4-a", location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west4-b", location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west4-c", location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - # US South - { zone = "us-south1-a", location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-south1-b", location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-south1-c", location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - - # Canada - { zone = "northamerica-northeast1-a", location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast1-b", location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast1-c", location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - - { zone = "northamerica-northeast2-a", location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast2-b", location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast2-c", location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - - # South America East (Brazil, Chile) - { zone = "southamerica-east1-a", location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, - { zone = "southamerica-east1-b", location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, - { zone = "southamerica-east1-c", location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, - - { zone = "southamerica-west1-a", location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, - { zone = "southamerica-west1-b", location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, - { zone = "southamerica-west1-c", location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, - - # Europe North (Finland) - { zone = "europe-north1-a", location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, - { zone = "europe-north1-b", location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, - { zone = "europe-north1-c", location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, - - # Europe Central (Poland) - { zone = "europe-central2-a", location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, - { zone = "europe-central2-b", location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, - { zone = "europe-central2-c", location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, - - # Europe Southwest (Spain) - { zone = "europe-southwest1-a", location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, - { zone = "europe-southwest1-b", location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, - { zone = "europe-southwest1-c", location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, - - # Europe West - { zone = "europe-west1-b", location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, - { zone = "europe-west1-c", location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, - { zone = "europe-west1-d", location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, - - { zone = "europe-west2-a", location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, - { zone = "europe-west2-b", location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, - { zone = "europe-west2-c", location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, - - { zone = "europe-west3-b", location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west3-c", location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west3-d", location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - - { zone = "europe-west4-a", location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, - { zone = "europe-west4-b", location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, - { zone = "europe-west4-c", location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, - - { zone = "europe-west6-a", location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, - { zone = "europe-west6-b", location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, - { zone = "europe-west6-c", location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, - - { zone = "europe-west8-a", location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west8-b", location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west8-c", location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - - { zone = "europe-west9-a", location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, - { zone = "europe-west9-b", location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, - { zone = "europe-west9-c", location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, - - { zone = "europe-west10-a", location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west10-b", location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west10-c", location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - - { zone = "europe-west12-a", location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west12-b", location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west12-c", location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - - # Middleeast Central (Qatar, Saudi Arabia) - { zone = "me-central1-a ", location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - { zone = "me-central1-b ", location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - { zone = "me-central1-c ", location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - - { zone = "me-central2-a ", location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, - { zone = "me-central2-b ", location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, - { zone = "me-central2-c ", location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, - - # Middleeast West (Israel) - { zone = "me-west1-a", location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, - { zone = "me-west1-b", location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, - { zone = "me-west1-c", location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, - - # Asia East (Taiwan, Hong Kong) - { zone = "asia-east1-a", location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, - { zone = "asia-east1-b", location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, - { zone = "asia-east1-c", location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, - - { zone = "asia-east2-a", location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, - { zone = "asia-east2-b", location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, - { zone = "asia-east2-c", location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, - - # Asia Northeast (Japan, South Korea) - { zone = "asia-northeast1-a", location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast1-b", location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast1-c", location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast2-a", location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast2-b", location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast2-c", location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast3-a", location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, - { zone = "asia-northeast3-b", location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, - { zone = "asia-northeast3-c", location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, - - # Asia South (India) - { zone = "asia-south1-a", location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south1-b", location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south1-c", location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south2-a", location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south2-b", location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south2-c", location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, - - # Asia Southeast (Singapore, Indonesia) - { zone = "asia-southeast1-a", location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, - { zone = "asia-southeast1-b", location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, - { zone = "asia-southeast1-c", location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, - { zone = "asia-southeast2-a", location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, - { zone = "asia-southeast2-b", location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, - { zone = "asia-southeast2-c", location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, - - # Australia (Sydney, Melbourne) - { zone = "australia-southeast1-a", location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast1-b", location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast1-c", location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast2-a", location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast2-b", location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast2-c", location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - ] -} - -data "coder_parameter" "aws_zones" { - type = "list(string)" - name = "aws_zones" - display_name = "AWS Zones" - icon = "/icon/aws.svg" - mutable = false - - dynamic "option" { - for_each = [for z in local.all_zones : z if contains(var.aws_regions, substr(z.zone, 0, index(z.zone, "-")))] - content { - icon = option.value.icon - name = option.value.location - description = option.value.zone - value = option.value.zone - } - } -} diff --git a/aws-regions/update.sh b/aws-regions/update.sh deleted file mode 100644 index 9701495..0000000 --- a/aws-regions/update.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# Function to fetch AWS zones based on regions in `gcp_regions` variable in Terraform -fetch_aws_zones() { - for region in $(awk -F\" '/var\.aws_regions/{flag=1; next} flag && /],/{flag=0} flag' your_terraform_file.tf); do - aws ec2 describe-availability-zones --region "$region" --query 'AvailabilityZones[].ZoneName' --output text | tr '\t' '\n' | while read -r zone; do - location="AWS $region" # Adjust this as needed - icon="/emojis/1f1fa-1f1f8.png" # Adjust this as needed - - # Format the Terraform entry for this zone - echo " { zone = \"${zone}\", location = \"${location}\", icon = \"${icon}\" }," - done - done -} - -# Temporary file to store the updated Terraform content -temp_file=$(mktemp) - -# Print everything before the AWS zones list -awk '/locals {/,/aws_zones = \[/{print; exit}' your_terraform_file.tf > "$temp_file" - -# Fetch and format the AWS zones, appending them to the temporary file -echo " aws_zones = [" >> "$temp_file" -fetch_aws_zones >> "$temp_file" -echo " ]" >> "$temp_file" - -# Print everything after the AWS zones list -awk '/\],/{flag=1; next} flag' your_terraform_file.tf >> "$temp_file" - -# Replace the original Terraform file with the updated one -mv "$temp_file" your_terraform_file.tf - -# Clean up -rm -f "$temp_file" From d5e2d2361cf62a68506bcba64f7bc6c415cdca20 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 20 Sep 2023 22:59:27 +0300 Subject: [PATCH 5/8] mereg main --- gcp-region/README.md | 21 ++++++++++++++------- {gcp-regions => gcp-region}/main.tf | 0 {gcp-regions => gcp-region}/update.sh | 0 gcp-regions/README.md | 23 ----------------------- 4 files changed, 14 insertions(+), 30 deletions(-) rename {gcp-regions => gcp-region}/main.tf (100%) rename {gcp-regions => gcp-region}/update.sh (100%) delete mode 100644 gcp-regions/README.md diff --git a/gcp-region/README.md b/gcp-region/README.md index 6746c81..292efc7 100644 --- a/gcp-region/README.md +++ b/gcp-region/README.md @@ -1,16 +1,23 @@ --- -display_name: Google Cloud Region -description: A parameter with human region names and icons +display_name: GCP Regions +description: Add Google Cloud Platform regions to your Coder template. icon: ../.icons/gcp.svg maintainer_github: coder verified: true -tags: [helper, parameter, azure] +tags: [gcp, regions, zones] --- +# Google Cloud Platform Regions -# Google Cloud Region +This module adds Google Cloud Platform regions to your Coder template. -A parameter with all Google Cloud regions. This allows developers to select the region closest to them. +## How to use this module -## Examples +To use this module, add the following snippet to your template manifest: -TODO \ No newline at end of file +```hcl +module "gcp_regions" { + source = "https://registry.coder.com/modules/gcp-regions" + gcp_regions = ["us-west1", "us-west2", "us-west3"] # Add your desired regions here, use ["all"] for all regions + gpu_only = true +} +``` diff --git a/gcp-regions/main.tf b/gcp-region/main.tf similarity index 100% rename from gcp-regions/main.tf rename to gcp-region/main.tf diff --git a/gcp-regions/update.sh b/gcp-region/update.sh similarity index 100% rename from gcp-regions/update.sh rename to gcp-region/update.sh diff --git a/gcp-regions/README.md b/gcp-regions/README.md deleted file mode 100644 index 292efc7..0000000 --- a/gcp-regions/README.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -display_name: GCP Regions -description: Add Google Cloud Platform regions to your Coder template. -icon: ../.icons/gcp.svg -maintainer_github: coder -verified: true -tags: [gcp, regions, zones] ---- -# Google Cloud Platform Regions - -This module adds Google Cloud Platform regions to your Coder template. - -## How to use this module - -To use this module, add the following snippet to your template manifest: - -```hcl -module "gcp_regions" { - source = "https://registry.coder.com/modules/gcp-regions" - gcp_regions = ["us-west1", "us-west2", "us-west3"] # Add your desired regions here, use ["all"] for all regions - gpu_only = true -} -``` From 47aa3c2a37d4ad5768938603fdb4c3012c62d1c0 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 20 Sep 2023 23:20:40 +0300 Subject: [PATCH 6/8] Update README.md --- gcp-region/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcp-region/README.md b/gcp-region/README.md index 292efc7..9d787ec 100644 --- a/gcp-region/README.md +++ b/gcp-region/README.md @@ -4,13 +4,13 @@ description: Add Google Cloud Platform regions to your Coder template. icon: ../.icons/gcp.svg maintainer_github: coder verified: true -tags: [gcp, regions, zones] +tags: [gcp, regions, zones, helper] --- # Google Cloud Platform Regions This module adds Google Cloud Platform regions to your Coder template. -## How to use this module +## Examples To use this module, add the following snippet to your template manifest: From 6aa0e7b821ed963a73a430a7d1a2797cb8a5f861 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Thu, 21 Sep 2023 00:16:05 +0300 Subject: [PATCH 7/8] refactor to match with other cloud provider regions --- gcp-region/main.tf | 773 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 640 insertions(+), 133 deletions(-) diff --git a/gcp-region/main.tf b/gcp-region/main.tf index cb0ae02..f1c9786 100644 --- a/gcp-region/main.tf +++ b/gcp-region/main.tf @@ -9,16 +9,28 @@ terraform { } } -variable "gcp_regions" { +variable "display_name" { + default = "GCP Region" + description = "The display name of the parameter." + type = string +} + +variable "description" { + default = "The region to deploy workspace infrastructure." + description = "The description of the parameter." + type = string +} + +variable "default" { description = "List of GCP regions to include." type = list(string) - default = [] + default = ["us-central1"] validation { - condition = length(var.gcp_regions) > 0 + condition = length(var.default) > 0 error_message = "At least one region must be selected." } validation { - condition = can(regexall("^[a-z0-9-]+$", var.gcp_regions)) + condition = can(regexall("^[a-z0-9-]+$", var.default)) error_message = "All regions must be valid names." } } @@ -29,193 +41,688 @@ variable "gpu_only" { default = false } +variable "mutable" { + default = false + description = "Whether the parameter can be changed after creation." + type = bool +} + +variable "custom_names" { + default = {} + description = "A map of custom display names for region IDs." + type = map(string) +} + +variable "custom_icons" { + default = {} + description = "A map of custom icons for region IDs." + type = map(string) +} + locals { - all_zones = [ + zones = { # US Central - { zone = "us-central1-a", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-central1-b", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-central1-c", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-central1-f", has_gpu = true, location = "Council Bluffs, Iowa, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-central1-a" = { + has_gpu = true + name = "Council Bluffs, Iowa, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-central1-b" = { + has_gpu = true + name = "Council Bluffs, Iowa, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-central1-c" = { + has_gpu = true + name = "Council Bluffs, Iowa, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-central1-f" = { + has_gpu = true + name = "Council Bluffs, Iowa, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } # US East - { zone = "us-east1-b", has_gpu = true, location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east1-c", has_gpu = true, location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east1-d", has_gpu = true, location = "Moncks Corner, S. Carolina, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-east1-b" = { + has_gpu = true + name = "Moncks Corner, S. Carolina, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-east1-c" = { + has_gpu = true + name = "Moncks Corner, S. Carolina, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-east1-d" = { + has_gpu = true + name = "Moncks Corner, S. Carolina, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } - { zone = "us-east4-a", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east4-b", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east4-c", has_gpu = true, location = "Ashburn, Virginia, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-east4-a" = { + has_gpu = true + name = "Ashburn, Virginia, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-east4-b" = { + has_gpu = true + name = "Ashburn, Virginia, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-east4-c" = { + has_gpu = true + name = "Ashburn, Virginia, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } - { zone = "us-east5-a", has_gpu = false, location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east5-b", has_gpu = true, location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-east5-c", has_gpu = false, location = "Columbus, Ohio, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-east5-a" = { + has_gpu = false + name = "Columbus, Ohio, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-east5-b" = { + has_gpu = true + name = "Columbus, Ohio, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-east5-c" = { + has_gpu = false + name = "Columbus, Ohio, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } # Us West - { zone = "us-west1-a", has_gpu = true, location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west1-b", has_gpu = true, location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west1-c", has_gpu = false, location = "The Dalles, Oregon, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-west1-a" = { + has_gpu = true + name = "The Dalles, Oregon, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west1-b" = { + has_gpu = true + name = "The Dalles, Oregon, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west1-c" = { + has_gpu = false + name = "The Dalles, Oregon, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } - { zone = "us-west2-a", has_gpu = false, location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west2-b", has_gpu = true, location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west2-c", has_gpu = true, location = "Los Angeles, California, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-west2-a" = { + has_gpu = false + name = "Los Angeles, California, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west2-b" = { + has_gpu = true + name = "Los Angeles, California, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west2-c" = { + has_gpu = true + name = "Los Angeles, California, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } - { zone = "us-west3-a", has_gpu = true, location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west3-b", has_gpu = true, location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west3-c", has_gpu = true, location = "Salt Lake City, Utah, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-west3-a" = { + has_gpu = true + name = "Salt Lake City, Utah, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west3-b" = { + has_gpu = true + name = "Salt Lake City, Utah, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west3-c" = { + has_gpu = true + name = "Salt Lake City, Utah, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } - { zone = "us-west4-a", has_gpu = true, location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west4-b", has_gpu = true, location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-west4-c", has_gpu = true, location = "Las Vegas, Nevada, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-west4-a" = { + has_gpu = true + name = "Las Vegas, Nevada, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west4-b" = { + has_gpu = true + name = "Las Vegas, Nevada, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west4-c" = { + has_gpu = true + name = "Las Vegas, Nevada, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } # US South - { zone = "us-south1-a", has_gpu = false, location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-south1-b", has_gpu = false, location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, - { zone = "us-south1-c", has_gpu = false, location = "Dallas, Texas, USA", icon = "/emojis/1f1fa-1f1f8.png" }, + "us-south1-a" = { + has_gpu = false + name = "Dallas, Texas, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-south1-b" = { + has_gpu = false + name = "Dallas, Texas, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-south1-c" = { + has_gpu = false + name = "Dallas, Texas, USA" + icon = "/emojis/1f1fa-1f1f8.png" + } # Canada - { zone = "northamerica-northeast1-a", has_gpu = true, location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast1-b", has_gpu = true, location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast1-c", has_gpu = true, location = "Montréal, Québec, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + "northamerica-northeast1-a" = { + has_gpu = true + name = "Montréal, Québec, Canada" + icon = "/emojis/1f1e8-1f1f6.png" + } + "northamerica-northeast1-b" = { + has_gpu = true + name = "Montréal, Québec, Canada" + icon = "/emojis/1f1e8-1f1f6.png" + } + "northamerica-northeast1-c" = { + has_gpu = true + name = "Montréal, Québec, Canada" + icon = "/emojis/1f1e8-1f1f6.png" + } - { zone = "northamerica-northeast2-a", has_gpu = false, location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast2-b", has_gpu = false, location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, - { zone = "northamerica-northeast2-c", has_gpu = false, location = "Toronto, Ontario, Canada", icon = "/emojis/1f1e8-1f1f6.png" }, + "northamerica-northeast2-a" = { + has_gpu = false + name = "Toronto, Ontario, Canada" + icon = "/emojis/1f1e8-1f1f6.png" + } + "northamerica-northeast2-b" = { + has_gpu = false + name = "Toronto, Ontario, Canada" + icon = "/emojis/1f1e8-1f1f6.png" + } + "northamerica-northeast2-c" = { + has_gpu = false + name = "Toronto, Ontario, Canada" + icon = "/emojis/1f1e8-1f1f6.png" + } # South America East (Brazil, Chile) - { zone = "southamerica-east1-a", has_gpu = true, location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, - { zone = "southamerica-east1-b", has_gpu = false, location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, - { zone = "southamerica-east1-c", has_gpu = true, location = "Osasco, São Paulo, Brazil", icon = "/emojis/1f1e7-1f1f7.png" }, + "southamerica-east1-a" = { + has_gpu = true + name = "Osasco, São Paulo, Brazil" + icon = "/emojis/1f1e7-1f1f7.png" + } + "southamerica-east1-b" = { + has_gpu = false + name = "Osasco, São Paulo, Brazil" + icon = "/emojis/1f1e7-1f1f7.png" + } + "southamerica-east1-c" = { + has_gpu = true + name = "Osasco, São Paulo, Brazil" + icon = "/emojis/1f1e7-1f1f7.png" + } - { zone = "southamerica-west1-a", has_gpu = false, location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, - { zone = "southamerica-west1-b", has_gpu = false, location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, - { zone = "southamerica-west1-c", has_gpu = false, location = "Santiago, Chile", icon = "/emojis/1f1e8-1f1f1.png" }, + "southamerica-west1-a" = { + has_gpu = false + name = "Santiago, Chile" + icon = "/emojis/1f1e8-1f1f1.png" + } + "southamerica-west1-b" = { + has_gpu = false + name = "Santiago, Chile" + icon = "/emojis/1f1e8-1f1f1.png" + } + "southamerica-west1-c" = { + has_gpu = false + name = "Santiago, Chile" + icon = "/emojis/1f1e8-1f1f1.png" + } # Europe North (Finland) - { zone = "europe-north1-a", has_gpu = false, location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, - { zone = "europe-north1-b", has_gpu = false, location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, - { zone = "europe-north1-c", has_gpu = false, location = "Hamina, Finland", icon = "/emojis/1f1e7-1f1ee.png" }, + "europe-north1-a" = { + has_gpu = false + name = "Hamina, Finland" + icon = "/emojis/1f1e7-1f1ee.png" + } + "europe-north1-b" = { + has_gpu = false + name = "Hamina, Finland" + icon = "/emojis/1f1e7-1f1ee.png" + } + "europe-north1-c" = { + has_gpu = false + name = "Hamina, Finland" + icon = "/emojis/1f1e7-1f1ee.png" + } # Europe Central (Poland) - { zone = "europe-central2-a", has_gpu = false, location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, - { zone = "europe-central2-b", has_gpu = true, location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, - { zone = "europe-central2-c", has_gpu = true, location = "Warsaw, Poland", icon = "/emojis/1f1f5-1f1f1.png" }, + "europe-central2-a" = { + has_gpu = false + name = "Warsaw, Poland" + icon = "/emojis/1f1f5-1f1f1.png" + } + "europe-central2-b" = { + has_gpu = true + name = "Warsaw, Poland" + icon = "/emojis/1f1f5-1f1f1.png" + } + "europe-central2-c" = { + has_gpu = true + name = "Warsaw, Poland" + icon = "/emojis/1f1f5-1f1f1.png" + } # Europe Southwest (Spain) - { zone = "europe-southwest1-a", has_gpu = false, location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, - { zone = "europe-southwest1-b", has_gpu = false, location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, - { zone = "europe-southwest1-c", has_gpu = false, location = "Madrid, Spain", icon = "/emojis/1f1ea-1f1f8.png" }, + "europe-southwest1-a" = { + has_gpu = false + name = "Madrid, Spain" + icon = "/emojis/1f1ea-1f1f8.png" + } + "europe-southwest1-b" = { + has_gpu = false + name = "Madrid, Spain" + icon = "/emojis/1f1ea-1f1f8.png" + } + "europe-southwest1-c" = { + has_gpu = false + name = "Madrid, Spain" + icon = "/emojis/1f1ea-1f1f8.png" + } # Europe West - { zone = "europe-west1-b", has_gpu = true, location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, - { zone = "europe-west1-c", has_gpu = true, location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, - { zone = "europe-west1-d", has_gpu = true, location = "St. Ghislain, Belgium", icon = "/emojis/1f1e7-1f1ea.png" }, + "europe-west1-b" = { + has_gpu = true + name = "St. Ghislain, Belgium" + icon = "/emojis/1f1e7-1f1ea.png" + } + "europe-west1-c" = { + has_gpu = true + name = "St. Ghislain, Belgium" + icon = "/emojis/1f1e7-1f1ea.png" + } + "europe-west1-d" = { + has_gpu = true + name = "St. Ghislain, Belgium" + icon = "/emojis/1f1e7-1f1ea.png" + } - { zone = "europe-west2-a", has_gpu = true, location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, - { zone = "europe-west2-b", has_gpu = true, location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, - { zone = "europe-west2-c", has_gpu = false, location = "London, England", icon = "/emojis/1f173–1f1ff.png" }, + "europe-west2-a" = { + has_gpu = true + name = "London, England" + icon = "/emojis/1f173-1f1ff.png" + } + "europe-west2-b" = { + has_gpu = true + name = "London, England" + icon = "/emojis/1f173-1f1ff.png" + } + "europe-west2-c" = { + has_gpu = false + name = "London, England" + icon = "/emojis/1f173-1f1ff.png" + } - { zone = "europe-west3-b", has_gpu = false, location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west3-c", has_gpu = true, location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west3-d", has_gpu = false, location = "Frankfurt, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + "europe-west3-b" = { + has_gpu = false + name = "Frankfurt, Germany" + icon = "/emojis/1f1e9-1f1ea.png" + } + "europe-west3-c" = { + has_gpu = true + name = "Frankfurt, Germany" + icon = "/emojis/1f1e9-1f1ea.png" + } + "europe-west3-d" = { + has_gpu = false + name = "Frankfurt, Germany" + icon = "/emojis/1f1e9-1f1ea.png" + } - { zone = "europe-west4-a", has_gpu = true, location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, - { zone = "europe-west4-b", has_gpu = true, location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, - { zone = "europe-west4-c", has_gpu = true, location = "Eemshaven, Netherlands", icon = "/emojis/1f1f3-1f1f1.png" }, + "europe-west4-a" = { + has_gpu = true + name = "Eemshaven, Netherlands" + icon = "/emojis/1f1f3-1f1f1.png" + } + "europe-west4-b" = { + has_gpu = true + name = "Eemshaven, Netherlands" + icon = "/emojis/1f1f3-1f1f1.png" + } + "europe-west4-c" = { + has_gpu = true + name = "Eemshaven, Netherlands" + icon = "/emojis/1f1f3-1f1f1.png" + } - { zone = "europe-west6-a", has_gpu = false, location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, - { zone = "europe-west6-b", has_gpu = false, location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, - { zone = "europe-west6-c", has_gpu = false, location = "Zurich, Switzerland", icon = "/emojis/1f1e8-1f1ed.png" }, + "europe-west6-a" = { + has_gpu = false + name = "Zurich, Switzerland" + icon = "/emojis/1f1e8-1f1ed.png" + } + "europe-west6-b" = { + has_gpu = false + name = "Zurich, Switzerland" + icon = "/emojis/1f1e8-1f1ed.png" + } + "europe-west6-c" = { + has_gpu = false + name = "Zurich, Switzerland" + icon = "/emojis/1f1e8-1f1ed.png" + } - { zone = "europe-west8-a", has_gpu = false, location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west8-b", has_gpu = false, location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west8-c", has_gpu = false, location = "Milan, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + "europe-west8-a" = { + has_gpu = false + name = "Milan, Italy" + icon = "/emojis/1f1ee-1f1f9.png" + } + "europe-west8-b" = { + has_gpu = false + name = "Milan, Italy" + icon = "/emojis/1f1ee-1f1f9.png" + } + "europe-west8-c" = { + has_gpu = false + name = "Milan, Italy" + icon = "/emojis/1f1ee-1f1f9.png" + } - { zone = "europe-west9-a", has_gpu = false, location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, - { zone = "europe-west9-b", has_gpu = false, location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, - { zone = "europe-west9-c", has_gpu = false, location = "Paris, France", icon = "/emojis/1f1eb-1f1f7.png" }, + "europe-west9-a" = { + has_gpu = false + name = "Paris, France" + icon = "/emojis/1f1eb-1f1f7.png" + } + "europe-west9-b" = { + has_gpu = false + name = "Paris, France" + icon = "/emojis/1f1eb-1f1f7.png" + } + "europe-west9-c" = { + has_gpu = false + name = "Paris, France" + icon = "/emojis/1f1eb-1f1f7.png" + } - { zone = "europe-west10-a", has_gpu = false, location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west10-b", has_gpu = false, location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, - { zone = "europe-west10-c", has_gpu = false, location = "Berlin, Germany", icon = "/emojis/1f1e9-1f1ea.png" }, + "europe-west10-a" = { + has_gpu = false + name = "Berlin, Germany" + icon = "/emojis/1f1e9-1f1ea.png" + } + "europe-west10-b" = { + has_gpu = false + name = "Berlin, Germany" + icon = "/emojis/1f1e9-1f1ea.png" + } + "europe-west10-c" = { + has_gpu = false + name = "Berlin, Germany" + icon = "/emojis/1f1e9-1f1ea.png" + } - { zone = "europe-west12-a", has_gpu = false, location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west12-b", has_gpu = false, location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, - { zone = "europe-west12-c", has_gpu = false, location = "Turin, Italy", icon = "/emojis/1f1ee-1f1f9.png" }, + "europe-west12-a" = { + has_gpu = false + name = "Turin, Italy" + icon = "/emojis/1f1ee-1f1f9.png" + } + "europe-west12-b" = { + has_gpu = false + name = "Turin, Italy" + icon = "/emojis/1f1ee-1f1f9.png" + } + "europe-west12-c" = { + has_gpu = false + name = "Turin, Italy" + icon = "/emojis/1f1ee-1f1f9.png" + } # Middleeast Central (Qatar, Saudi Arabia) - { zone = "me-central1-a", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - { zone = "me-central1-b", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, - { zone = "me-central1-c", has_gpu = false, location = "Doha, Qatar", icon = "/emojis/1f1f6-1f1e6.png" }, + "me-central1-a" = { + has_gpu = false + name = "Doha, Qatar" + icon = "/emojis/1f1f6-1f1e6.png" + } + "me-central1-b" = { + has_gpu = false + name = "Doha, Qatar" + icon = "/emojis/1f1f6-1f1e6.png" + } + "me-central1-c" = { + has_gpu = false + name = "Doha, Qatar" + icon = "/emojis/1f1f6-1f1e6.png" + } - { zone = "me-central2-a", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, - { zone = "me-central2-b", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, - { zone = "me-central2-c", has_gpu = false, location = "Dammam, Saudi Arabia", icon = "/emojis/1f1f8-1f1e6.png" }, + "me-central2-a" = { + has_gpu = false + name = "Dammam, Saudi Arabia" + icon = "/emojis/1f1f8-1f1e6.png" + } + "me-central2-b" = { + has_gpu = false + name = "Dammam, Saudi Arabia" + icon = "/emojis/1f1f8-1f1e6.png" + } + "me-central2-c" = { + has_gpu = false + name = "Dammam, Saudi Arabia" + icon = "/emojis/1f1f8-1f1e6.png" + } # Middleeast West (Israel) - { zone = "me-west1-a", has_gpu = false, location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, - { zone = "me-west1-b", has_gpu = true, location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, - { zone = "me-west1-c", has_gpu = true, location = "Tel Aviv, Israel", icon = "/emojis/1f1ee-1f1f1.png" }, + "me-west1-a" = { + has_gpu = false + name = "Tel Aviv, Israel" + icon = "/emojis/1f1ee-1f1f1.png" + } + "me-west1-b" = { + has_gpu = true + name = "Tel Aviv, Israel" + icon = "/emojis/1f1ee-1f1f1.png" + } + "me-west1-c" = { + has_gpu = true + name = "Tel Aviv, Israel" + icon = "/emojis/1f1ee-1f1f1.png" + } # Asia East (Taiwan, Hong Kong) - { zone = "asia-east1-a", has_gpu = true, location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, - { zone = "asia-east1-b", has_gpu = true, location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, - { zone = "asia-east1-c", has_gpu = true, location = "Changhua County, Taiwan", icon = "/emojis/1f1f9-1f1fc.png" }, + "asia-east1-a" = { + has_gpu = true + name = "Changhua County, Taiwan" + icon = "/emojis/1f1f9-1f1fc.png" + } + "asia-east1-b" = { + has_gpu = true + name = "Changhua County, Taiwan" + icon = "/emojis/1f1f9-1f1fc.png" + } + "asia-east1-c" = { + has_gpu = true + name = "Changhua County, Taiwan" + icon = "/emojis/1f1f9-1f1fc.png" + } - { zone = "asia-east2-a", has_gpu = true, location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, - { zone = "asia-east2-b", has_gpu = false, location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, - { zone = "asia-east2-c", has_gpu = true, location = "Hong Kong", icon = "/emojis/1f1ed-1f1f0.png" }, + "asia-east2-a" = { + has_gpu = true + name = "Hong Kong" + icon = "/emojis/1f1ed-1f1f0.png" + } + "asia-east2-b" = { + has_gpu = false + name = "Hong Kong" + icon = "/emojis/1f1ed-1f1f0.png" + } + "asia-east2-c" = { + has_gpu = true + name = "Hong Kong" + icon = "/emojis/1f1ed-1f1f0.png" + } # Asia Northeast (Japan, South Korea) - { zone = "asia-northeast1-a", has_gpu = true, location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast1-b", has_gpu = false, location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast1-c", has_gpu = true, location = "Tokyo, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast2-a", has_gpu = false, location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast2-b", has_gpu = false, location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast2-c", has_gpu = false, location = "Osaka, Japan", icon = "/emojis/1f1ef-1f1f5.png" }, - { zone = "asia-northeast3-a", has_gpu = true, location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, - { zone = "asia-northeast3-b", has_gpu = true, location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, - { zone = "asia-northeast3-c", has_gpu = true, location = "Seoul, South Korea", icon = "/emojis/1f1f0-1f1f7.png" }, + "asia-northeast1-a" = { + has_gpu = true + name = "Tokyo, Japan" + icon = "/emojis/1f1ef-1f1f5.png" + } + "asia-northeast1-b" = { + has_gpu = false + name = "Tokyo, Japan" + icon = "/emojis/1f1ef-1f1f5.png" + } + "asia-northeast1-c" = { + has_gpu = true + name = "Tokyo, Japan" + icon = "/emojis/1f1ef-1f1f5.png" + } + "asia-northeast2-a" = { + has_gpu = false + name = "Osaka, Japan" + icon = "/emojis/1f1ef-1f1f5.png" + } + "asia-northeast2-b" = { + has_gpu = false + name = "Osaka, Japan" + icon = "/emojis/1f1ef-1f1f5.png" + } + "asia-northeast2-c" = { + has_gpu = false + name = "Osaka, Japan" + icon = "/emojis/1f1ef-1f1f5.png" + } + "asia-northeast3-a" = { + has_gpu = true + name = "Seoul, South Korea" + icon = "/emojis/1f1f0-1f1f7.png" + } + "asia-northeast3-b" = { + has_gpu = true + name = "Seoul, South Korea" + icon = "/emojis/1f1f0-1f1f7.png" + } + "asia-northeast3-c" = { + has_gpu = true + name = "Seoul, South Korea" + icon = "/emojis/1f1f0-1f1f7.png" + } # Asia South (India) - { zone = "asia-south1-a", has_gpu = true, location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south1-b", has_gpu = true, location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south1-c", has_gpu = false, location = "Mumbai, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south2-a", has_gpu = false, location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south2-b", has_gpu = false, location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, - { zone = "asia-south2-c", has_gpu = false, location = "Delhi, India", icon = "/emojis/1f1ee-1f1f3.png" }, + "asia-south1-a" = { + has_gpu = true + name = "Mumbai, India" + icon = "/emojis/1f1ee-1f1f3.png" + } + "asia-south1-b" = { + has_gpu = true + name = "Mumbai, India" + icon = "/emojis/1f1ee-1f1f3.png" + } + "asia-south1-c" = { + has_gpu = false + name = "Mumbai, India" + icon = "/emojis/1f1ee-1f1f3.png" + } + "asia-south2-a" = { + has_gpu = false + name = "Delhi, India" + icon = "/emojis/1f1ee-1f1f3.png" + } + "asia-south2-b" = { + has_gpu = false + name = "Delhi, India" + icon = "/emojis/1f1ee-1f1f3.png" + } + "asia-south2-c" = { + has_gpu = false + name = "Delhi, India" + icon = "/emojis/1f1ee-1f1f3.png" + } # Asia Southeast (Singapore, Indonesia) - { zone = "asia-southeast1-a", has_gpu = true, location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, - { zone = "asia-southeast1-b", has_gpu = true, location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, - { zone = "asia-southeast1-c", has_gpu = true, location = "Jurong West, Singapore", icon = "/emojis/1f1f8-1f1ec.png" }, - { zone = "asia-southeast2-a", has_gpu = true, location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, - { zone = "asia-southeast2-b", has_gpu = true, location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, - { zone = "asia-southeast2-c", has_gpu = true, location = "Jakarta, Indonesia", icon = "/emojis/1f1ee-1f1e9.png" }, + "asia-southeast1-a" = { + has_gpu = true + name = "Jurong West, Singapore" + icon = "/emojis/1f1f8-1f1ec.png" + } + "asia-southeast1-b" = { + has_gpu = true + name = "Jurong West, Singapore" + icon = "/emojis/1f1f8-1f1ec.png" + } + "asia-southeast1-c" = { + has_gpu = true + name = "Jurong West, Singapore" + icon = "/emojis/1f1f8-1f1ec.png" + } + "asia-southeast2-a" = { + has_gpu = true + name = "Jakarta, Indonesia" + icon = "/emojis/1f1ee-1f1e9.png" + } + "asia-southeast2-b" = { + has_gpu = true + name = "Jakarta, Indonesia" + icon = "/emojis/1f1ee-1f1e9.png" + } + "asia-southeast2-c" = { + has_gpu = true + name = "Jakarta, Indonesia" + icon = "/emojis/1f1ee-1f1e9.png" + } # Australia (Sydney, Melbourne) - { zone = "australia-southeast1-a", has_gpu = true, location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast1-b", has_gpu = true, location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast1-c", has_gpu = true, location = "Sydney, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast2-a", has_gpu = false, location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast2-b", has_gpu = false, location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - { zone = "australia-southeast2-c", has_gpu = false, location = "Melbourne, Australia", icon = "/emojis/1f1e6-1f1fa.png" }, - ] + "australia-southeast1-a" = { + has_gpu = true + name = "Sydney, Australia" + icon = "/emojis/1f1e6-1f1fa.png" + } + "australia-southeast1-b" = { + has_gpu = true + name = "Sydney, Australia" + icon = "/emojis/1f1e6-1f1fa.png" + } + "australia-southeast1-c" = { + has_gpu = true + name = "Sydney, Australia" + icon = "/emojis/1f1e6-1f1fa.png" + } + "australia-southeast2-a" = { + has_gpu = false + name = "Melbourne, Australia" + icon = "/emojis/1f1e6-1f1fa.png" + } + "australia-southeast2-b" = { + has_gpu = false + name = "Melbourne, Australia" + icon = "/emojis/1f1e6-1f1fa.png" + } + "australia-southeast2-c" = { + has_gpu = false + name = "Melbourne, Australia" + icon = "/emojis/1f1e6-1f1fa.png" + } + } } -data "coder_parameter" "gcp_zones" { +data "coder_parameter" "region" { type = "list(string)" - name = "gcp_zones" - display_name = "GCP Zones" + name = "gcp_region" + display_name = var.display_name + description = var.description icon = "/icon/gcp.svg" - mutable = true + mutable = var.mutable dynamic "option" { - for_each = [for z in local.all_zones : z if contains(var.gcp_regions, substr(z.zone, 0, index(z.zone, "-"))) && (!var.gpu_only || z.has_gpu)] + for_each = { for k, v in local.zones : k => v if contains(var.default, k) && (!var.gpu_only || v.has_gpu) } content { - icon = option.value.icon - name = option.value.location - description = option.value.zone - value = option.value.zone + icon = try(var.custom_icons[option.key], option.value.icon) + name = try(var.custom_names[option.key], option.value.name) + description = option.key + value = option.key } } } + +output "value" { + value = data.coder_parameter.region.value +} From d81569139e8c4299075d29a4f0ed373202c1c20b Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Thu, 21 Sep 2023 00:30:00 +0300 Subject: [PATCH 8/8] fix readme --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 60a5796..308a45e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ [Registry](https://registry.coder.com) | [Coder Docs](https://coder.com/docs) | [Why Coder](https://coder.com/why) | [Coder Enterprise](https://coder.com/docs/v2/latest/enterprise) -<<<<<<< HEAD [![discord](https://img.shields.io/discord/747933592273027093?label=discord)](https://discord.gg/coder) [![license](https://img.shields.io/github/license/coder/modules)](./LICENSE) @@ -25,11 +24,6 @@ module "code-server" { - [code-server](https://registry.coder.com/modules/code-server): Install on start, create an app to access via the dashboard, install extensions, and pre-configure editor settings. - [personalize](https://registry.coder.com/modules/personalize): Run a script on workspace start that allows developers to run custom commands to personalize their workspace. - [VS Code Desktop](https://registry.coder.com/modules/vscode-desktop): Add a button to open any workspace in VS Code with a single click. -======= -- [code-server](https://registry.coder.com/modules/code-server): Run VS Code in the browser -- [personalize](https://registry.coder.com/modules/personalize): Execute a user-specific script on start -- [VS Code Desktop](https://registry.coder.com/modules/vscode-desktop): Display a button to launch VS Code desktop in the dashboard. ->>>>>>> d4c77fc688997867a21c7a5fab2ef5fa24ad6f61 - [JetBrains Gateway](https://registry.coder.com/modules/jetbrains-gateway): Display a button to launch JetBrains Gateway IDEs in the dashboard. ## Registry