From d0a2b4bb962a766a6c17bc3b2988311a27606be1 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 11 Nov 2024 16:47:16 +0200 Subject: [PATCH 1/7] fix(cli): add backwards compat for old telemetry env and tests --- cli/server_test.go | 34 ++++++++++++++++++++++++++++++++++ codersdk/deployment.go | 30 ++++++++++++++++++++++-------- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/cli/server_test.go b/cli/server_test.go index 83a7f7171c6f5..dfc1804fc19bf 100644 --- a/cli/server_test.go +++ b/cli/server_test.go @@ -1620,6 +1620,40 @@ func TestServer_Production(t *testing.T) { require.NoError(t, err) } +//nolin:tparallel,paralleltest // This test sets environment variables. +func TestServer_TelemetryDisable(t *testing.T) { + // Set the default telemetry to true (normally disabled in tests). + t.Setenv("CODER_TEST_TELEMETRY_DEFAULT_ENABLE", "true") + + for _, tt := range []struct { + key string + val string + want bool + }{ + {"", "", true}, + {"CODER_TELEMETRY_ENABLE", "true", true}, + {"CODER_TELEMETRY_ENABLE", "false", false}, + {"CODER_TELEMETRY", "true", true}, + {"CODER_TELEMETRY", "false", false}, + } { + t.Run(fmt.Sprintf("%s=%s", tt.key, tt.val), func(t *testing.T) { + t.Parallel() + var b bytes.Buffer + inv, _ := clitest.New(t, "server", "--write-config") + inv.Stdout = &b + inv.Environ.Set(tt.key, tt.val) + clitest.Run(t, inv) + + t.Logf("config:\n%s", b.String()) + + var dv codersdk.DeploymentValues + err := yaml.Unmarshal(b.Bytes(), &dv) + require.NoError(t, err) + assert.Equal(t, tt.want, dv.Telemetry.Enable.Value()) + }) + } +} + //nolint:tparallel,paralleltest // This test cannot be run in parallel due to signal handling. func TestServer_InterruptShutdown(t *testing.T) { t.Skip("This test issues an interrupt signal which will propagate to the test runner.") diff --git a/codersdk/deployment.go b/codersdk/deployment.go index 5959c35fa9d95..0a97da7d3958f 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -1143,6 +1143,16 @@ when required by your organization's security policy.`, Group: &deploymentGroupEmailTLS, YAML: "certKeyFile", } + telemetryEnable := serpent.Option{ + Name: "Telemetry Enable", + Description: "Whether telemetry is enabled or not. Coder collects anonymized usage data to help improve our product.", + Flag: "telemetry", + Env: "CODER_TELEMETRY_ENABLE", + Default: strconv.FormatBool(flag.Lookup("test.v") == nil || os.Getenv("CODER_TEST_TELEMETRY_DEFAULT_ENABLE") == "true"), + Value: &c.Telemetry.Enable, + Group: &deploymentGroupTelemetry, + YAML: "enable", + } opts := serpent.OptionSet{ { Name: "Access URL", @@ -1903,15 +1913,19 @@ when required by your organization's security policy.`, YAML: "dangerousSkipIssuerChecks", }, // Telemetry settings + telemetryEnable, { - Name: "Telemetry Enable", - Description: "Whether telemetry is enabled or not. Coder collects anonymized usage data to help improve our product.", - Flag: "telemetry", - Env: "CODER_TELEMETRY_ENABLE", - Default: strconv.FormatBool(flag.Lookup("test.v") == nil), - Value: &c.Telemetry.Enable, - Group: &deploymentGroupTelemetry, - YAML: "enable", + Hidden: true, + Name: "Telemetry (backwards compatibility)", + // Note the flip-flop of flag and env to maintain backwards + // compatibility and consistency. Inconsistently, the env + // was renamed to CODER_TELEMETRY_ENABLE in the past, but + // the flag was not renamed -enable. + Flag: "telemetry-enable", + Env: "CODER_TELEMETRY", + Value: &c.Telemetry.Enable, + Group: &deploymentGroupTelemetry, + UseInstead: []serpent.Option{telemetryEnable}, }, { Name: "Telemetry URL", From e4eaf58354c25bc19e7e0816df85e862c0337483 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 11 Nov 2024 18:08:28 +0200 Subject: [PATCH 2/7] update serpent to fork --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 49603fe69e8a3..5ae8795513b79 100644 --- a/go.mod +++ b/go.mod @@ -204,7 +204,7 @@ require ( github.com/charmbracelet/bubbles v0.20.0 github.com/charmbracelet/bubbletea v1.1.0 github.com/charmbracelet/lipgloss v1.0.0 - github.com/coder/serpent v0.8.0 + github.com/coder/serpent v0.8.1-0.20241111142954-5276b64d9ff7 github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 github.com/emersion/go-smtp v0.21.2 github.com/go-jose/go-jose/v4 v4.0.2 diff --git a/go.sum b/go.sum index 5f7ad74b2e704..18e05c9fe8bf8 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,8 @@ github.com/coder/quartz v0.1.2 h1:PVhc9sJimTdKd3VbygXtS4826EOCpB1fXoRlLnCrE+s= github.com/coder/quartz v0.1.2/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA= github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc= github.com/coder/retry v1.5.1/go.mod h1:blHMk9vs6LkoRT9ZHyuZo360cufXEhrxqvEzeMtRGoY= -github.com/coder/serpent v0.8.0 h1:6OR+k6fekhSeEDmwwzBgnSjaa7FfGGrMlc3GoAEH9dg= -github.com/coder/serpent v0.8.0/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= +github.com/coder/serpent v0.8.1-0.20241111142954-5276b64d9ff7 h1:cbxUJnw9fcP3CFSLC2ZA+BNPBNyDeRoRVinHRagQz6s= +github.com/coder/serpent v0.8.1-0.20241111142954-5276b64d9ff7/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788 h1:YoUSJ19E8AtuUFVYBpXuOD6a/zVP3rcxezNsoDseTUw= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= github.com/coder/tailscale v1.1.1-0.20241003034647-02286e537fc2 h1:mBbPFyJ2i9o490IwWGvWgtG0qmvIk45R7GWJpoaXotI= From 9b1e0972be4af3b06a2ab20a163e01d84ebbb7ea Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 11 Nov 2024 18:19:44 +0200 Subject: [PATCH 3/7] lint --- cli/server_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cli/server_test.go b/cli/server_test.go index dfc1804fc19bf..4e17a0800629c 100644 --- a/cli/server_test.go +++ b/cli/server_test.go @@ -1620,11 +1620,12 @@ func TestServer_Production(t *testing.T) { require.NoError(t, err) } -//nolin:tparallel,paralleltest // This test sets environment variables. +//nolint:tparallel,paralleltest // This test sets environment variables. func TestServer_TelemetryDisable(t *testing.T) { // Set the default telemetry to true (normally disabled in tests). t.Setenv("CODER_TEST_TELEMETRY_DEFAULT_ENABLE", "true") + //nolint:paralleltest // No need to reinitialise the variable tt (Go version). for _, tt := range []struct { key string val string From 6f6ddc2c4552be1d504e283aac340f1d31c6550c Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 11 Nov 2024 18:22:44 +0200 Subject: [PATCH 4/7] remove debuglog --- cli/server_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/cli/server_test.go b/cli/server_test.go index 4e17a0800629c..9cf466c6c35aa 100644 --- a/cli/server_test.go +++ b/cli/server_test.go @@ -1645,8 +1645,6 @@ func TestServer_TelemetryDisable(t *testing.T) { inv.Environ.Set(tt.key, tt.val) clitest.Run(t, inv) - t.Logf("config:\n%s", b.String()) - var dv codersdk.DeploymentValues err := yaml.Unmarshal(b.Bytes(), &dv) require.NoError(t, err) From 1ebcb3b8e48adb25776a3cf5bb397afef598fc74 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 13 Nov 2024 13:03:01 +0200 Subject: [PATCH 5/7] bump serpent pr --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5ae8795513b79..f747cfb4463ff 100644 --- a/go.mod +++ b/go.mod @@ -204,7 +204,7 @@ require ( github.com/charmbracelet/bubbles v0.20.0 github.com/charmbracelet/bubbletea v1.1.0 github.com/charmbracelet/lipgloss v1.0.0 - github.com/coder/serpent v0.8.1-0.20241111142954-5276b64d9ff7 + github.com/coder/serpent v0.8.1-0.20241113110052-e053fdac0b0d github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 github.com/emersion/go-smtp v0.21.2 github.com/go-jose/go-jose/v4 v4.0.2 diff --git a/go.sum b/go.sum index 18e05c9fe8bf8..ddca510202308 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,8 @@ github.com/coder/quartz v0.1.2 h1:PVhc9sJimTdKd3VbygXtS4826EOCpB1fXoRlLnCrE+s= github.com/coder/quartz v0.1.2/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA= github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc= github.com/coder/retry v1.5.1/go.mod h1:blHMk9vs6LkoRT9ZHyuZo360cufXEhrxqvEzeMtRGoY= -github.com/coder/serpent v0.8.1-0.20241111142954-5276b64d9ff7 h1:cbxUJnw9fcP3CFSLC2ZA+BNPBNyDeRoRVinHRagQz6s= -github.com/coder/serpent v0.8.1-0.20241111142954-5276b64d9ff7/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= +github.com/coder/serpent v0.8.1-0.20241113110052-e053fdac0b0d h1:wqbB0DI0F3LAHg5waDnuepn8/BNl9jPcBs7JHEc6b1Q= +github.com/coder/serpent v0.8.1-0.20241113110052-e053fdac0b0d/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788 h1:YoUSJ19E8AtuUFVYBpXuOD6a/zVP3rcxezNsoDseTUw= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= github.com/coder/tailscale v1.1.1-0.20241003034647-02286e537fc2 h1:mBbPFyJ2i9o490IwWGvWgtG0qmvIk45R7GWJpoaXotI= From 3e60be1483d333734866f5caf890875e6038cc26 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 14 Nov 2024 00:28:50 +0200 Subject: [PATCH 6/7] bump serpent pr --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f747cfb4463ff..5ec613a32ca0e 100644 --- a/go.mod +++ b/go.mod @@ -204,7 +204,7 @@ require ( github.com/charmbracelet/bubbles v0.20.0 github.com/charmbracelet/bubbletea v1.1.0 github.com/charmbracelet/lipgloss v1.0.0 - github.com/coder/serpent v0.8.1-0.20241113110052-e053fdac0b0d + github.com/coder/serpent v0.8.1-0.20241113221201-ee63bee4640b github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 github.com/emersion/go-smtp v0.21.2 github.com/go-jose/go-jose/v4 v4.0.2 diff --git a/go.sum b/go.sum index ddca510202308..f92e5b2bda5cd 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,8 @@ github.com/coder/quartz v0.1.2 h1:PVhc9sJimTdKd3VbygXtS4826EOCpB1fXoRlLnCrE+s= github.com/coder/quartz v0.1.2/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA= github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc= github.com/coder/retry v1.5.1/go.mod h1:blHMk9vs6LkoRT9ZHyuZo360cufXEhrxqvEzeMtRGoY= -github.com/coder/serpent v0.8.1-0.20241113110052-e053fdac0b0d h1:wqbB0DI0F3LAHg5waDnuepn8/BNl9jPcBs7JHEc6b1Q= -github.com/coder/serpent v0.8.1-0.20241113110052-e053fdac0b0d/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= +github.com/coder/serpent v0.8.1-0.20241113221201-ee63bee4640b h1:41rbLSZiBtGd7l9wLO0tb2DSoYTOikHeM9eBPivTEeE= +github.com/coder/serpent v0.8.1-0.20241113221201-ee63bee4640b/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788 h1:YoUSJ19E8AtuUFVYBpXuOD6a/zVP3rcxezNsoDseTUw= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= github.com/coder/tailscale v1.1.1-0.20241003034647-02286e537fc2 h1:mBbPFyJ2i9o490IwWGvWgtG0qmvIk45R7GWJpoaXotI= From 5a6370837567d048a9c3eb9aee747914531eb750 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 14 Nov 2024 00:49:50 +0200 Subject: [PATCH 7/7] serpent 0.9.0 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5ec613a32ca0e..3fd95bc456df2 100644 --- a/go.mod +++ b/go.mod @@ -204,7 +204,7 @@ require ( github.com/charmbracelet/bubbles v0.20.0 github.com/charmbracelet/bubbletea v1.1.0 github.com/charmbracelet/lipgloss v1.0.0 - github.com/coder/serpent v0.8.1-0.20241113221201-ee63bee4640b + github.com/coder/serpent v0.9.0 github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 github.com/emersion/go-smtp v0.21.2 github.com/go-jose/go-jose/v4 v4.0.2 diff --git a/go.sum b/go.sum index f92e5b2bda5cd..c625d5d82b060 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,8 @@ github.com/coder/quartz v0.1.2 h1:PVhc9sJimTdKd3VbygXtS4826EOCpB1fXoRlLnCrE+s= github.com/coder/quartz v0.1.2/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA= github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc= github.com/coder/retry v1.5.1/go.mod h1:blHMk9vs6LkoRT9ZHyuZo360cufXEhrxqvEzeMtRGoY= -github.com/coder/serpent v0.8.1-0.20241113221201-ee63bee4640b h1:41rbLSZiBtGd7l9wLO0tb2DSoYTOikHeM9eBPivTEeE= -github.com/coder/serpent v0.8.1-0.20241113221201-ee63bee4640b/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= +github.com/coder/serpent v0.9.0 h1:gfoTNOUitVdO1ZeZKk8xHiFjBvjzCQXxcMpZ7Dg41Qg= +github.com/coder/serpent v0.9.0/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788 h1:YoUSJ19E8AtuUFVYBpXuOD6a/zVP3rcxezNsoDseTUw= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= github.com/coder/tailscale v1.1.1-0.20241003034647-02286e537fc2 h1:mBbPFyJ2i9o490IwWGvWgtG0qmvIk45R7GWJpoaXotI=