feat: add coder_parameter_order to all data.coder_parameter fields (#223)
This commit is contained in:
@@ -22,4 +22,13 @@ describe("aws-region", async () => {
|
|||||||
});
|
});
|
||||||
expect(state.outputs.value.value).toBe("us-west-2");
|
expect(state.outputs.value.value).toBe("us-west-2");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter", async () => {
|
||||||
|
const order = 99;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(1);
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -51,6 +51,12 @@ variable "exclude" {
|
|||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
# This is a static list because the regions don't change _that_
|
# This is a static list because the regions don't change _that_
|
||||||
# frequently and including the `aws_regions` data source requires
|
# frequently and including the `aws_regions` data source requires
|
||||||
@@ -176,6 +182,7 @@ data "coder_parameter" "region" {
|
|||||||
display_name = var.display_name
|
display_name = var.display_name
|
||||||
description = var.description
|
description = var.description
|
||||||
default = var.default == "" ? null : var.default
|
default = var.default == "" ? null : var.default
|
||||||
|
order = var.coder_parameter_order
|
||||||
mutable = var.mutable
|
mutable = var.mutable
|
||||||
dynamic "option" {
|
dynamic "option" {
|
||||||
for_each = { for k, v in local.regions : k => v if !(contains(var.exclude, k)) }
|
for_each = { for k, v in local.regions : k => v if !(contains(var.exclude, k)) }
|
||||||
|
|||||||
@@ -22,4 +22,13 @@ describe("azure-region", async () => {
|
|||||||
});
|
});
|
||||||
expect(state.outputs.value.value).toBe("westus");
|
expect(state.outputs.value.value).toBe("westus");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter", async () => {
|
||||||
|
const order = 99;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(1);
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -50,6 +50,12 @@ variable "exclude" {
|
|||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
# Note: Options are limited to 64 regions, some redundant regions have been removed.
|
# Note: Options are limited to 64 regions, some redundant regions have been removed.
|
||||||
all_regions = {
|
all_regions = {
|
||||||
@@ -309,6 +315,7 @@ data "coder_parameter" "region" {
|
|||||||
display_name = var.display_name
|
display_name = var.display_name
|
||||||
description = var.description
|
description = var.description
|
||||||
default = var.default == "" ? null : var.default
|
default = var.default == "" ? null : var.default
|
||||||
|
order = var.coder_parameter_order
|
||||||
mutable = var.mutable
|
mutable = var.mutable
|
||||||
icon = "/icon/azure.png"
|
icon = "/icon/azure.png"
|
||||||
dynamic "option" {
|
dynamic "option" {
|
||||||
|
|||||||
@@ -27,4 +27,14 @@ describe("dotfiles", async () => {
|
|||||||
});
|
});
|
||||||
expect(state.outputs.dotfiles_uri.value).toBe(default_dotfiles_uri);
|
expect(state.outputs.dotfiles_uri.value).toBe(default_dotfiles_uri);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter", async () => {
|
||||||
|
const order = 99;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
agent_id: "foo",
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(2);
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,10 +20,17 @@ variable "default_dotfiles_uri" {
|
|||||||
default = ""
|
default = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
data "coder_parameter" "dotfiles_uri" {
|
data "coder_parameter" "dotfiles_uri" {
|
||||||
type = "string"
|
type = "string"
|
||||||
name = "dotfiles_uri"
|
name = "dotfiles_uri"
|
||||||
display_name = "Dotfiles URL (optional)"
|
display_name = "Dotfiles URL (optional)"
|
||||||
|
order = var.coder_parameter_order
|
||||||
default = var.default_dotfiles_uri
|
default = var.default_dotfiles_uri
|
||||||
description = "Enter a URL for a [dotfiles repository](https://dotfiles.github.io) to personalize your workspace"
|
description = "Enter a URL for a [dotfiles repository](https://dotfiles.github.io) to personalize your workspace"
|
||||||
mutable = true
|
mutable = true
|
||||||
|
|||||||
@@ -31,4 +31,13 @@ describe("exoscale-instance-type", async () => {
|
|||||||
});
|
});
|
||||||
}).toThrow('default value "gpu3.huge" must be defined as one of options');
|
}).toThrow('default value "gpu3.huge" must be defined as one of options');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter", async () => {
|
||||||
|
const order = 99;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(1);
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -56,6 +56,12 @@ variable "exclude" {
|
|||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
# https://www.exoscale.com/pricing/
|
# https://www.exoscale.com/pricing/
|
||||||
|
|
||||||
@@ -257,6 +263,7 @@ data "coder_parameter" "instance_type" {
|
|||||||
display_name = var.display_name
|
display_name = var.display_name
|
||||||
description = var.description
|
description = var.description
|
||||||
default = var.default == "" ? null : var.default
|
default = var.default == "" ? null : var.default
|
||||||
|
order = var.coder_parameter_order
|
||||||
mutable = var.mutable
|
mutable = var.mutable
|
||||||
dynamic "option" {
|
dynamic "option" {
|
||||||
for_each = [for k, v in concat(
|
for_each = [for k, v in concat(
|
||||||
|
|||||||
@@ -22,4 +22,13 @@ describe("exoscale-zone", async () => {
|
|||||||
});
|
});
|
||||||
expect(state.outputs.value.value).toBe("at-vie-1");
|
expect(state.outputs.value.value).toBe("at-vie-1");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter", async () => {
|
||||||
|
const order = 99;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(1);
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -51,6 +51,11 @@ variable "exclude" {
|
|||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
# This is a static list because the zones don't change _that_
|
# This is a static list because the zones don't change _that_
|
||||||
@@ -94,6 +99,7 @@ data "coder_parameter" "zone" {
|
|||||||
display_name = var.display_name
|
display_name = var.display_name
|
||||||
description = var.description
|
description = var.description
|
||||||
default = var.default == "" ? null : var.default
|
default = var.default == "" ? null : var.default
|
||||||
|
order = var.coder_parameter_order
|
||||||
mutable = var.mutable
|
mutable = var.mutable
|
||||||
dynamic "option" {
|
dynamic "option" {
|
||||||
for_each = { for k, v in local.zones : k => v if !(contains(var.exclude, k)) }
|
for_each = { for k, v in local.zones : k => v if !(contains(var.exclude, k)) }
|
||||||
|
|||||||
@@ -40,4 +40,13 @@ describe("gcp-region", async () => {
|
|||||||
});
|
});
|
||||||
expect(state.outputs.value.value).toBe("us-west2-b");
|
expect(state.outputs.value.value).toBe("us-west2-b");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter", async () => {
|
||||||
|
const order = 99;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(1);
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -63,6 +63,12 @@ variable "single_zone_per_region" {
|
|||||||
type = bool
|
type = bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
zones = {
|
zones = {
|
||||||
# US Central
|
# US Central
|
||||||
@@ -715,6 +721,7 @@ data "coder_parameter" "region" {
|
|||||||
icon = "/icon/gcp.png"
|
icon = "/icon/gcp.png"
|
||||||
mutable = var.mutable
|
mutable = var.mutable
|
||||||
default = var.default != null && var.default != "" && (!var.gpu_only || try(local.zones[var.default].gpu, false)) ? var.default : null
|
default = var.default != null && var.default != "" && (!var.gpu_only || try(local.zones[var.default].gpu, false)) ? var.default : null
|
||||||
|
order = var.coder_parameter_order
|
||||||
dynamic "option" {
|
dynamic "option" {
|
||||||
for_each = {
|
for_each = {
|
||||||
for k, v in local.zones : k => v
|
for k, v in local.zones : k => v
|
||||||
|
|||||||
@@ -66,4 +66,34 @@ describe("git-config", async () => {
|
|||||||
{ type: "coder_env", name: "git_commmiter_name" },
|
{ type: "coder_env", name: "git_commmiter_name" },
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter for both fields", async () => {
|
||||||
|
const order = 20;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
agent_id: "foo",
|
||||||
|
allow_username_change: "true",
|
||||||
|
allow_email_change: "true",
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(5);
|
||||||
|
// user_email order is the same as the order
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order);
|
||||||
|
// username order is incremented by 1
|
||||||
|
// @ts-ignore: Object is possibly 'null'.
|
||||||
|
expect(state.resources[1].instances[0]?.attributes.order).toBe(order + 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("set custom order for coder_parameter for just username", async () => {
|
||||||
|
const order = 30;
|
||||||
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
|
agent_id: "foo",
|
||||||
|
allow_email_change: "false",
|
||||||
|
allow_username_change: "true",
|
||||||
|
coder_parameter_order: order.toString(),
|
||||||
|
});
|
||||||
|
expect(state.resources).toHaveLength(4);
|
||||||
|
// user_email was not created
|
||||||
|
// username order is incremented by 1
|
||||||
|
expect(state.resources[0].instances[0].attributes.order).toBe(order + 1);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,6 +26,11 @@ variable "allow_email_change" {
|
|||||||
default = false
|
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)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
data "coder_workspace" "me" {}
|
data "coder_workspace" "me" {}
|
||||||
|
|
||||||
@@ -34,6 +39,7 @@ data "coder_parameter" "user_email" {
|
|||||||
name = "user_email"
|
name = "user_email"
|
||||||
type = "string"
|
type = "string"
|
||||||
default = ""
|
default = ""
|
||||||
|
order = var.coder_parameter_order != null ? var.coder_parameter_order + 0 : null
|
||||||
description = "Git user.email to be used for commits. Leave empty to default to Coder user's email."
|
description = "Git user.email to be used for commits. Leave empty to default to Coder user's email."
|
||||||
display_name = "Git config user.email"
|
display_name = "Git config user.email"
|
||||||
mutable = true
|
mutable = true
|
||||||
@@ -44,6 +50,7 @@ data "coder_parameter" "username" {
|
|||||||
name = "username"
|
name = "username"
|
||||||
type = "string"
|
type = "string"
|
||||||
default = ""
|
default = ""
|
||||||
|
order = var.coder_parameter_order != null ? var.coder_parameter_order + 1 : null
|
||||||
description = "Git user.name to be used for commits. Leave empty to default to Coder user's Full Name."
|
description = "Git user.name to be used for commits. Leave empty to default to Coder user's Full Name."
|
||||||
display_name = "Full Name for Git config"
|
display_name = "Full Name for Git config"
|
||||||
mutable = true
|
mutable = true
|
||||||
|
|||||||
Reference in New Issue
Block a user