chore: update deprecated usage of coder_workspace.owner* fields (#13390)

Per https://github.com/coder/terraform-provider-coder/releases/tag/v0.23.0

Performs a mechanical rename of existing usage deprecated fields in the latest version of the coder/coder provider.

Closes #13382
This commit is contained in:
Cian Johnston
2024-05-30 11:31:51 +01:00
committed by GitHub
parent 7cc96f5d40
commit e176867d77
34 changed files with 186 additions and 157 deletions
+11 -10
View File
@@ -86,6 +86,7 @@ provider "kubernetes" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -175,21 +176,21 @@ resource "coder_app" "code-server" {
resource "kubernetes_persistent_volume_claim" "home" {
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-home"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}-home"
namespace = var.namespace
labels = {
"app.kubernetes.io/name" = "coder-pvc"
"app.kubernetes.io/instance" = "coder-pvc-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-pvc-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/part-of" = "coder"
//Coder-specific labels.
"com.coder.resource" = "true"
"com.coder.workspace.id" = data.coder_workspace.me.id
"com.coder.workspace.name" = data.coder_workspace.me.name
"com.coder.user.id" = data.coder_workspace.me.owner_id
"com.coder.user.username" = data.coder_workspace.me.owner
"com.coder.user.id" = data.coder_workspace_owner.me.id
"com.coder.user.username" = data.coder_workspace_owner.me.name
}
annotations = {
"com.coder.user.email" = data.coder_workspace.me.owner_email
"com.coder.user.email" = data.coder_workspace_owner.me.email
}
}
wait_until_bound = false
@@ -210,20 +211,20 @@ resource "kubernetes_deployment" "main" {
]
wait_for_rollout = false
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = var.namespace
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/part-of" = "coder"
"com.coder.resource" = "true"
"com.coder.workspace.id" = data.coder_workspace.me.id
"com.coder.workspace.name" = data.coder_workspace.me.name
"com.coder.user.id" = data.coder_workspace.me.owner_id
"com.coder.user.username" = data.coder_workspace.me.owner
"com.coder.user.id" = data.coder_workspace_owner.me.id
"com.coder.user.username" = data.coder_workspace_owner.me.name
}
annotations = {
"com.coder.user.email" = data.coder_workspace.me.owner_email
"com.coder.user.email" = data.coder_workspace_owner.me.email
}
}
+1 -1
View File
@@ -30,7 +30,7 @@ compute:
```hcl
resource "docker_volume" "home_volume" {
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
name = "coder-${data.coder_workspace_owner.me.name}-${data.coder_workspace.me.name}-root"
}
resource "coder_metadata" "home_volume" {
+1 -1
View File
@@ -315,7 +315,7 @@ This code produces a hashed value that will be difficult to replicate.
```hcl
locals {
concatenated_string = "${data.coder_workspace.me.name}+${data.coder_workspace.me.owner}"
concatenated_string = "${data.coder_workspace.me.name}+${data.coder_workspace_owner.me.name}"
hashed_string = md5(local.concatenated_string)
truncated_hash = substr(local.hashed_string, 0, 16)
}
+7 -6
View File
@@ -24,7 +24,7 @@ locals {
repo_base_dir = data.coder_parameter.repo_base_dir.value == "~" ? "/home/coder" : replace(data.coder_parameter.repo_base_dir.value, "/^~\\//", "/home/coder/")
repo_dir = replace(module.git-clone.repo_dir, "/^~\\//", "/home/coder/")
container_name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
container_name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
}
data "coder_parameter" "repo_base_dir" {
@@ -95,6 +95,7 @@ data "coder_external_auth" "github" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
module "slackme" {
source = "registry.coder.com/modules/slackme/coder"
@@ -267,11 +268,11 @@ resource "docker_volume" "home_volume" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
@@ -309,7 +310,7 @@ resource "docker_container" "workspace" {
# Use the docker gateway if the access URL is 127.0.0.1
entrypoint = ["sh", "-c", coder_agent.dev.init_script]
# CPU limits are unnecessary since Docker will load balance automatically
memory = data.coder_workspace.me.owner == "code-asher" ? 65536 : 32768
memory = data.coder_workspace_owner.me.name == "code-asher" ? 65536 : 32768
runtime = "sysbox-runc"
env = [
"CODER_AGENT_TOKEN=${coder_agent.dev.token}",
@@ -330,11 +331,11 @@ resource "docker_container" "workspace" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
+5 -4
View File
@@ -15,13 +15,13 @@ terraform {
locals {
# Make sure to use the same field as the username field in the Artifactory
# It can be either the username or the email address.
artifactory_username = data.coder_workspace.me.owner_email
artifactory_username = data.coder_workspace_owner.me.email
artifactory_repository_keys = {
"npm" = "npm"
"python" = "python"
"go" = "go"
}
workspace_user = data.coder_workspace.me.owner
workspace_user = data.coder_workspace_owner.me.name
jfrog_host = replace(var.jfrog_url, "^https://", "")
}
@@ -30,6 +30,7 @@ data "coder_provisioner" "me" {}
provider "docker" {}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
variable "jfrog_url" {
type = string
@@ -83,7 +84,7 @@ resource "coder_agent" "main" {
# Configure the `npm` CLI to use the Artifactory "npm" repository.
cat << EOF > ~/.npmrc
email = ${data.coder_workspace.me.owner_email}
email = ${data.coder_workspace_owner.me.email}
registry = ${var.jfrog_url}/artifactory/api/npm/${local.artifactory_repository_keys["npm"]}
EOF
jf rt curl /api/npm/auth >> .npmrc
@@ -149,7 +150,7 @@ resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = docker_image.main.name
# Uses lower() to avoid Docker restriction on container names.
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
# Hostname makes the shell more user friendly: coder@my-workspace:~$
hostname = data.coder_workspace.me.name
entrypoint = ["sh", "-c", coder_agent.main.init_script]
+11 -10
View File
@@ -20,7 +20,7 @@ variable "java_image" {
}
locals {
username = data.coder_workspace.me.owner
username = data.coder_workspace_owner.me.name
images = {
"go" = var.go_image,
@@ -33,6 +33,7 @@ data "coder_provisioner" "me" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
data "coder_parameter" "container_image" {
name = "container_image"
@@ -61,10 +62,10 @@ resource "coder_agent" "main" {
EOF
env = {
GIT_AUTHOR_NAME = "${data.coder_workspace.me.owner}"
GIT_COMMITTER_NAME = "${data.coder_workspace.me.owner}"
GIT_AUTHOR_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_COMMITTER_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_AUTHOR_NAME = "${data.coder_workspace_owner.me.name}"
GIT_COMMITTER_NAME = "${data.coder_workspace_owner.me.name}"
GIT_AUTHOR_EMAIL = "${data.coder_workspace_owner.me.email}"
GIT_COMMITTER_EMAIL = "${data.coder_workspace_owner.me.email}"
}
}
@@ -91,11 +92,11 @@ resource "docker_volume" "home_volume" {
}
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
@@ -119,7 +120,7 @@ resource "coder_metadata" "home_info" {
resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = local.images[data.coder_parameter.container_image.value]
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
hostname = data.coder_workspace.me.name
entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
env = [
@@ -138,11 +139,11 @@ resource "docker_container" "workspace" {
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
+7 -6
View File
@@ -10,7 +10,7 @@ terraform {
}
locals {
username = data.coder_workspace.me.owner
username = data.coder_workspace_owner.me.name
}
data "coder_provisioner" "me" {
@@ -21,6 +21,7 @@ provider "docker" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
arch = data.coder_provisioner.me.arch
@@ -59,11 +60,11 @@ resource "docker_volume" "home_volume" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
@@ -94,7 +95,7 @@ resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = docker_image.main.name
# Uses lower() to avoid Docker restriction on container names.
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
# Hostname makes the shell more user friendly: coder@my-workspace:~$
hostname = data.coder_workspace.me.name
# Use the docker gateway if the access URL is 127.0.0.1
@@ -112,11 +113,11 @@ resource "docker_container" "workspace" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
+2 -1
View File
@@ -52,6 +52,7 @@ provider "aws" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
data "aws_ami" "ubuntu" {
most_recent = true
@@ -167,7 +168,7 @@ resource "aws_instance" "vm" {
user_data = local.user_data
tags = {
Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
Name = "coder-${data.coder_workspace_owner.me.name}-${data.coder_workspace.me.name}"
# Required if you are using our example policy, see template README
Coder_Provisioned = "true"
}
+2 -1
View File
@@ -142,6 +142,7 @@ provider "aws" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
data "aws_ami" "ubuntu" {
most_recent = true
@@ -249,7 +250,7 @@ resource "aws_instance" "dev" {
user_data = local.user_data
tags = {
Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
Name = "coder-${data.coder_workspace_owner.me.name}-${data.coder_workspace.me.name}"
# Required if you are using our example policy, see template README
Coder_Provisioned = "true"
}
+2 -1
View File
@@ -142,6 +142,7 @@ provider "aws" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
data "aws_ami" "windows" {
most_recent = true
@@ -187,7 +188,7 @@ resource "aws_instance" "dev" {
user_data = data.coder_workspace.me.transition == "start" ? local.user_data_start : local.user_data_end
tags = {
Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
Name = "coder-${data.coder_workspace_owner.me.name}-${data.coder_workspace.me.name}"
# Required if you are using our example policy, see template README
Coder_Provisioned = "true"
}
+2 -1
View File
@@ -221,6 +221,7 @@ provider "azurerm" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
arch = "amd64"
@@ -263,7 +264,7 @@ resource "coder_agent" "main" {
}
locals {
prefix = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
prefix = "coder-${data.coder_workspace_owner.me.name}-${data.coder_workspace.me.name}"
userdata = templatefile("cloud-config.yaml.tftpl", {
username = "coder" # Ensure this user/group does not exist in your VM image
+10 -9
View File
@@ -17,6 +17,7 @@ provider "docker" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
arch = data.coder_provisioner.me.arch
@@ -35,10 +36,10 @@ resource "coder_agent" "main" {
# You can remove this block if you'd prefer to configure Git manually or using
# dotfiles. (see docs/dotfiles.md)
env = {
GIT_AUTHOR_NAME = coalesce(data.coder_workspace.me.owner_name, data.coder_workspace.me.owner)
GIT_AUTHOR_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_COMMITTER_NAME = coalesce(data.coder_workspace.me.owner_name, data.coder_workspace.me.owner)
GIT_COMMITTER_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_AUTHOR_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_AUTHOR_EMAIL = "${data.coder_workspace_owner.me.email}"
GIT_COMMITTER_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_COMMITTER_EMAIL = "${data.coder_workspace_owner.me.email}"
}
# The following metadata blocks are optional. They are used to display
@@ -134,11 +135,11 @@ resource "docker_volume" "workspaces" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
@@ -207,7 +208,7 @@ resource "docker_container" "workspace" {
# https://github.com/coder/envbuilder/tags
image = "ghcr.io/coder/envbuilder:0.2.1"
# Uses lower() to avoid Docker restriction on container names.
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
# Hostname makes the shell more user friendly: coder@my-workspace:~$
hostname = data.coder_workspace.me.name
# Use the docker gateway if the access URL is 127.0.0.1
@@ -230,11 +231,11 @@ resource "docker_container" "workspace" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
@@ -42,6 +42,7 @@ provider "kubernetes" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
arch = data.coder_provisioner.me.arch
@@ -60,10 +61,10 @@ resource "coder_agent" "main" {
# You can remove this block if you'd prefer to configure Git manually or using
# dotfiles. (see docs/dotfiles.md)
env = {
GIT_AUTHOR_NAME = coalesce(data.coder_workspace.me.owner_name, data.coder_workspace.me.owner)
GIT_AUTHOR_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_COMMITTER_NAME = coalesce(data.coder_workspace.me.owner_name, data.coder_workspace.me.owner)
GIT_COMMITTER_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_AUTHOR_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_AUTHOR_EMAIL = "${data.coder_workspace_owner.me.email}"
GIT_COMMITTER_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_COMMITTER_EMAIL = "${data.coder_workspace_owner.me.email}"
}
}
@@ -89,8 +90,8 @@ resource "kubernetes_persistent_volume_claim" "workspaces" {
name = "coder-${data.coder_workspace.me.id}"
namespace = var.namespace
labels = {
"coder.owner" = data.coder_workspace.me.owner
"coder.owner_id" = data.coder_workspace.me.owner_id
"coder.owner" = data.coder_workspace_owner.me.name
"coder.owner_id" = data.coder_workspace_owner.me.id
"coder.workspace_id" = data.coder_workspace.me.id
"coder.workspace_name_at_creation" = data.coder_workspace.me.name
}
@@ -160,11 +161,11 @@ data "coder_parameter" "custom_repo_url" {
resource "kubernetes_deployment" "workspace" {
metadata {
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
namespace = var.namespace
labels = {
"coder.owner" = data.coder_workspace.me.owner
"coder.owner_id" = data.coder_workspace.me.owner_id
"coder.owner" = data.coder_workspace_owner.me.name
"coder.owner_id" = data.coder_workspace_owner.me.id
"coder.workspace_id" = data.coder_workspace.me.id
"coder.workspace_name" = data.coder_workspace.me.name
}
@@ -187,7 +188,7 @@ resource "kubernetes_deployment" "workspace" {
}
spec {
container {
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
# Find the latest version here:
# https://github.com/coder/envbuilder/tags
image = "ghcr.io/coder/envbuilder:0.2.1"
+4 -3
View File
@@ -235,6 +235,7 @@ provider "digitalocean" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -259,7 +260,7 @@ resource "coder_agent" "main" {
display_name = "Home Usage"
interval = 600 # every 10 minutes
timeout = 30 # df can take a while on large filesystems
script = "coder stat disk --path /home/${lower(data.coder_workspace.me.owner)}"
script = "coder stat disk --path /home/${lower(data.coder_workspace_owner.me.name)}"
}
}
@@ -278,13 +279,13 @@ resource "digitalocean_volume" "home_volume" {
resource "digitalocean_droplet" "workspace" {
region = data.coder_parameter.region.value
count = data.coder_workspace.me.start_count
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
image = data.coder_parameter.droplet_image.value
size = data.coder_parameter.droplet_size.value
volume_ids = [digitalocean_volume.home_volume.id]
user_data = templatefile("cloud-config.yaml.tftpl", {
username = lower(data.coder_workspace.me.owner)
username = lower(data.coder_workspace_owner.me.name)
home_volume_label = digitalocean_volume.home_volume.initial_filesystem_label
init_script = base64encode(coder_agent.main.init_script)
coder_agent_token = coder_agent.main.token
+11 -10
View File
@@ -10,7 +10,7 @@ terraform {
}
locals {
username = data.coder_workspace.me.owner
username = data.coder_workspace_owner.me.name
}
data "coder_provisioner" "me" {
@@ -21,6 +21,7 @@ provider "docker" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
arch = data.coder_provisioner.me.arch
@@ -44,10 +45,10 @@ resource "coder_agent" "main" {
# You can remove this block if you'd prefer to configure Git manually or using
# dotfiles. (see docs/dotfiles.md)
env = {
GIT_AUTHOR_NAME = coalesce(data.coder_workspace.me.owner_name, data.coder_workspace.me.owner)
GIT_AUTHOR_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_COMMITTER_NAME = coalesce(data.coder_workspace.me.owner_name, data.coder_workspace.me.owner)
GIT_COMMITTER_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_AUTHOR_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_AUTHOR_EMAIL = "${data.coder_workspace_owner.me.email}"
GIT_COMMITTER_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_COMMITTER_EMAIL = "${data.coder_workspace_owner.me.email}"
}
# The following metadata blocks are optional. They are used to display
@@ -142,11 +143,11 @@ resource "docker_volume" "home_volume" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
@@ -177,7 +178,7 @@ resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = docker_image.main.name
# Uses lower() to avoid Docker restriction on container names.
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
# Hostname makes the shell more user friendly: coder@my-workspace:~$
hostname = data.coder_workspace.me.name
# Use the docker gateway if the access URL is 127.0.0.1
@@ -196,11 +197,11 @@ resource "docker_container" "workspace" {
# Add labels in Docker to keep track of orphan resources.
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
+3 -2
View File
@@ -88,6 +88,7 @@ provider "kubernetes" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -126,7 +127,7 @@ resource "coder_app" "code-server" {
resource "kubernetes_persistent_volume_claim" "home" {
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-home"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}-home"
namespace = var.namespace
}
wait_until_bound = false
@@ -144,7 +145,7 @@ resource "kubernetes_pod" "main" {
count = data.coder_workspace.me.start_count
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = var.namespace
}
+5 -4
View File
@@ -61,6 +61,7 @@ data "google_compute_default_service_account" "default" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "google_compute_disk" "root" {
name = "coder-${data.coder_workspace.me.id}-root"
@@ -117,10 +118,10 @@ module "code-server" {
}
resource "google_compute_instance" "vm" {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-root"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}-root"
machine_type = "e2-medium"
# data.coder_workspace.me.owner == "default" is a workaround to suppress error in the terraform plan phase while creating a new workspace.
desired_status = (data.coder_workspace.me.owner == "default" || data.coder_workspace.me.start_count == 1) ? "RUNNING" : "TERMINATED"
# data.coder_workspace_owner.me.name == "default" is a workaround to suppress error in the terraform plan phase while creating a new workspace.
desired_status = (data.coder_workspace_owner.me.name == "default" || data.coder_workspace.me.start_count == 1) ? "RUNNING" : "TERMINATED"
network_interface {
network = "default"
@@ -179,7 +180,7 @@ resource "google_compute_instance" "vm" {
locals {
# Ensure Coder username is a valid Linux username
linux_user = lower(substr(data.coder_workspace.me.owner, 0, 32))
linux_user = lower(substr(data.coder_workspace_owner.me.name, 0, 32))
}
resource "coder_metadata" "workspace_info" {
+3 -2
View File
@@ -61,6 +61,7 @@ data "google_compute_default_service_account" "default" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "google_compute_disk" "root" {
name = "coder-${data.coder_workspace.me.id}-root"
@@ -139,7 +140,7 @@ resource "coder_app" "code-server" {
resource "google_compute_instance" "dev" {
zone = data.coder_parameter.zone.value
count = data.coder_workspace.me.start_count
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-root"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}-root"
machine_type = "e2-medium"
network_interface {
network = "default"
@@ -174,7 +175,7 @@ EOMETA
locals {
# Ensure Coder username is a valid Linux username
linux_user = lower(substr(data.coder_workspace.me.owner, 0, 32))
linux_user = lower(substr(data.coder_workspace_owner.me.name, 0, 32))
}
resource "coder_metadata" "workspace_info" {
+2 -1
View File
@@ -61,6 +61,7 @@ data "google_compute_default_service_account" "default" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
auth = "google-instance-identity"
@@ -109,7 +110,7 @@ module "gce-container" {
resource "google_compute_instance" "dev" {
zone = data.coder_parameter.zone.value
count = data.coder_workspace.me.start_count
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
machine_type = "e2-medium"
network_interface {
network = "default"
+2 -1
View File
@@ -58,6 +58,7 @@ provider "google" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
data "google_compute_default_service_account" "default" {
}
@@ -82,7 +83,7 @@ resource "coder_agent" "main" {
resource "google_compute_instance" "dev" {
zone = data.coder_parameter.zone.value
count = data.coder_workspace.me.start_count
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
machine_type = "e2-medium"
network_interface {
network = "default"
+4 -3
View File
@@ -14,6 +14,7 @@ data "coder_provisioner" "me" {}
provider "incus" {}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
data "coder_parameter" "image" {
name = "image"
@@ -96,7 +97,7 @@ resource "coder_agent" "main" {
metadata {
display_name = "Home Disk"
key = "3_home_disk"
script = "coder stat disk --path /home/${lower(data.coder_workspace.me.owner)}"
script = "coder stat disk --path /home/${lower(data.coder_workspace_owner.me.name)}"
interval = 60
timeout = 1
}
@@ -156,7 +157,7 @@ EOF
resource "incus_instance" "dev" {
running = data.coder_workspace.me.start_count == 1
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
image = incus_cached_image.image.fingerprint
config = {
@@ -273,7 +274,7 @@ EOF
}
locals {
workspace_user = lower(data.coder_workspace.me.owner)
workspace_user = lower(data.coder_workspace_owner.me.name)
pool = "coder"
repo_base_dir = data.coder_parameter.repo_base_dir.value == "~" ? "/home/${local.workspace_user}" : replace(data.coder_parameter.repo_base_dir.value, "/^~\\//", "/home/${local.workspace_user}/")
repo_dir = module.git-clone.repo_dir
+11 -10
View File
@@ -101,6 +101,7 @@ provider "kubernetes" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -189,21 +190,21 @@ resource "coder_app" "code-server" {
resource "kubernetes_persistent_volume_claim" "home" {
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-home"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}-home"
namespace = var.namespace
labels = {
"app.kubernetes.io/name" = "coder-pvc"
"app.kubernetes.io/instance" = "coder-pvc-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-pvc-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/part-of" = "coder"
//Coder-specific labels.
"com.coder.resource" = "true"
"com.coder.workspace.id" = data.coder_workspace.me.id
"com.coder.workspace.name" = data.coder_workspace.me.name
"com.coder.user.id" = data.coder_workspace.me.owner_id
"com.coder.user.username" = data.coder_workspace.me.owner
"com.coder.user.id" = data.coder_workspace_owner.me.id
"com.coder.user.username" = data.coder_workspace_owner.me.name
}
annotations = {
"com.coder.user.email" = data.coder_workspace.me.owner_email
"com.coder.user.email" = data.coder_workspace_owner.me.email
}
}
wait_until_bound = false
@@ -224,20 +225,20 @@ resource "kubernetes_deployment" "main" {
]
wait_for_rollout = false
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = var.namespace
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/part-of" = "coder"
"com.coder.resource" = "true"
"com.coder.workspace.id" = data.coder_workspace.me.id
"com.coder.workspace.name" = data.coder_workspace.me.name
"com.coder.user.id" = data.coder_workspace.me.owner_id
"com.coder.user.username" = data.coder_workspace.me.owner
"com.coder.user.id" = data.coder_workspace_owner.me.id
"com.coder.user.username" = data.coder_workspace_owner.me.name
}
annotations = {
"com.coder.user.email" = data.coder_workspace.me.owner_email
"com.coder.user.email" = data.coder_workspace_owner.me.email
}
}
+4 -3
View File
@@ -86,6 +86,7 @@ data "coder_parameter" "memory" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -127,7 +128,7 @@ resource "coder_app" "code-server" {
}
locals {
workspace_tag = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
workspace_tag = "coder-${data.coder_workspace_owner.me.name}-${data.coder_workspace.me.name}"
home_volume_name = "coder_${data.coder_workspace.me.id}_home"
}
@@ -135,7 +136,7 @@ resource "nomad_namespace" "coder_workspace" {
name = local.workspace_tag
description = "Coder workspace"
meta = {
owner = data.coder_workspace.me.owner
owner = data.coder_workspace_owner.me.name
}
}
@@ -169,7 +170,7 @@ resource "nomad_job" "workspace" {
count = data.coder_workspace.me.start_count
depends_on = [nomad_csi_volume.home_volume]
jobspec = templatefile("${path.module}/workspace.nomad.tpl", {
coder_workspace_owner = data.coder_workspace.me.owner
coder_workspace_owner = data.coder_workspace_owner.me.name
coder_workspace_name = data.coder_workspace.me.name
workspace_tag = local.workspace_tag
cores = tonumber(data.coder_parameter.cpu.value)
+11 -10
View File
@@ -10,7 +10,7 @@ terraform {
}
locals {
username = data.coder_workspace.me.owner
username = data.coder_workspace_owner.me.name
}
data "coder_provisioner" "me" {
@@ -18,6 +18,7 @@ data "coder_provisioner" "me" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
data "coder_workspace_tags" "custom_workspace_tags" {
tags = {
@@ -77,10 +78,10 @@ resource "coder_agent" "main" {
EOF
env = {
GIT_AUTHOR_NAME = "${data.coder_workspace.me.owner}"
GIT_COMMITTER_NAME = "${data.coder_workspace.me.owner}"
GIT_AUTHOR_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_COMMITTER_EMAIL = "${data.coder_workspace.me.owner_email}"
GIT_AUTHOR_NAME = "${data.coder_workspace_owner.me.name}"
GIT_COMMITTER_NAME = "${data.coder_workspace_owner.me.name}"
GIT_AUTHOR_EMAIL = "${data.coder_workspace_owner.me.email}"
GIT_COMMITTER_EMAIL = "${data.coder_workspace_owner.me.email}"
}
}
@@ -107,11 +108,11 @@ resource "docker_volume" "home_volume" {
}
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
@@ -135,7 +136,7 @@ resource "coder_metadata" "home_info" {
resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = "ubuntu:22.04"
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
hostname = data.coder_workspace.me.name
entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
env = [
@@ -153,11 +154,11 @@ resource "docker_container" "workspace" {
labels {
label = "coder.owner"
value = data.coder_workspace.me.owner
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace.me.owner_id
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
+2 -2
View File
@@ -23,10 +23,10 @@ func TestFormatDiagnostic(t *testing.T) {
expected []string
}{
"Expression": {
input: `{"@level":"error","@message":"Error: Unsupported attribute","@module":"terraform.ui","@timestamp":"2023-03-17T10:33:38.761493+01:00","diagnostic":{"severity":"error","summary":"Unsupported attribute","detail":"This object has no argument, nested block, or exported attribute named \"foobar\".","range":{"filename":"main.tf","start":{"line":230,"column":81,"byte":5648},"end":{"line":230,"column":88,"byte":5655}},"snippet":{"context":"resource \"docker_container\" \"workspace\"","code":" name = \"coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.foobar)}\"","start_line":230,"highlight_start_offset":80,"highlight_end_offset":87,"values":[]}},"type":"diagnostic"}`,
input: `{"@level":"error","@message":"Error: Unsupported attribute","@module":"terraform.ui","@timestamp":"2023-03-17T10:33:38.761493+01:00","diagnostic":{"severity":"error","summary":"Unsupported attribute","detail":"This object has no argument, nested block, or exported attribute named \"foobar\".","range":{"filename":"main.tf","start":{"line":230,"column":81,"byte":5648},"end":{"line":230,"column":88,"byte":5655}},"snippet":{"context":"resource \"docker_container\" \"workspace\"","code":" name = \"coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.foobar)}\"","start_line":230,"highlight_start_offset":80,"highlight_end_offset":87,"values":[]}},"type":"diagnostic"}`,
expected: []string{
"on main.tf line 230, in resource \"docker_container\" \"workspace\":",
" 230: name = \"coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.foobar)}\"",
" 230: name = \"coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.foobar)}\"",
"",
"This object has no argument, nested block, or exported attribute named \"foobar\".",
},
+5 -4
View File
@@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.7.0"
version = "~> 0.23.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.18"
version = "~> 2.30"
}
}
}
@@ -24,6 +24,7 @@ variable "kubernetes_nodepool_workspaces" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -35,11 +36,11 @@ resource "coder_agent" "main" {
resource "kubernetes_pod" "main" {
count = data.coder_workspace.me.start_count
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = "coder-big"
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
}
}
spec {
@@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.7.0"
version = "~> 0.23.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.18"
version = "~> 2.30"
}
}
}
@@ -24,6 +24,7 @@ variable "kubernetes_nodepool_workspaces" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -149,11 +150,11 @@ resource "coder_agent" "main" {
resource "kubernetes_pod" "main" {
count = data.coder_workspace.me.start_count
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = "coder-big"
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
}
}
spec {
@@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.7.0"
version = "~> 0.23.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.18"
version = "~> 2.30"
}
}
}
@@ -24,6 +24,7 @@ variable "kubernetes_nodepool_workspaces" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -35,11 +36,11 @@ resource "coder_agent" "main" {
resource "kubernetes_pod" "main" {
count = data.coder_workspace.me.start_count
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = "coder-big"
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
}
}
spec {
@@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.12.0"
version = "~> 0.23.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.18"
version = "~> 2.30"
}
}
}
@@ -24,6 +24,7 @@ variable "kubernetes_nodepool_workspaces" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "m" {
os = "linux"
@@ -92,24 +93,24 @@ resource "coder_app" "ws_discard" {
resource "kubernetes_deployment" "main" {
count = data.coder_workspace.me.start_count
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = "coder-big"
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/part-of" = "coder"
"com.coder.resource" = "true"
"com.coder.workspace.id" = data.coder_workspace.me.id
"com.coder.workspace.name" = data.coder_workspace.me.name
"com.coder.user.id" = data.coder_workspace.me.owner_id
"com.coder.user.username" = data.coder_workspace.me.owner
"com.coder.user.id" = data.coder_workspace_owner.me.id
"com.coder.user.username" = data.coder_workspace_owner.me.name
}
}
spec {
replicas = 1
selector {
match_labels = {
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
}
}
strategy {
@@ -119,7 +120,7 @@ resource "kubernetes_deployment" "main" {
metadata {
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
}
}
spec {
+5 -4
View File
@@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.7.0"
version = "~> 0.23.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.18"
version = "~> 2.30"
}
}
}
@@ -24,6 +24,7 @@ variable "kubernetes_nodepool_workspaces" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -35,11 +36,11 @@ resource "coder_agent" "main" {
resource "kubernetes_pod" "main" {
count = data.coder_workspace.me.start_count
metadata {
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
namespace = "coder-big"
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
}
}
spec {
+16 -15
View File
@@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.12"
version = "~> 0.23"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.22"
version = "~> 2.30"
}
}
}
@@ -17,7 +17,7 @@ resource "time_static" "start_time" {
# the scaletest is restarted.
triggers = {
count : data.coder_workspace.me.start_count
token : data.coder_workspace.me.owner_session_token # Rely on this being re-generated every start.
token : data.coder_workspace_owner.me.session_token # Rely on this being re-generated every start.
}
}
@@ -29,15 +29,15 @@ resource "null_resource" "permission_check" {
# for the plan, and consequently, updating the template.
lifecycle {
precondition {
condition = can(regex("^(default/default|scaletest/runner)$", "${data.coder_workspace.me.owner}/${data.coder_workspace.me.name}"))
condition = can(regex("^(default/default|scaletest/runner)$", "${data.coder_workspace_owner.me.name}/${data.coder_workspace.me.name}"))
error_message = "User and workspace name is not allowed, expected 'scaletest/runner'."
}
}
}
locals {
workspace_pod_name = "coder-scaletest-runner-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
workspace_pod_instance = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
workspace_pod_name = "coder-scaletest-runner-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
workspace_pod_instance = "coder-workspace-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
workspace_pod_termination_grace_period_seconds = 5 * 60 * 60 # 5 hours (cleanup timeout).
service_account_name = "scaletest-sa"
home_disk_size = 10
@@ -54,6 +54,7 @@ data "coder_provisioner" "me" {
data "coder_workspace" "me" {
}
data "coder_workspace_owner" "me" {}
data "coder_parameter" "verbose" {
order = 1
@@ -562,9 +563,9 @@ resource "coder_agent" "main" {
VERBOSE : data.coder_parameter.verbose.value ? "1" : "0",
DRY_RUN : data.coder_parameter.dry_run.value ? "1" : "0",
CODER_CONFIG_DIR : "/home/coder/.config/coderv2",
CODER_USER_TOKEN : data.coder_workspace.me.owner_session_token,
CODER_USER_TOKEN : data.coder_workspace_owner.me.session_token,
CODER_URL : data.coder_workspace.me.access_url,
CODER_USER : data.coder_workspace.me.owner,
CODER_USER : data.coder_workspace_owner.me.name,
CODER_WORKSPACE : data.coder_workspace.me.name,
# Global scaletest envs that may affect each `coder exp scaletest` invocation.
@@ -756,17 +757,17 @@ resource "kubernetes_persistent_volume_claim" "home" {
namespace = data.coder_parameter.namespace.value
labels = {
"app.kubernetes.io/name" = "coder-pvc"
"app.kubernetes.io/instance" = "coder-pvc-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-pvc-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/part-of" = "coder"
// Coder specific labels.
"com.coder.resource" = "true"
"com.coder.workspace.id" = data.coder_workspace.me.id
"com.coder.workspace.name" = data.coder_workspace.me.name
"com.coder.user.id" = data.coder_workspace.me.owner_id
"com.coder.user.username" = data.coder_workspace.me.owner
"com.coder.user.id" = data.coder_workspace_owner.me.id
"com.coder.user.username" = data.coder_workspace_owner.me.name
}
annotations = {
"com.coder.user.email" = data.coder_workspace.me.owner_email
"com.coder.user.email" = data.coder_workspace_owner.me.email
}
}
wait_until_bound = false
@@ -794,11 +795,11 @@ resource "kubernetes_pod" "main" {
"com.coder.resource" = "true"
"com.coder.workspace.id" = data.coder_workspace.me.id
"com.coder.workspace.name" = data.coder_workspace.me.name
"com.coder.user.id" = data.coder_workspace.me.owner_id
"com.coder.user.username" = data.coder_workspace.me.owner
"com.coder.user.id" = data.coder_workspace_owner.me.id
"com.coder.user.username" = data.coder_workspace_owner.me.name
}
annotations = {
"com.coder.user.email" = data.coder_workspace.me.owner_email
"com.coder.user.email" = data.coder_workspace_owner.me.email
}
}
# Set the pod delete timeout to termination_grace_period_seconds + 1m.
+5 -4
View File
@@ -284,11 +284,11 @@ resource "local_file" "kubernetes_template" {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.7.0"
version = "~> 0.23.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.18"
version = "~> 2.30"
}
}
}
@@ -300,6 +300,7 @@ resource "local_file" "kubernetes_template" {
}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
resource "coder_agent" "main" {
os = "linux"
@@ -309,11 +310,11 @@ resource "local_file" "kubernetes_template" {
resource "kubernetes_pod" "main" {
count = data.coder_workspace.me.start_count
metadata {
name = "coder-$${lower(data.coder_workspace.me.owner)}-$${lower(data.coder_workspace.me.name)}"
name = "coder-$${lower(data.coder_workspace_owner.me.name)}-$${lower(data.coder_workspace.me.name)}"
namespace = "${local.coder_namespace}"
labels = {
"app.kubernetes.io/name" = "coder-workspace"
"app.kubernetes.io/instance" = "coder-workspace-$${lower(data.coder_workspace.me.owner)}-$${lower(data.coder_workspace.me.name)}"
"app.kubernetes.io/instance" = "coder-workspace-$${lower(data.coder_workspace_owner.me.name)}-$${lower(data.coder_workspace.me.name)}"
}
}
spec {
File diff suppressed because one or more lines are too long
@@ -83,7 +83,7 @@ export const AccountForm: FC<AccountFormProps> = ({
disabled={!editable}
fullWidth
label={Language.nameLabel}
helperText='The human-readable name is optional and can be accessed in a template via the "data.coder_workspace.me.owner_name" property.'
helperText='The human-readable name is optional and can be accessed in a template via the "data.coder_workspace_owner.me.full_name" property.'
/>
<div>