From 0945873f5873788de69577705adc6602bc6bbc2c Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Mon, 29 Sep 2025 14:24:45 +1000 Subject: [PATCH 01/13] fix of pr167 & zd4391 --- .../coder/modules/jetbrains-gateway/main.test.ts | 13 ++++++++++++- registry/coder/modules/jetbrains-gateway/main.tf | 12 ++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/main.test.ts b/registry/coder/modules/jetbrains-gateway/main.test.ts index 51802fabf..061d3a398 100644 --- a/registry/coder/modules/jetbrains-gateway/main.test.ts +++ b/registry/coder/modules/jetbrains-gateway/main.test.ts @@ -20,7 +20,7 @@ describe("jetbrains-gateway", async () => { folder: "/home/coder", }); expect(state.outputs.url.value).toBe( - "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent_id=foo", + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz", ); const coder_app = state.resources.find( @@ -41,3 +41,14 @@ describe("jetbrains-gateway", async () => { expect(state.outputs.identifier.value).toBe("IU"); }); }); +it("optionally includes agent_id when embed_agent_id is true", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + folder: "/home/coder", + embed_agent_id: true, + }); + + expect(state.outputs.url.value).toBe( + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent_id=foo", + ); +}); diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index eda5dcc80..6459fcfe2 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -68,6 +68,12 @@ variable "group" { default = null } +variable "embed_agent_id" { + type = bool + description = "Append the agent_id to the JetBrains Gateway URL for when support for multiple agents is required." + default = false +} + variable "coder_parameter_order" { type = number description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." @@ -331,7 +337,7 @@ resource "coder_app" "gateway" { external = true order = var.order group = var.group - url = join("", [ + url = join("", concat([ "jetbrains-gateway://connect#type=coder&workspace=", data.coder_workspace.me.name, "&owner=", @@ -348,9 +354,7 @@ resource "coder_app" "gateway" { local.build_number, "&ide_download_link=", local.download_link, - "&agent_id=", - var.agent_id, - ]) + ], var.embed_agent_id && trimspace(var.agent_id) != "" ? ["&agent_id=", var.agent_id] : [])) } output "identifier" { From 0926bdf3ea46d29298be89dcb0e3246b5c1af4f2 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Mon, 29 Sep 2025 14:30:53 +1000 Subject: [PATCH 02/13] version bump script --- registry/coder/modules/jetbrains-gateway/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index 7caa6dadf..1eedd9ee1 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -17,7 +17,7 @@ Consult the [JetBrains documentation](https://www.jetbrains.com/help/idea/prereq module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.2" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"] @@ -35,7 +35,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.2" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -49,7 +49,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.2" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -64,7 +64,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.2" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -89,7 +89,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.2" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -107,7 +107,7 @@ Due to the highest priority of the `ide_download_link` parameter in the `(jetbra module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.2" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] From fc7cc77fdebb414bd1fef4745bde5085c0994a30 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Tue, 30 Sep 2025 14:38:15 +1000 Subject: [PATCH 03/13] rework to use agent name --- .../coder/modules/jetbrains-gateway/README.md | 37 +++++++++++++++++++ .../modules/jetbrains-gateway/main.test.ts | 22 ++++++----- .../coder/modules/jetbrains-gateway/main.tf | 12 ++++-- 3 files changed, 58 insertions(+), 13 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index 1eedd9ee1..4cf286a60 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -43,6 +43,43 @@ module "jetbrains_gateway" { } ``` +### Embed the agent name in the Gateway URL + +This can be used when support for connecting to multiple agents within one workspace is required. + +To utilise this both `embed_agent_id` and `agent_name` must be populated on each instance of the module. +In addition each instance must have a unique `slug` and `ide_parameter_name` variable defined. + +```tf +module "jetbrains_gateway" { + count = data.coder_workspace.me.start_count + source = "registry.coder.com/coder/jetbrains-gateway/coder" + version = "1.2.3" + agent_id = coder_agent.example.id + folder = "/home/coder/example" + jetbrains_ides = ["CL", "GO"] + default = "GO" + embed_agent_id = true + agent_name = "main" + ide_parameter_name = "jetbrains_ide" # default variable value + slug = "gateway" # default variable value +} + +module "jetbrains_gateway_agent2" { + count = data.coder_workspace.me.start_count + source = "registry.coder.com/coder/jetbrains-gateway/coder" + version = "1.2.3" + agent_id = coder_agent.jetbrainsagent2.id + folder = "/home/coder/example" + jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"] + default = "GO" + embed_agent_id = true + agent_name = "jetbrainsagent2" + ide_parameter_name = "jetbrains_ide_agent2" + slug = "gateway-agent2" +} +``` + ### Use the latest version of each IDE ```tf diff --git a/registry/coder/modules/jetbrains-gateway/main.test.ts b/registry/coder/modules/jetbrains-gateway/main.test.ts index 061d3a398..bf4dda331 100644 --- a/registry/coder/modules/jetbrains-gateway/main.test.ts +++ b/registry/coder/modules/jetbrains-gateway/main.test.ts @@ -40,15 +40,17 @@ describe("jetbrains-gateway", async () => { }); expect(state.outputs.identifier.value).toBe("IU"); }); -}); -it("optionally includes agent_id when embed_agent_id is true", async () => { - const state = await runTerraformApply(import.meta.dir, { - agent_id: "foo", - folder: "/home/coder", - embed_agent_id: true, - }); - expect(state.outputs.url.value).toBe( - "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent_id=foo", - ); + it("optionally includes agent when embed_agent_id is true", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + agent_name: "main", + folder: "/home/coder", + embed_agent_id: true, + }); + + expect(state.outputs.url.value).toBe( + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent=main", + ); + }); }); diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index 6459fcfe2..f38e629b8 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -70,10 +70,16 @@ variable "group" { variable "embed_agent_id" { type = bool - description = "Append the agent_id to the JetBrains Gateway URL for when support for multiple agents is required." + description = "Embed the agent name in the JetBrains Gateway URL when support for multiple agents is required." default = false } +variable "ide_parameter_name" { + type = string + description = "Terraform parameter name for the JetBrains IDE selector. Must be unique per module instance." + default = "jetbrains_ide" +} + variable "coder_parameter_order" { type = number description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." @@ -309,7 +315,7 @@ locals { data "coder_parameter" "jetbrains_ide" { type = "string" - name = "jetbrains_ide" + name = var.ide_parameter_name display_name = "JetBrains IDE" icon = "/icon/gateway.svg" mutable = true @@ -354,7 +360,7 @@ resource "coder_app" "gateway" { local.build_number, "&ide_download_link=", local.download_link, - ], var.embed_agent_id && trimspace(var.agent_id) != "" ? ["&agent_id=", var.agent_id] : [])) + ], var.embed_agent_id && trimspace(var.agent_name) != "" ? ["&agent=", var.agent_name] : [])) } output "identifier" { From 612e94eb4a76ecb9dcd2b6d726691500d602b5d2 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Tue, 30 Sep 2025 14:51:59 +1000 Subject: [PATCH 04/13] update var name, remove deprecation note --- registry/coder/modules/jetbrains-gateway/README.md | 6 +++--- registry/coder/modules/jetbrains-gateway/main.test.ts | 4 ++-- registry/coder/modules/jetbrains-gateway/main.tf | 7 +++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index 4cf286a60..f3247e2d0 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -47,7 +47,7 @@ module "jetbrains_gateway" { This can be used when support for connecting to multiple agents within one workspace is required. -To utilise this both `embed_agent_id` and `agent_name` must be populated on each instance of the module. +To utilise this both `embed_agent_name` and `agent_name` must be populated on each instance of the module. In addition each instance must have a unique `slug` and `ide_parameter_name` variable defined. ```tf @@ -59,7 +59,7 @@ module "jetbrains_gateway" { folder = "/home/coder/example" jetbrains_ides = ["CL", "GO"] default = "GO" - embed_agent_id = true + embed_agent_name = true agent_name = "main" ide_parameter_name = "jetbrains_ide" # default variable value slug = "gateway" # default variable value @@ -73,7 +73,7 @@ module "jetbrains_gateway_agent2" { folder = "/home/coder/example" jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"] default = "GO" - embed_agent_id = true + embed_agent_name = true agent_name = "jetbrainsagent2" ide_parameter_name = "jetbrains_ide_agent2" slug = "gateway-agent2" diff --git a/registry/coder/modules/jetbrains-gateway/main.test.ts b/registry/coder/modules/jetbrains-gateway/main.test.ts index bf4dda331..b5f6768ec 100644 --- a/registry/coder/modules/jetbrains-gateway/main.test.ts +++ b/registry/coder/modules/jetbrains-gateway/main.test.ts @@ -41,12 +41,12 @@ describe("jetbrains-gateway", async () => { expect(state.outputs.identifier.value).toBe("IU"); }); - it("optionally includes agent when embed_agent_id is true", async () => { + it("optionally includes agent when embed_agent_name is true", async () => { const state = await runTerraformApply(import.meta.dir, { agent_id: "foo", agent_name: "main", folder: "/home/coder", - embed_agent_id: true, + embed_agent_name: true, }); expect(state.outputs.url.value).toBe( diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index f38e629b8..04d0effb2 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -36,8 +36,7 @@ variable "slug" { variable "agent_name" { type = string - description = "Agent name. (unused). Will be removed in a future version" - + description = "Agent name." default = "" } @@ -68,7 +67,7 @@ variable "group" { default = null } -variable "embed_agent_id" { +variable "embed_agent_name" { type = bool description = "Embed the agent name in the JetBrains Gateway URL when support for multiple agents is required." default = false @@ -360,7 +359,7 @@ resource "coder_app" "gateway" { local.build_number, "&ide_download_link=", local.download_link, - ], var.embed_agent_id && trimspace(var.agent_name) != "" ? ["&agent=", var.agent_name] : [])) + ], var.embed_agent_name && trimspace(var.agent_name) != "" ? ["&agent=", var.agent_name] : [])) } output "identifier" { From 1656b334ffb64cee43670e646117dd256cc073bd Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Tue, 30 Sep 2025 14:54:03 +1000 Subject: [PATCH 05/13] format --- registry/coder/modules/jetbrains-gateway/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index 04d0effb2..53a07d575 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -37,7 +37,7 @@ variable "slug" { variable "agent_name" { type = string description = "Agent name." - default = "" + default = "" } variable "folder" { From 7e52b80323c98d189c829c5f82be246b93d1ac9e Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Thu, 2 Oct 2025 12:31:08 +1000 Subject: [PATCH 06/13] simplification --- .../coder/modules/jetbrains-gateway/README.md | 37 ------------------- .../modules/jetbrains-gateway/main.test.ts | 5 +-- .../coder/modules/jetbrains-gateway/main.tf | 18 ++------- 3 files changed, 6 insertions(+), 54 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index f3247e2d0..1eedd9ee1 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -43,43 +43,6 @@ module "jetbrains_gateway" { } ``` -### Embed the agent name in the Gateway URL - -This can be used when support for connecting to multiple agents within one workspace is required. - -To utilise this both `embed_agent_name` and `agent_name` must be populated on each instance of the module. -In addition each instance must have a unique `slug` and `ide_parameter_name` variable defined. - -```tf -module "jetbrains_gateway" { - count = data.coder_workspace.me.start_count - source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" - agent_id = coder_agent.example.id - folder = "/home/coder/example" - jetbrains_ides = ["CL", "GO"] - default = "GO" - embed_agent_name = true - agent_name = "main" - ide_parameter_name = "jetbrains_ide" # default variable value - slug = "gateway" # default variable value -} - -module "jetbrains_gateway_agent2" { - count = data.coder_workspace.me.start_count - source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" - agent_id = coder_agent.jetbrainsagent2.id - folder = "/home/coder/example" - jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"] - default = "GO" - embed_agent_name = true - agent_name = "jetbrainsagent2" - ide_parameter_name = "jetbrains_ide_agent2" - slug = "gateway-agent2" -} -``` - ### Use the latest version of each IDE ```tf diff --git a/registry/coder/modules/jetbrains-gateway/main.test.ts b/registry/coder/modules/jetbrains-gateway/main.test.ts index b5f6768ec..58dc24639 100644 --- a/registry/coder/modules/jetbrains-gateway/main.test.ts +++ b/registry/coder/modules/jetbrains-gateway/main.test.ts @@ -20,7 +20,7 @@ describe("jetbrains-gateway", async () => { folder: "/home/coder", }); expect(state.outputs.url.value).toBe( - "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz", + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent_id=foo", ); const coder_app = state.resources.find( @@ -41,12 +41,11 @@ describe("jetbrains-gateway", async () => { expect(state.outputs.identifier.value).toBe("IU"); }); - it("optionally includes agent when embed_agent_name is true", async () => { + it("optionally includes agent when an agent name is provided", async () => { const state = await runTerraformApply(import.meta.dir, { agent_id: "foo", agent_name: "main", folder: "/home/coder", - embed_agent_name: true, }); expect(state.outputs.url.value).toBe( diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index 53a07d575..71dca0a85 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -67,18 +67,6 @@ variable "group" { default = null } -variable "embed_agent_name" { - type = bool - description = "Embed the agent name in the JetBrains Gateway URL when support for multiple agents is required." - default = false -} - -variable "ide_parameter_name" { - type = string - description = "Terraform parameter name for the JetBrains IDE selector. Must be unique per module instance." - default = "jetbrains_ide" -} - variable "coder_parameter_order" { type = number description = "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order)." @@ -314,7 +302,7 @@ locals { data "coder_parameter" "jetbrains_ide" { type = "string" - name = var.ide_parameter_name + name = "jetbrains_ide" display_name = "JetBrains IDE" icon = "/icon/gateway.svg" mutable = true @@ -359,7 +347,9 @@ resource "coder_app" "gateway" { local.build_number, "&ide_download_link=", local.download_link, - ], var.embed_agent_name && trimspace(var.agent_name) != "" ? ["&agent=", var.agent_name] : [])) + ], trimspace(var.agent_name) != "" + ? ["&agent=", var.agent_name] + : (trimspace(var.agent_id) != "" ? ["&agent_id=", var.agent_id] : []))) } output "identifier" { From 1c68179b6aa281d8074f7fcd72964130d35917e6 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Thu, 2 Oct 2025 15:26:14 +1000 Subject: [PATCH 07/13] fix when no value is provided --- registry/coder/modules/jetbrains-gateway/main.test.ts | 2 +- registry/coder/modules/jetbrains-gateway/main.tf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/main.test.ts b/registry/coder/modules/jetbrains-gateway/main.test.ts index 58dc24639..8e48d6c3b 100644 --- a/registry/coder/modules/jetbrains-gateway/main.test.ts +++ b/registry/coder/modules/jetbrains-gateway/main.test.ts @@ -20,7 +20,7 @@ describe("jetbrains-gateway", async () => { folder: "/home/coder", }); expect(state.outputs.url.value).toBe( - "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent_id=foo", + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz", ); const coder_app = state.resources.find( diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index 71dca0a85..6f02be7eb 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -347,9 +347,9 @@ resource "coder_app" "gateway" { local.build_number, "&ide_download_link=", local.download_link, - ], trimspace(var.agent_name) != "" + ], trimspace(var.agent_name) != "" ? ["&agent=", var.agent_name] - : (trimspace(var.agent_id) != "" ? ["&agent_id=", var.agent_id] : []))) + : [])) } output "identifier" { From 38e0887b5683906c183a3c8e5ac298a06e05eed9 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Thu, 2 Oct 2025 15:27:37 +1000 Subject: [PATCH 08/13] format --- registry/coder/modules/jetbrains-gateway/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index 6f02be7eb..4a24fa3ea 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -347,9 +347,9 @@ resource "coder_app" "gateway" { local.build_number, "&ide_download_link=", local.download_link, - ], trimspace(var.agent_name) != "" + ], trimspace(var.agent_name) != "" ? ["&agent=", var.agent_name] - : [])) + : [])) } output "identifier" { From 7597456c7a8f423abc5615fbaa8e47ab75e8c808 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Fri, 3 Oct 2025 09:00:59 +1000 Subject: [PATCH 09/13] simplification --- registry/coder/modules/jetbrains-gateway/README.md | 12 ++++++------ .../coder/modules/jetbrains-gateway/main.test.ts | 14 +++++++++++++- registry/coder/modules/jetbrains-gateway/main.tf | 8 ++++---- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index 51b9a1efe..a1c433708 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -19,7 +19,7 @@ Consult the [JetBrains documentation](https://www.jetbrains.com/help/idea/prereq module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"] @@ -37,7 +37,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -51,7 +51,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -66,7 +66,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -91,7 +91,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -109,7 +109,7 @@ Due to the highest priority of the `ide_download_link` parameter in the `(jetbra module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] diff --git a/registry/coder/modules/jetbrains-gateway/main.test.ts b/registry/coder/modules/jetbrains-gateway/main.test.ts index 8e48d6c3b..b9c3175e2 100644 --- a/registry/coder/modules/jetbrains-gateway/main.test.ts +++ b/registry/coder/modules/jetbrains-gateway/main.test.ts @@ -20,7 +20,7 @@ describe("jetbrains-gateway", async () => { folder: "/home/coder", }); expect(state.outputs.url.value).toBe( - "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz", + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent=", ); const coder_app = state.resources.find( @@ -52,4 +52,16 @@ describe("jetbrains-gateway", async () => { "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent=main", ); }); + + it("includes the agent parameter even when the provided value is blank", async () => { + const state = await runTerraformApply(import.meta.dir, { + agent_id: "foo", + agent_name: " ", + folder: "/home/coder", + }); + + expect(state.outputs.url.value).toBe( + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent=", + ); + }); }); diff --git a/registry/coder/modules/jetbrains-gateway/main.tf b/registry/coder/modules/jetbrains-gateway/main.tf index 4a24fa3ea..64940b9ed 100644 --- a/registry/coder/modules/jetbrains-gateway/main.tf +++ b/registry/coder/modules/jetbrains-gateway/main.tf @@ -330,7 +330,7 @@ resource "coder_app" "gateway" { external = true order = var.order group = var.group - url = join("", concat([ + url = join("", [ "jetbrains-gateway://connect#type=coder&workspace=", data.coder_workspace.me.name, "&owner=", @@ -347,9 +347,9 @@ resource "coder_app" "gateway" { local.build_number, "&ide_download_link=", local.download_link, - ], trimspace(var.agent_name) != "" - ? ["&agent=", var.agent_name] - : [])) + "&agent=", + var.agent_name, + ]) } output "identifier" { From 1a78ce30b7174c7ed953e60dc3f7c645c610e4f4 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Fri, 3 Oct 2025 13:39:08 +1000 Subject: [PATCH 10/13] format --- registry/coder/modules/jetbrains-gateway/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index a1c433708..71457223e 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -19,7 +19,7 @@ Consult the [JetBrains documentation](https://www.jetbrains.com/help/idea/prereq module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"] @@ -37,7 +37,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -51,7 +51,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -66,7 +66,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -91,7 +91,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -109,7 +109,7 @@ Due to the highest priority of the `ide_download_link` parameter in the `(jetbra module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] From dfe7fc6c5b44229c913382556e4fad807f98ca9a Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Fri, 3 Oct 2025 13:39:41 +1000 Subject: [PATCH 11/13] format --- registry/coder/modules/jetbrains-gateway/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index 71457223e..51b9a1efe 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -109,7 +109,7 @@ Due to the highest priority of the `ide_download_link` parameter in the `(jetbra module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.3" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] From 667c9916e570ce6ffb96b131bda85b28eeabc4f9 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Fri, 3 Oct 2025 14:06:42 +1000 Subject: [PATCH 12/13] updated test --- registry/coder/modules/jetbrains-gateway/main.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry/coder/modules/jetbrains-gateway/main.test.ts b/registry/coder/modules/jetbrains-gateway/main.test.ts index b9c3175e2..74a02a12a 100644 --- a/registry/coder/modules/jetbrains-gateway/main.test.ts +++ b/registry/coder/modules/jetbrains-gateway/main.test.ts @@ -61,7 +61,7 @@ describe("jetbrains-gateway", async () => { }); expect(state.outputs.url.value).toBe( - "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent=", + "jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz&agent= ", ); }); }); From 0acf51c8adf876afdaba0db1bee76077e799c796 Mon Sep 17 00:00:00 2001 From: Rowan Smith Date: Fri, 3 Oct 2025 15:36:57 +1000 Subject: [PATCH 13/13] version bump script --- registry/coder/modules/jetbrains-gateway/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/registry/coder/modules/jetbrains-gateway/README.md b/registry/coder/modules/jetbrains-gateway/README.md index 51b9a1efe..8cfe3b5e8 100644 --- a/registry/coder/modules/jetbrains-gateway/README.md +++ b/registry/coder/modules/jetbrains-gateway/README.md @@ -19,7 +19,7 @@ Consult the [JetBrains documentation](https://www.jetbrains.com/help/idea/prereq module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.4" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"] @@ -37,7 +37,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.4" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -51,7 +51,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.4" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -66,7 +66,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.4" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["IU", "PY"] @@ -91,7 +91,7 @@ module "jetbrains_gateway" { module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.4" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"] @@ -109,7 +109,7 @@ Due to the highest priority of the `ide_download_link` parameter in the `(jetbra module "jetbrains_gateway" { count = data.coder_workspace.me.start_count source = "registry.coder.com/coder/jetbrains-gateway/coder" - version = "1.2.3" + version = "1.2.4" agent_id = coder_agent.example.id folder = "/home/coder/example" jetbrains_ides = ["GO", "WS"]