fix: gcp regions module (#21)

pull/25/head
Muhammad Atif Ali 2 years ago committed by GitHub
parent 6070b05895
commit 6967b484b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -12,12 +12,21 @@ This module adds Google Cloud Platform regions to your Coder template.
## Examples ## Examples
To use this module, add the following snippet to your template manifest: 1. Add only GPU zones in the US West 1 region:
```hcl ```hcl
module "gcp_regions" { module "regions" {
source = "https://registry.coder.com/modules/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 default = ["us-west1"]
gpu_only = true gpu_only = true
} }
``` ```
2. Add all zones in the Europe West region:
```hcl
module "regions" {
source = "https://registry.coder.com/modules/gcp-regions"
default = ["europe-west"]
}
```

@ -25,14 +25,6 @@ variable "default" {
description = "List of GCP regions to include." description = "List of GCP regions to include."
type = list(string) type = list(string)
default = ["us-central1"] default = ["us-central1"]
validation {
condition = length(var.default) > 0
error_message = "At least one region must be selected."
}
validation {
condition = can(regexall("^[a-z0-9-]+$", var.default))
error_message = "All regions must be valid names."
}
} }
variable "gpu_only" { variable "gpu_only" {
@ -63,657 +55,658 @@ locals {
zones = { zones = {
# US Central # US Central
"us-central1-a" = { "us-central1-a" = {
has_gpu = true gpu = true
name = "Council Bluffs, Iowa, USA" name = "Council Bluffs, Iowa, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-central1-b" = { "us-central1-b" = {
has_gpu = true gpu = true
name = "Council Bluffs, Iowa, USA" name = "Council Bluffs, Iowa, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-central1-c" = { "us-central1-c" = {
has_gpu = true gpu = true
name = "Council Bluffs, Iowa, USA" name = "Council Bluffs, Iowa, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-central1-f" = { "us-central1-f" = {
has_gpu = true gpu = true
name = "Council Bluffs, Iowa, USA" name = "Council Bluffs, Iowa, USA (f)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
# US East # US East
"us-east1-b" = { "us-east1-b" = {
has_gpu = true gpu = true
name = "Moncks Corner, S. Carolina, USA" name = "Moncks Corner, S. Carolina, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east1-c" = { "us-east1-c" = {
has_gpu = true gpu = true
name = "Moncks Corner, S. Carolina, USA" name = "Moncks Corner, S. Carolina, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east1-d" = { "us-east1-d" = {
has_gpu = true gpu = true
name = "Moncks Corner, S. Carolina, USA" name = "Moncks Corner, S. Carolina, USA (d)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east4-a" = { "us-east4-a" = {
has_gpu = true gpu = true
name = "Ashburn, Virginia, USA" name = "Ashburn, Virginia, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east4-b" = { "us-east4-b" = {
has_gpu = true gpu = true
name = "Ashburn, Virginia, USA" name = "Ashburn, Virginia, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east4-c" = { "us-east4-c" = {
has_gpu = true gpu = true
name = "Ashburn, Virginia, USA" name = "Ashburn, Virginia, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east5-a" = { "us-east5-a" = {
has_gpu = false gpu = false
name = "Columbus, Ohio, USA" name = "Columbus, Ohio, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east5-b" = { "us-east5-b" = {
has_gpu = true gpu = true
name = "Columbus, Ohio, USA" name = "Columbus, Ohio, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-east5-c" = { "us-east5-c" = {
has_gpu = false gpu = false
name = "Columbus, Ohio, USA" name = "Columbus, Ohio, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
# Us West # Us West
"us-west1-a" = { "us-west1-a" = {
has_gpu = true gpu = true
name = "The Dalles, Oregon, USA" name = "The Dalles, Oregon, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west1-b" = { "us-west1-b" = {
has_gpu = true gpu = true
name = "The Dalles, Oregon, USA" name = "The Dalles, Oregon, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west1-c" = { "us-west1-c" = {
has_gpu = false gpu = false
name = "The Dalles, Oregon, USA" name = "The Dalles, Oregon, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west2-a" = { "us-west2-a" = {
has_gpu = false gpu = false
name = "Los Angeles, California, USA" name = "Los Angeles, California, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west2-b" = { "us-west2-b" = {
has_gpu = true gpu = true
name = "Los Angeles, California, USA" name = "Los Angeles, California, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west2-c" = { "us-west2-c" = {
has_gpu = true gpu = true
name = "Los Angeles, California, USA" name = "Los Angeles, California, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west3-a" = { "us-west3-a" = {
has_gpu = true gpu = true
name = "Salt Lake City, Utah, USA" name = "Salt Lake City, Utah, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west3-b" = { "us-west3-b" = {
has_gpu = true gpu = true
name = "Salt Lake City, Utah, USA" name = "Salt Lake City, Utah, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west3-c" = { "us-west3-c" = {
has_gpu = true gpu = true
name = "Salt Lake City, Utah, USA" name = "Salt Lake City, Utah, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west4-a" = { "us-west4-a" = {
has_gpu = true gpu = true
name = "Las Vegas, Nevada, USA" name = "Las Vegas, Nevada, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west4-b" = { "us-west4-b" = {
has_gpu = true gpu = true
name = "Las Vegas, Nevada, USA" name = "Las Vegas, Nevada, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-west4-c" = { "us-west4-c" = {
has_gpu = true gpu = true
name = "Las Vegas, Nevada, USA" name = "Las Vegas, Nevada, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
# US South # US South
"us-south1-a" = { "us-south1-a" = {
has_gpu = false gpu = false
name = "Dallas, Texas, USA" name = "Dallas, Texas, USA (a)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-south1-b" = { "us-south1-b" = {
has_gpu = false gpu = false
name = "Dallas, Texas, USA" name = "Dallas, Texas, USA (b)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
"us-south1-c" = { "us-south1-c" = {
has_gpu = false gpu = false
name = "Dallas, Texas, USA" name = "Dallas, Texas, USA (c)"
icon = "/emojis/1f1fa-1f1f8.png" icon = "/emojis/1f1fa-1f1f8.png"
} }
# Canada # Canada
"northamerica-northeast1-a" = { "northamerica-northeast1-a" = {
has_gpu = true gpu = true
name = "Montréal, Québec, Canada" name = "Montréal, Québec, Canada (a)"
icon = "/emojis/1f1e8-1f1f6.png" icon = "/emojis/1f1e8-1f1e6.png"
} }
"northamerica-northeast1-b" = { "northamerica-northeast1-b" = {
has_gpu = true gpu = true
name = "Montréal, Québec, Canada" name = "Montréal, Québec, Canada (b)"
icon = "/emojis/1f1e8-1f1f6.png" icon = "/emojis/1f1e8-1f1e6.png"
} }
"northamerica-northeast1-c" = { "northamerica-northeast1-c" = {
has_gpu = true gpu = true
name = "Montréal, Québec, Canada" name = "Montréal, Québec, Canada (c)"
icon = "/emojis/1f1e8-1f1f6.png" icon = "/emojis/1f1e8-1f1e6.png"
} }
"northamerica-northeast2-a" = { "northamerica-northeast2-a" = {
has_gpu = false gpu = false
name = "Toronto, Ontario, Canada" name = "Toronto, Ontario, Canada (a)"
icon = "/emojis/1f1e8-1f1f6.png" icon = "/emojis/1f1e8-1f1e6.png"
} }
"northamerica-northeast2-b" = { "northamerica-northeast2-b" = {
has_gpu = false gpu = false
name = "Toronto, Ontario, Canada" name = "Toronto, Ontario, Canada (b)"
icon = "/emojis/1f1e8-1f1f6.png" icon = "/emojis/1f1e8-1f1e6.png"
} }
"northamerica-northeast2-c" = { "northamerica-northeast2-c" = {
has_gpu = false gpu = false
name = "Toronto, Ontario, Canada" name = "Toronto, Ontario, Canada (c)"
icon = "/emojis/1f1e8-1f1f6.png" icon = "/emojis/1f1e8-1f1e6.png"
} }
# South America East (Brazil, Chile) # South America East (Brazil, Chile)
"southamerica-east1-a" = { "southamerica-east1-a" = {
has_gpu = true gpu = true
name = "Osasco, São Paulo, Brazil" name = "Osasco, São Paulo, Brazil (a)"
icon = "/emojis/1f1e7-1f1f7.png" icon = "/emojis/1f1e7-1f1f7.png"
} }
"southamerica-east1-b" = { "southamerica-east1-b" = {
has_gpu = false gpu = false
name = "Osasco, São Paulo, Brazil" name = "Osasco, São Paulo, Brazil (b)"
icon = "/emojis/1f1e7-1f1f7.png" icon = "/emojis/1f1e7-1f1f7.png"
} }
"southamerica-east1-c" = { "southamerica-east1-c" = {
has_gpu = true gpu = true
name = "Osasco, São Paulo, Brazil" name = "Osasco, São Paulo, Brazil (c)"
icon = "/emojis/1f1e7-1f1f7.png" icon = "/emojis/1f1e7-1f1f7.png"
} }
"southamerica-west1-a" = { "southamerica-west1-a" = {
has_gpu = false gpu = false
name = "Santiago, Chile" name = "Santiago, Chile (a)"
icon = "/emojis/1f1e8-1f1f1.png" icon = "/emojis/1f1e8-1f1f1.png"
} }
"southamerica-west1-b" = { "southamerica-west1-b" = {
has_gpu = false gpu = false
name = "Santiago, Chile" name = "Santiago, Chile (b)"
icon = "/emojis/1f1e8-1f1f1.png" icon = "/emojis/1f1e8-1f1f1.png"
} }
"southamerica-west1-c" = { "southamerica-west1-c" = {
has_gpu = false gpu = false
name = "Santiago, Chile" name = "Santiago, Chile (c)"
icon = "/emojis/1f1e8-1f1f1.png" icon = "/emojis/1f1e8-1f1f1.png"
} }
# Europe North (Finland) # Europe North (Finland)
"europe-north1-a" = { "europe-north1-a" = {
has_gpu = false gpu = false
name = "Hamina, Finland" name = "Hamina, Finland (a)"
icon = "/emojis/1f1e7-1f1ee.png" icon = "/emojis/1f1e7-1f1ee.png"
} }
"europe-north1-b" = { "europe-north1-b" = {
has_gpu = false gpu = false
name = "Hamina, Finland" name = "Hamina, Finland (b)"
icon = "/emojis/1f1e7-1f1ee.png" icon = "/emojis/1f1e7-1f1ee.png"
} }
"europe-north1-c" = { "europe-north1-c" = {
has_gpu = false gpu = false
name = "Hamina, Finland" name = "Hamina, Finland (c)"
icon = "/emojis/1f1e7-1f1ee.png" icon = "/emojis/1f1e7-1f1ee.png"
} }
# Europe Central (Poland) # Europe Central (Poland)
"europe-central2-a" = { "europe-central2-a" = {
has_gpu = false gpu = false
name = "Warsaw, Poland" name = "Warsaw, Poland (a)"
icon = "/emojis/1f1f5-1f1f1.png" icon = "/emojis/1f1f5-1f1f1.png"
} }
"europe-central2-b" = { "europe-central2-b" = {
has_gpu = true gpu = true
name = "Warsaw, Poland" name = "Warsaw, Poland (b)"
icon = "/emojis/1f1f5-1f1f1.png" icon = "/emojis/1f1f5-1f1f1.png"
} }
"europe-central2-c" = { "europe-central2-c" = {
has_gpu = true gpu = true
name = "Warsaw, Poland" name = "Warsaw, Poland (c)"
icon = "/emojis/1f1f5-1f1f1.png" icon = "/emojis/1f1f5-1f1f1.png"
} }
# Europe Southwest (Spain) # Europe Southwest (Spain)
"europe-southwest1-a" = { "europe-southwest1-a" = {
has_gpu = false gpu = false
name = "Madrid, Spain" name = "Madrid, Spain (a)"
icon = "/emojis/1f1ea-1f1f8.png" icon = "/emojis/1f1ea-1f1f8.png"
} }
"europe-southwest1-b" = { "europe-southwest1-b" = {
has_gpu = false gpu = false
name = "Madrid, Spain" name = "Madrid, Spain (b)"
icon = "/emojis/1f1ea-1f1f8.png" icon = "/emojis/1f1ea-1f1f8.png"
} }
"europe-southwest1-c" = { "europe-southwest1-c" = {
has_gpu = false gpu = false
name = "Madrid, Spain" name = "Madrid, Spain (c)"
icon = "/emojis/1f1ea-1f1f8.png" icon = "/emojis/1f1ea-1f1f8.png"
} }
# Europe West # Europe West
"europe-west1-b" = { "europe-west1-b" = {
has_gpu = true gpu = true
name = "St. Ghislain, Belgium" name = "St. Ghislain, Belgium (b)"
icon = "/emojis/1f1e7-1f1ea.png" icon = "/emojis/1f1e7-1f1ea.png"
} }
"europe-west1-c" = { "europe-west1-c" = {
has_gpu = true gpu = true
name = "St. Ghislain, Belgium" name = "St. Ghislain, Belgium (c)"
icon = "/emojis/1f1e7-1f1ea.png" icon = "/emojis/1f1e7-1f1ea.png"
} }
"europe-west1-d" = { "europe-west1-d" = {
has_gpu = true gpu = true
name = "St. Ghislain, Belgium" name = "St. Ghislain, Belgium (d)"
icon = "/emojis/1f1e7-1f1ea.png" icon = "/emojis/1f1e7-1f1ea.png"
} }
"europe-west2-a" = { "europe-west2-a" = {
has_gpu = true gpu = true
name = "London, England" name = "London, England (a)"
icon = "/emojis/1f173-1f1ff.png" icon = "/emojis/1f173-1f1ff.png"
} }
"europe-west2-b" = { "europe-west2-b" = {
has_gpu = true gpu = true
name = "London, England" name = "London, England (b)"
icon = "/emojis/1f173-1f1ff.png" icon = "/emojis/1f173-1f1ff.png"
} }
"europe-west2-c" = { "europe-west2-c" = {
has_gpu = false gpu = false
name = "London, England" name = "London, England (c)"
icon = "/emojis/1f173-1f1ff.png" icon = "/emojis/1f173-1f1ff.png"
} }
"europe-west3-b" = { "europe-west3-b" = {
has_gpu = false gpu = false
name = "Frankfurt, Germany" name = "Frankfurt, Germany (b)"
icon = "/emojis/1f1e9-1f1ea.png" icon = "/emojis/1f1e9-1f1ea.png"
} }
"europe-west3-c" = { "europe-west3-c" = {
has_gpu = true gpu = true
name = "Frankfurt, Germany" name = "Frankfurt, Germany (c)"
icon = "/emojis/1f1e9-1f1ea.png" icon = "/emojis/1f1e9-1f1ea.png"
} }
"europe-west3-d" = { "europe-west3-d" = {
has_gpu = false gpu = false
name = "Frankfurt, Germany" name = "Frankfurt, Germany (d)"
icon = "/emojis/1f1e9-1f1ea.png" icon = "/emojis/1f1e9-1f1ea.png"
} }
"europe-west4-a" = { "europe-west4-a" = {
has_gpu = true gpu = true
name = "Eemshaven, Netherlands" name = "Eemshaven, Netherlands (a)"
icon = "/emojis/1f1f3-1f1f1.png" icon = "/emojis/1f1f3-1f1f1.png"
} }
"europe-west4-b" = { "europe-west4-b" = {
has_gpu = true gpu = true
name = "Eemshaven, Netherlands" name = "Eemshaven, Netherlands (b)"
icon = "/emojis/1f1f3-1f1f1.png" icon = "/emojis/1f1f3-1f1f1.png"
} }
"europe-west4-c" = { "europe-west4-c" = {
has_gpu = true gpu = true
name = "Eemshaven, Netherlands" name = "Eemshaven, Netherlands (c)"
icon = "/emojis/1f1f3-1f1f1.png" icon = "/emojis/1f1f3-1f1f1.png"
} }
"europe-west6-a" = { "europe-west6-a" = {
has_gpu = false gpu = false
name = "Zurich, Switzerland" name = "Zurich, Switzerland (a)"
icon = "/emojis/1f1e8-1f1ed.png" icon = "/emojis/1f1e8-1f1ed.png"
} }
"europe-west6-b" = { "europe-west6-b" = {
has_gpu = false gpu = false
name = "Zurich, Switzerland" name = "Zurich, Switzerland (b)"
icon = "/emojis/1f1e8-1f1ed.png" icon = "/emojis/1f1e8-1f1ed.png"
} }
"europe-west6-c" = { "europe-west6-c" = {
has_gpu = false gpu = false
name = "Zurich, Switzerland" name = "Zurich, Switzerland (c)"
icon = "/emojis/1f1e8-1f1ed.png" icon = "/emojis/1f1e8-1f1ed.png"
} }
"europe-west8-a" = { "europe-west8-a" = {
has_gpu = false gpu = false
name = "Milan, Italy" name = "Milan, Italy (a)"
icon = "/emojis/1f1ee-1f1f9.png" icon = "/emojis/1f1ee-1f1f9.png"
} }
"europe-west8-b" = { "europe-west8-b" = {
has_gpu = false gpu = false
name = "Milan, Italy" name = "Milan, Italy (b)"
icon = "/emojis/1f1ee-1f1f9.png" icon = "/emojis/1f1ee-1f1f9.png"
} }
"europe-west8-c" = { "europe-west8-c" = {
has_gpu = false gpu = false
name = "Milan, Italy" name = "Milan, Italy (c)"
icon = "/emojis/1f1ee-1f1f9.png" icon = "/emojis/1f1ee-1f1f9.png"
} }
"europe-west9-a" = { "europe-west9-a" = {
has_gpu = false gpu = false
name = "Paris, France" name = "Paris, France (a)"
icon = "/emojis/1f1eb-1f1f7.png" icon = "/emojis/1f1eb-1f1f7.png"
} }
"europe-west9-b" = { "europe-west9-b" = {
has_gpu = false gpu = false
name = "Paris, France" name = "Paris, France (b)"
icon = "/emojis/1f1eb-1f1f7.png" icon = "/emojis/1f1eb-1f1f7.png"
} }
"europe-west9-c" = { "europe-west9-c" = {
has_gpu = false gpu = false
name = "Paris, France" name = "Paris, France (c)"
icon = "/emojis/1f1eb-1f1f7.png" icon = "/emojis/1f1eb-1f1f7.png"
} }
"europe-west10-a" = { "europe-west10-a" = {
has_gpu = false gpu = false
name = "Berlin, Germany" name = "Berlin, Germany (a)"
icon = "/emojis/1f1e9-1f1ea.png" icon = "/emojis/1f1e9-1f1ea.png"
} }
"europe-west10-b" = { "europe-west10-b" = {
has_gpu = false gpu = false
name = "Berlin, Germany" name = "Berlin, Germany (b)"
icon = "/emojis/1f1e9-1f1ea.png" icon = "/emojis/1f1e9-1f1ea.png"
} }
"europe-west10-c" = { "europe-west10-c" = {
has_gpu = false gpu = false
name = "Berlin, Germany" name = "Berlin, Germany (c)"
icon = "/emojis/1f1e9-1f1ea.png" icon = "/emojis/1f1e9-1f1ea.png"
} }
"europe-west12-a" = { "europe-west12-a" = {
has_gpu = false gpu = false
name = "Turin, Italy" name = "Turin, Italy (a)"
icon = "/emojis/1f1ee-1f1f9.png" icon = "/emojis/1f1ee-1f1f9.png"
} }
"europe-west12-b" = { "europe-west12-b" = {
has_gpu = false gpu = false
name = "Turin, Italy" name = "Turin, Italy (b)"
icon = "/emojis/1f1ee-1f1f9.png" icon = "/emojis/1f1ee-1f1f9.png"
} }
"europe-west12-c" = { "europe-west12-c" = {
has_gpu = false gpu = false
name = "Turin, Italy" name = "Turin, Italy (c)"
icon = "/emojis/1f1ee-1f1f9.png" icon = "/emojis/1f1ee-1f1f9.png"
} }
# Middleeast Central (Qatar, Saudi Arabia) # Middleeast Central (Qatar, Saudi Arabia)
"me-central1-a" = { "me-central1-a" = {
has_gpu = false gpu = false
name = "Doha, Qatar" name = "Doha, Qatar (a)"
icon = "/emojis/1f1f6-1f1e6.png" icon = "/emojis/1f1f6-1f1e6.png"
} }
"me-central1-b" = { "me-central1-b" = {
has_gpu = false gpu = false
name = "Doha, Qatar" name = "Doha, Qatar (b)"
icon = "/emojis/1f1f6-1f1e6.png" icon = "/emojis/1f1f6-1f1e6.png"
} }
"me-central1-c" = { "me-central1-c" = {
has_gpu = false gpu = false
name = "Doha, Qatar" name = "Doha, Qatar (c)"
icon = "/emojis/1f1f6-1f1e6.png" icon = "/emojis/1f1f6-1f1e6.png"
} }
"me-central2-a" = { "me-central2-a" = {
has_gpu = false gpu = false
name = "Dammam, Saudi Arabia" name = "Dammam, Saudi Arabia (a)"
icon = "/emojis/1f1f8-1f1e6.png" icon = "/emojis/1f1f8-1f1e6.png"
} }
"me-central2-b" = { "me-central2-b" = {
has_gpu = false gpu = false
name = "Dammam, Saudi Arabia" name = "Dammam, Saudi Arabia (b)"
icon = "/emojis/1f1f8-1f1e6.png" icon = "/emojis/1f1f8-1f1e6.png"
} }
"me-central2-c" = { "me-central2-c" = {
has_gpu = false gpu = false
name = "Dammam, Saudi Arabia" name = "Dammam, Saudi Arabia (c)"
icon = "/emojis/1f1f8-1f1e6.png" icon = "/emojis/1f1f8-1f1e6.png"
} }
# Middleeast West (Israel) # Middleeast West (Israel)
"me-west1-a" = { "me-west1-a" = {
has_gpu = false gpu = false
name = "Tel Aviv, Israel" name = "Tel Aviv, Israel (a)"
icon = "/emojis/1f1ee-1f1f1.png" icon = "/emojis/1f1ee-1f1f1.png"
} }
"me-west1-b" = { "me-west1-b" = {
has_gpu = true gpu = true
name = "Tel Aviv, Israel" name = "Tel Aviv, Israel (b)"
icon = "/emojis/1f1ee-1f1f1.png" icon = "/emojis/1f1ee-1f1f1.png"
} }
"me-west1-c" = { "me-west1-c" = {
has_gpu = true gpu = true
name = "Tel Aviv, Israel" name = "Tel Aviv, Israel (c)"
icon = "/emojis/1f1ee-1f1f1.png" icon = "/emojis/1f1ee-1f1f1.png"
} }
# Asia East (Taiwan, Hong Kong) # Asia East (Taiwan, Hong Kong)
"asia-east1-a" = { "asia-east1-a" = {
has_gpu = true gpu = true
name = "Changhua County, Taiwan" name = "Changhua County, Taiwan (a)"
icon = "/emojis/1f1f9-1f1fc.png" icon = "/emojis/1f1f9-1f1fc.png"
} }
"asia-east1-b" = { "asia-east1-b" = {
has_gpu = true gpu = true
name = "Changhua County, Taiwan" name = "Changhua County, Taiwan (b)"
icon = "/emojis/1f1f9-1f1fc.png" icon = "/emojis/1f1f9-1f1fc.png"
} }
"asia-east1-c" = { "asia-east1-c" = {
has_gpu = true gpu = true
name = "Changhua County, Taiwan" name = "Changhua County, Taiwan (c)"
icon = "/emojis/1f1f9-1f1fc.png" icon = "/emojis/1f1f9-1f1fc.png"
} }
"asia-east2-a" = { "asia-east2-a" = {
has_gpu = true gpu = true
name = "Hong Kong" name = "Hong Kong (a)"
icon = "/emojis/1f1ed-1f1f0.png" icon = "/emojis/1f1ed-1f1f0.png"
} }
"asia-east2-b" = { "asia-east2-b" = {
has_gpu = false gpu = false
name = "Hong Kong" name = "Hong Kong (b)"
icon = "/emojis/1f1ed-1f1f0.png" icon = "/emojis/1f1ed-1f1f0.png"
} }
"asia-east2-c" = { "asia-east2-c" = {
has_gpu = true gpu = true
name = "Hong Kong" name = "Hong Kong (c)"
icon = "/emojis/1f1ed-1f1f0.png" icon = "/emojis/1f1ed-1f1f0.png"
} }
# Asia Northeast (Japan, South Korea) # Asia Northeast (Japan, South Korea)
"asia-northeast1-a" = { "asia-northeast1-a" = {
has_gpu = true gpu = true
name = "Tokyo, Japan" name = "Tokyo, Japan (a)"
icon = "/emojis/1f1ef-1f1f5.png" icon = "/emojis/1f1ef-1f1f5.png"
} }
"asia-northeast1-b" = { "asia-northeast1-b" = {
has_gpu = false gpu = false
name = "Tokyo, Japan" name = "Tokyo, Japan (b)"
icon = "/emojis/1f1ef-1f1f5.png" icon = "/emojis/1f1ef-1f1f5.png"
} }
"asia-northeast1-c" = { "asia-northeast1-c" = {
has_gpu = true gpu = true
name = "Tokyo, Japan" name = "Tokyo, Japan (c)"
icon = "/emojis/1f1ef-1f1f5.png" icon = "/emojis/1f1ef-1f1f5.png"
} }
"asia-northeast2-a" = { "asia-northeast2-a" = {
has_gpu = false gpu = false
name = "Osaka, Japan" name = "Osaka, Japan (a)"
icon = "/emojis/1f1ef-1f1f5.png" icon = "/emojis/1f1ef-1f1f5.png"
} }
"asia-northeast2-b" = { "asia-northeast2-b" = {
has_gpu = false gpu = false
name = "Osaka, Japan" name = "Osaka, Japan (b)"
icon = "/emojis/1f1ef-1f1f5.png" icon = "/emojis/1f1ef-1f1f5.png"
} }
"asia-northeast2-c" = { "asia-northeast2-c" = {
has_gpu = false gpu = false
name = "Osaka, Japan" name = "Osaka, Japan (c)"
icon = "/emojis/1f1ef-1f1f5.png" icon = "/emojis/1f1ef-1f1f5.png"
} }
"asia-northeast3-a" = { "asia-northeast3-a" = {
has_gpu = true gpu = true
name = "Seoul, South Korea" name = "Seoul, South Korea (a)"
icon = "/emojis/1f1f0-1f1f7.png" icon = "/emojis/1f1f0-1f1f7.png"
} }
"asia-northeast3-b" = { "asia-northeast3-b" = {
has_gpu = true gpu = true
name = "Seoul, South Korea" name = "Seoul, South Korea (b)"
icon = "/emojis/1f1f0-1f1f7.png" icon = "/emojis/1f1f0-1f1f7.png"
} }
"asia-northeast3-c" = { "asia-northeast3-c" = {
has_gpu = true gpu = true
name = "Seoul, South Korea" name = "Seoul, South Korea (c)"
icon = "/emojis/1f1f0-1f1f7.png" icon = "/emojis/1f1f0-1f1f7.png"
} }
# Asia South (India) # Asia South (India)
"asia-south1-a" = { "asia-south1-a" = {
has_gpu = true gpu = true
name = "Mumbai, India" name = "Mumbai, India (a)"
icon = "/emojis/1f1ee-1f1f3.png" icon = "/emojis/1f1ee-1f1f3.png"
} }
"asia-south1-b" = { "asia-south1-b" = {
has_gpu = true gpu = true
name = "Mumbai, India" name = "Mumbai, India (b)"
icon = "/emojis/1f1ee-1f1f3.png" icon = "/emojis/1f1ee-1f1f3.png"
} }
"asia-south1-c" = { "asia-south1-c" = {
has_gpu = false gpu = false
name = "Mumbai, India" name = "Mumbai, India (c)"
icon = "/emojis/1f1ee-1f1f3.png" icon = "/emojis/1f1ee-1f1f3.png"
} }
"asia-south2-a" = { "asia-south2-a" = {
has_gpu = false gpu = false
name = "Delhi, India" name = "Delhi, India (a)"
icon = "/emojis/1f1ee-1f1f3.png" icon = "/emojis/1f1ee-1f1f3.png"
} }
"asia-south2-b" = { "asia-south2-b" = {
has_gpu = false gpu = false
name = "Delhi, India" name = "Delhi, India (b)"
icon = "/emojis/1f1ee-1f1f3.png" icon = "/emojis/1f1ee-1f1f3.png"
} }
"asia-south2-c" = { "asia-south2-c" = {
has_gpu = false gpu = false
name = "Delhi, India" name = "Delhi, India (c)"
icon = "/emojis/1f1ee-1f1f3.png" icon = "/emojis/1f1ee-1f1f3.png"
} }
# Asia Southeast (Singapore, Indonesia) # Asia Southeast (Singapore, Indonesia)
"asia-southeast1-a" = { "asia-southeast1-a" = {
has_gpu = true gpu = true
name = "Jurong West, Singapore" name = "Jurong West, Singapore (a)"
icon = "/emojis/1f1f8-1f1ec.png" icon = "/emojis/1f1f8-1f1ec.png"
} }
"asia-southeast1-b" = { "asia-southeast1-b" = {
has_gpu = true gpu = true
name = "Jurong West, Singapore" name = "Jurong West, Singapore (b)"
icon = "/emojis/1f1f8-1f1ec.png" icon = "/emojis/1f1f8-1f1ec.png"
} }
"asia-southeast1-c" = { "asia-southeast1-c" = {
has_gpu = true gpu = true
name = "Jurong West, Singapore" name = "Jurong West, Singapore (c)"
icon = "/emojis/1f1f8-1f1ec.png" icon = "/emojis/1f1f8-1f1ec.png"
} }
"asia-southeast2-a" = { "asia-southeast2-a" = {
has_gpu = true gpu = true
name = "Jakarta, Indonesia" name = "Jakarta, Indonesia (a)"
icon = "/emojis/1f1ee-1f1e9.png" icon = "/emojis/1f1ee-1f1e9.png"
} }
"asia-southeast2-b" = { "asia-southeast2-b" = {
has_gpu = true gpu = true
name = "Jakarta, Indonesia" name = "Jakarta, Indonesia (b)"
icon = "/emojis/1f1ee-1f1e9.png" icon = "/emojis/1f1ee-1f1e9.png"
} }
"asia-southeast2-c" = { "asia-southeast2-c" = {
has_gpu = true gpu = true
name = "Jakarta, Indonesia" name = "Jakarta, Indonesia (c)"
icon = "/emojis/1f1ee-1f1e9.png" icon = "/emojis/1f1ee-1f1e9.png"
} }
# Australia (Sydney, Melbourne) # Australia (Sydney, Melbourne)
"australia-southeast1-a" = { "australia-southeast1-a" = {
has_gpu = true gpu = true
name = "Sydney, Australia" name = "Sydney, Australia (a)"
icon = "/emojis/1f1e6-1f1fa.png" icon = "/emojis/1f1e6-1f1fa.png"
} }
"australia-southeast1-b" = { "australia-southeast1-b" = {
has_gpu = true gpu = true
name = "Sydney, Australia" name = "Sydney, Australia (b)"
icon = "/emojis/1f1e6-1f1fa.png" icon = "/emojis/1f1e6-1f1fa.png"
} }
"australia-southeast1-c" = { "australia-southeast1-c" = {
has_gpu = true gpu = true
name = "Sydney, Australia" name = "Sydney, Australia (c)"
icon = "/emojis/1f1e6-1f1fa.png" icon = "/emojis/1f1e6-1f1fa.png"
} }
"australia-southeast2-a" = { "australia-southeast2-a" = {
has_gpu = false gpu = false
name = "Melbourne, Australia" name = "Melbourne, Australia (a)"
icon = "/emojis/1f1e6-1f1fa.png" icon = "/emojis/1f1e6-1f1fa.png"
} }
"australia-southeast2-b" = { "australia-southeast2-b" = {
has_gpu = false gpu = false
name = "Melbourne, Australia" name = "Melbourne, Australia (b)"
icon = "/emojis/1f1e6-1f1fa.png" icon = "/emojis/1f1e6-1f1fa.png"
} }
"australia-southeast2-c" = { "australia-southeast2-c" = {
has_gpu = false gpu = false
name = "Melbourne, Australia" name = "Melbourne, Australia (c)"
icon = "/emojis/1f1e6-1f1fa.png" icon = "/emojis/1f1e6-1f1fa.png"
} }
} }
} }
data "coder_parameter" "region" { data "coder_parameter" "region" {
type = "list(string)"
name = "gcp_region" name = "gcp_region"
display_name = var.display_name display_name = var.display_name
description = var.description description = var.description
icon = "/icon/gcp.svg" icon = "/icon/gcp.png"
mutable = var.mutable mutable = var.mutable
dynamic "option" { dynamic "option" {
for_each = { for k, v in local.zones : k => v if contains(var.default, k) && (!var.gpu_only || v.has_gpu) } for_each = {
for k, v in local.zones : k => v
if anytrue([for d in var.default : startswith(k, d)]) && (!var.gpu_only || v.gpu)
}
content { content {
icon = try(var.custom_icons[option.key], option.value.icon) icon = try(var.custom_icons[option.key], option.value.icon)
name = try(var.custom_names[option.key], option.value.name) name = try(var.custom_names[option.key], option.value.name)

@ -1,56 +0,0 @@
#!/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"
Loading…
Cancel
Save