diff --git a/cli/ssh.go b/cli/ssh.go index a55cd437ffe3d..38fde2c8a155d 100644 --- a/cli/ssh.go +++ b/cli/ssh.go @@ -28,6 +28,7 @@ import ( "cdr.dev/slog" "cdr.dev/slog/sloggers/sloghuman" + "github.com/coder/coder/v2/agent/agentssh" "github.com/coder/coder/v2/cli/cliui" "github.com/coder/coder/v2/cli/cliutil" "github.com/coder/coder/v2/coderd/autobuild/notify" @@ -58,6 +59,7 @@ func (r *RootCmd) ssh() *serpent.Command { remoteForwards []string env []string disableAutostart bool + noUsageTracking bool ) client := new(codersdk.Client) cmd := &serpent.Command{ @@ -408,12 +410,27 @@ func (r *RootCmd) ssh() *serpent.Command { return xerrors.Errorf("start shell: %w", err) } - // track workspace usage while connection is open - closeUsage := client.UpdateWorkspaceUsageWithBodyContext(ctx, workspace.ID, codersdk.PostWorkspaceUsageRequest{ - AgentID: workspaceAgent.ID, - AppName: codersdk.UsageAppNameSSH, - }) - defer closeUsage() + if !noUsageTracking { + // check env for magic variable to determine the session type + appName := codersdk.UsageAppNameSSH + for _, kv := range parsedEnv { + if kv[0] == agentssh.MagicSessionTypeEnvironmentVariable { + switch kv[1] { + case agentssh.MagicSessionTypeJetBrains: + appName = codersdk.UsageAppNameJetbrains + case agentssh.MagicSessionTypeVSCode: + appName = codersdk.UsageAppNameVscode + } + } + } + + // track workspace usage while connection is open + closeUsage := client.UpdateWorkspaceUsageWithBodyContext(ctx, workspace.ID, codersdk.PostWorkspaceUsageRequest{ + AgentID: workspaceAgent.ID, + AppName: appName, + }) + defer closeUsage() + } // Put cancel at the top of the defer stack to initiate // shutdown of services. @@ -517,6 +534,12 @@ func (r *RootCmd) ssh() *serpent.Command { Value: serpent.StringArrayOf(&env), }, sshDisableAutostartOption(serpent.BoolOf(&disableAutostart)), + { + Flag: "no-usage-tracking", + Description: "Disables tracking of workspace usage.", + Env: "CODER_SSH_NO_USAGE_TRACKING", + Value: serpent.BoolOf(&noUsageTracking), + }, } return cmd } diff --git a/cli/testdata/coder_ssh_--help.golden b/cli/testdata/coder_ssh_--help.golden index 80aaa3c204fda..153ca20911173 100644 --- a/cli/testdata/coder_ssh_--help.golden +++ b/cli/testdata/coder_ssh_--help.golden @@ -30,6 +30,9 @@ OPTIONS: -l, --log-dir string, $CODER_SSH_LOG_DIR Specify the directory containing SSH diagnostic log files. + --no-usage-tracking bool, $CODER_SSH_NO_USAGE_TRACKING + Disables tracking of workspace usage. + --no-wait bool, $CODER_SSH_NO_WAIT Enter workspace immediately after the agent has connected. This is the default if the template has configured the agent startup script diff --git a/docs/cli/ssh.md b/docs/cli/ssh.md index d2110628feec4..6e6f040b9119c 100644 --- a/docs/cli/ssh.md +++ b/docs/cli/ssh.md @@ -113,3 +113,12 @@ Set environment variable(s) for session (key1=value1,key2=value2,...). | Default | false | Disable starting the workspace automatically when connecting via SSH. + +### --no-usage-tracking + +| | | +| ----------- | ----------------------------------------- | +| Type | bool | +| Environment | $CODER_SSH_NO_USAGE_TRACKING | + +Disables tracking of workspace usage. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy