From a9775fa3d52f2b9fa3efbb7702b245567bade23b Mon Sep 17 00:00:00 2001 From: Stephen Kirby <58410745+stirby@users.noreply.github.com> Date: Mon, 3 Feb 2025 17:06:05 -0600 Subject: [PATCH 01/28] chore: cherry-pick items for 2.19 (#16412) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Hugo Dutka Co-authored-by: Danielle Maywood Co-authored-by: Edward Angert Co-authored-by: ケイラ --- cli/server.go | 68 +-- cli/server_test.go | 186 +++++- coderd/apidoc/docs.go | 410 +++++++++++++ coderd/apidoc/swagger.json | 374 ++++++++++++ coderd/coderd.go | 2 + coderd/database/dbauthz/dbauthz.go | 28 + coderd/database/dbauthz/dbauthz_test.go | 18 + coderd/database/dbgen/dbgen.go | 17 + coderd/database/dbmem/dbmem.go | 70 +++ coderd/database/dbmetrics/querymetrics.go | 28 + coderd/database/dbmock/dbmock.go | 58 ++ coderd/database/dump.sql | 10 + .../000288_telemetry_items.down.sql | 1 + .../migrations/000288_telemetry_items.up.sql | 6 + .../fixtures/000288_telemetry_items.up.sql | 4 + coderd/database/models.go | 7 + coderd/database/querier.go | 4 + coderd/database/queries.sql.go | 80 +++ coderd/database/queries/telemetryitems.sql | 15 + coderd/database/unique_constraint.go | 1 + coderd/idpsync/group.go | 2 +- coderd/idpsync/idpsync.go | 9 +- coderd/idpsync/organization.go | 4 +- coderd/idpsync/role.go | 2 +- coderd/runtimeconfig/resolver.go | 6 + coderd/telemetry/telemetry.go | 211 ++++++- coderd/telemetry/telemetry_test.go | 210 ++++++- coderd/users.go | 28 +- coderd/users_test.go | 26 +- coderd/workspacebuilds.go | 2 +- coderd/workspacebuilds_test.go | 8 +- coderd/workspaces.go | 2 +- coderd/workspaces_test.go | 6 + codersdk/idpsync.go | 124 ++++ docs/admin/users/idp-sync.md | 405 ++++++------- .../users/organizations/group-sync-empty.png | Bin 0 -> 55416 bytes .../admin/users/organizations/group-sync.png | Bin 84533 -> 65507 bytes .../users/organizations/role-sync-empty.png | Bin 0 -> 43142 bytes .../admin/users/organizations/role-sync.png | Bin 82417 -> 60491 bytes .../organizations/template-org-picker.png | Bin 267865 -> 93366 bytes .../users/organizations/workspace-list.png | Bin 242300 -> 99037 bytes docs/manifest.json | 2 +- docs/reference/api/enterprise.md | 378 ++++++++++++ docs/reference/api/schemas.md | 138 +++++ .../tutorials/best-practices/organizations.md | 11 - enterprise/coderd/coderd.go | 11 +- enterprise/coderd/enidpsync/enidpsync.go | 2 + enterprise/coderd/enidpsync/organizations.go | 2 + .../coderd/enidpsync/organizations_test.go | 2 +- enterprise/coderd/idpsync.go | 452 +++++++++++++- enterprise/coderd/idpsync_internal_test.go | 117 ++++ enterprise/coderd/idpsync_test.go | 552 +++++++++++++++++- go.mod | 2 +- go.sum | 4 +- site/site.go | 45 ++ site/site_test.go | 31 +- site/src/api/typesGenerated.ts | 42 ++ 57 files changed, 3876 insertions(+), 347 deletions(-) create mode 100644 coderd/database/migrations/000288_telemetry_items.down.sql create mode 100644 coderd/database/migrations/000288_telemetry_items.up.sql create mode 100644 coderd/database/migrations/testdata/fixtures/000288_telemetry_items.up.sql create mode 100644 coderd/database/queries/telemetryitems.sql create mode 100644 docs/images/admin/users/organizations/group-sync-empty.png create mode 100644 docs/images/admin/users/organizations/role-sync-empty.png create mode 100644 enterprise/coderd/idpsync_internal_test.go diff --git a/cli/server.go b/cli/server.go index 48f049c163b3b..cfb5ecaf542ce 100644 --- a/cli/server.go +++ b/cli/server.go @@ -781,40 +781,42 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd. // This should be output before the logs start streaming. cliui.Infof(inv.Stdout, "\n==> Logs will stream in below (press ctrl+c to gracefully exit):") - if vals.Telemetry.Enable { - vals, err := vals.WithoutSecrets() - if err != nil { - return xerrors.Errorf("remove secrets from deployment values: %w", err) - } - options.Telemetry, err = telemetry.New(telemetry.Options{ - BuiltinPostgres: builtinPostgres, - DeploymentID: deploymentID, - Database: options.Database, - Logger: logger.Named("telemetry"), - URL: vals.Telemetry.URL.Value(), - Tunnel: tunnel != nil, - DeploymentConfig: vals, - ParseLicenseJWT: func(lic *telemetry.License) error { - // This will be nil when running in AGPL-only mode. - if options.ParseLicenseClaims == nil { - return nil - } - - email, trial, err := options.ParseLicenseClaims(lic.JWT) - if err != nil { - return err - } - if email != "" { - lic.Email = &email - } - lic.Trial = &trial + deploymentConfigWithoutSecrets, err := vals.WithoutSecrets() + if err != nil { + return xerrors.Errorf("remove secrets from deployment values: %w", err) + } + telemetryReporter, err := telemetry.New(telemetry.Options{ + Disabled: !vals.Telemetry.Enable.Value(), + BuiltinPostgres: builtinPostgres, + DeploymentID: deploymentID, + Database: options.Database, + Logger: logger.Named("telemetry"), + URL: vals.Telemetry.URL.Value(), + Tunnel: tunnel != nil, + DeploymentConfig: deploymentConfigWithoutSecrets, + ParseLicenseJWT: func(lic *telemetry.License) error { + // This will be nil when running in AGPL-only mode. + if options.ParseLicenseClaims == nil { return nil - }, - }) - if err != nil { - return xerrors.Errorf("create telemetry reporter: %w", err) - } - defer options.Telemetry.Close() + } + + email, trial, err := options.ParseLicenseClaims(lic.JWT) + if err != nil { + return err + } + if email != "" { + lic.Email = &email + } + lic.Trial = &trial + return nil + }, + }) + if err != nil { + return xerrors.Errorf("create telemetry reporter: %w", err) + } + defer telemetryReporter.Close() + if vals.Telemetry.Enable.Value() { + options.Telemetry = telemetryReporter } else { logger.Warn(ctx, fmt.Sprintf(`telemetry disabled, unable to notify of security issues. Read more: %s/admin/setup/telemetry`, vals.DocsURL.String())) } diff --git a/cli/server_test.go b/cli/server_test.go index fa96e192f7eb3..988fde808dc5c 100644 --- a/cli/server_test.go +++ b/cli/server_test.go @@ -39,6 +39,7 @@ import ( "tailscale.com/types/key" "cdr.dev/slog/sloggers/slogtest" + "github.com/coder/coder/v2/buildinfo" "github.com/coder/coder/v2/cli" "github.com/coder/coder/v2/cli/clitest" "github.com/coder/coder/v2/cli/config" @@ -947,36 +948,40 @@ func TestServer(t *testing.T) { t.Run("Telemetry", func(t *testing.T) { t.Parallel() - deployment := make(chan struct{}, 64) - snapshot := make(chan *telemetry.Snapshot, 64) - r := chi.NewRouter() - r.Post("/deployment", func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusAccepted) - deployment <- struct{}{} - }) - r.Post("/snapshot", func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusAccepted) - ss := &telemetry.Snapshot{} - err := json.NewDecoder(r.Body).Decode(ss) - require.NoError(t, err) - snapshot <- ss - }) - server := httptest.NewServer(r) - defer server.Close() + telemetryServerURL, deployment, snapshot := mockTelemetryServer(t) - inv, _ := clitest.New(t, + inv, cfg := clitest.New(t, "server", "--in-memory", "--http-address", ":0", "--access-url", "http://example.com", "--telemetry", - "--telemetry-url", server.URL, + "--telemetry-url", telemetryServerURL.String(), "--cache-dir", t.TempDir(), ) clitest.Start(t, inv) <-deployment <-snapshot + + accessURL := waitAccessURL(t, cfg) + + ctx := testutil.Context(t, testutil.WaitMedium) + client := codersdk.New(accessURL) + body, err := client.Request(ctx, http.MethodGet, "/", nil) + require.NoError(t, err) + require.NoError(t, body.Body.Close()) + + require.Eventually(t, func() bool { + snap := <-snapshot + htmlFirstServedFound := false + for _, item := range snap.TelemetryItems { + if item.Key == string(telemetry.TelemetryItemKeyHTMLFirstServedAt) { + htmlFirstServedFound = true + } + } + return htmlFirstServedFound + }, testutil.WaitMedium, testutil.IntervalFast, "no html_first_served telemetry item") }) t.Run("Prometheus", func(t *testing.T) { t.Parallel() @@ -1990,3 +1995,148 @@ func TestServer_DisabledDERP(t *testing.T) { err = c.Connect(ctx) require.Error(t, err) } + +type runServerOpts struct { + waitForSnapshot bool + telemetryDisabled bool + waitForTelemetryDisabledCheck bool +} + +func TestServer_TelemetryDisabled_FinalReport(t *testing.T) { + t.Parallel() + + if !dbtestutil.WillUsePostgres() { + t.Skip("this test requires postgres") + } + + telemetryServerURL, deployment, snapshot := mockTelemetryServer(t) + dbConnURL, err := dbtestutil.Open(t) + require.NoError(t, err) + + cacheDir := t.TempDir() + runServer := func(t *testing.T, opts runServerOpts) (chan error, context.CancelFunc) { + ctx, cancelFunc := context.WithCancel(context.Background()) + inv, _ := clitest.New(t, + "server", + "--postgres-url", dbConnURL, + "--http-address", ":0", + "--access-url", "http://example.com", + "--telemetry="+strconv.FormatBool(!opts.telemetryDisabled), + "--telemetry-url", telemetryServerURL.String(), + "--cache-dir", cacheDir, + "--log-filter", ".*", + ) + finished := make(chan bool, 2) + errChan := make(chan error, 1) + pty := ptytest.New(t).Attach(inv) + go func() { + errChan <- inv.WithContext(ctx).Run() + finished <- true + }() + go func() { + defer func() { + finished <- true + }() + if opts.waitForSnapshot { + pty.ExpectMatchContext(testutil.Context(t, testutil.WaitLong), "submitted snapshot") + } + if opts.waitForTelemetryDisabledCheck { + pty.ExpectMatchContext(testutil.Context(t, testutil.WaitLong), "finished telemetry status check") + } + }() + <-finished + return errChan, cancelFunc + } + waitForShutdown := func(t *testing.T, errChan chan error) error { + t.Helper() + select { + case err := <-errChan: + return err + case <-time.After(testutil.WaitMedium): + t.Fatalf("timed out waiting for server to shutdown") + } + return nil + } + + errChan, cancelFunc := runServer(t, runServerOpts{telemetryDisabled: true, waitForTelemetryDisabledCheck: true}) + cancelFunc() + require.NoError(t, waitForShutdown(t, errChan)) + + // Since telemetry was disabled, we expect no deployments or snapshots. + require.Empty(t, deployment) + require.Empty(t, snapshot) + + errChan, cancelFunc = runServer(t, runServerOpts{waitForSnapshot: true}) + cancelFunc() + require.NoError(t, waitForShutdown(t, errChan)) + // we expect to see a deployment and a snapshot twice: + // 1. the first pair is sent when the server starts + // 2. the second pair is sent when the server shuts down + for i := 0; i < 2; i++ { + select { + case <-snapshot: + case <-time.After(testutil.WaitShort / 2): + t.Fatalf("timed out waiting for snapshot") + } + select { + case <-deployment: + case <-time.After(testutil.WaitShort / 2): + t.Fatalf("timed out waiting for deployment") + } + } + + errChan, cancelFunc = runServer(t, runServerOpts{telemetryDisabled: true, waitForTelemetryDisabledCheck: true}) + cancelFunc() + require.NoError(t, waitForShutdown(t, errChan)) + + // Since telemetry is disabled, we expect no deployment. We expect a snapshot + // with the telemetry disabled item. + require.Empty(t, deployment) + select { + case ss := <-snapshot: + require.Len(t, ss.TelemetryItems, 1) + require.Equal(t, string(telemetry.TelemetryItemKeyTelemetryEnabled), ss.TelemetryItems[0].Key) + require.Equal(t, "false", ss.TelemetryItems[0].Value) + case <-time.After(testutil.WaitShort / 2): + t.Fatalf("timed out waiting for snapshot") + } + + errChan, cancelFunc = runServer(t, runServerOpts{telemetryDisabled: true, waitForTelemetryDisabledCheck: true}) + cancelFunc() + require.NoError(t, waitForShutdown(t, errChan)) + // Since telemetry is disabled and we've already sent a snapshot, we expect no + // new deployments or snapshots. + require.Empty(t, deployment) + require.Empty(t, snapshot) +} + +func mockTelemetryServer(t *testing.T) (*url.URL, chan *telemetry.Deployment, chan *telemetry.Snapshot) { + t.Helper() + deployment := make(chan *telemetry.Deployment, 64) + snapshot := make(chan *telemetry.Snapshot, 64) + r := chi.NewRouter() + r.Post("/deployment", func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, buildinfo.Version(), r.Header.Get(telemetry.VersionHeader)) + dd := &telemetry.Deployment{} + err := json.NewDecoder(r.Body).Decode(dd) + require.NoError(t, err) + deployment <- dd + // Ensure the header is sent only after deployment is sent + w.WriteHeader(http.StatusAccepted) + }) + r.Post("/snapshot", func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, buildinfo.Version(), r.Header.Get(telemetry.VersionHeader)) + ss := &telemetry.Snapshot{} + err := json.NewDecoder(r.Body).Decode(ss) + require.NoError(t, err) + snapshot <- ss + // Ensure the header is sent only after snapshot is sent + w.WriteHeader(http.StatusAccepted) + }) + server := httptest.NewServer(r) + t.Cleanup(server.Close) + serverURL, err := url.Parse(server.URL) + require.NoError(t, err) + + return serverURL, deployment, snapshot +} diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index f16653c1c834b..329951003007b 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -3438,6 +3438,100 @@ const docTemplate = `{ } } }, + "/organizations/{organization}/settings/idpsync/groups/config": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "Update group IdP Sync config", + "operationId": "update-group-idp-sync-config", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "New config values", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchGroupIDPSyncConfigRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.GroupSyncSettings" + } + } + } + } + }, + "/organizations/{organization}/settings/idpsync/groups/mapping": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "Update group IdP Sync mapping", + "operationId": "update-group-idp-sync-mapping", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "Description of the mappings to add and remove", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchGroupIDPSyncMappingRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.GroupSyncSettings" + } + } + } + } + }, "/organizations/{organization}/settings/idpsync/roles": { "get": { "security": [ @@ -3518,6 +3612,100 @@ const docTemplate = `{ } } }, + "/organizations/{organization}/settings/idpsync/roles/config": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "Update role IdP Sync config", + "operationId": "update-role-idp-sync-config", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "New config values", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchRoleIDPSyncConfigRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.RoleSyncSettings" + } + } + } + } + }, + "/organizations/{organization}/settings/idpsync/roles/mapping": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "Update role IdP Sync mapping", + "operationId": "update-role-idp-sync-mapping", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "Description of the mappings to add and remove", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchRoleIDPSyncMappingRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.RoleSyncSettings" + } + } + } + } + }, "/organizations/{organization}/templates": { "get": { "security": [ @@ -4248,6 +4436,84 @@ const docTemplate = `{ } } }, + "/settings/idpsync/organization/config": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "Update organization IdP Sync config", + "operationId": "update-organization-idp-sync-config", + "parameters": [ + { + "description": "New config values", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchOrganizationIDPSyncConfigRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.OrganizationSyncSettings" + } + } + } + } + }, + "/settings/idpsync/organization/mapping": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "Update organization IdP Sync mapping", + "operationId": "update-organization-idp-sync-mapping", + "parameters": [ + { + "description": "Description of the mappings to add and remove", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchOrganizationIDPSyncMappingRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.OrganizationSyncSettings" + } + } + } + } + }, "/tailnet": { "get": { "security": [ @@ -12391,6 +12657,57 @@ const docTemplate = `{ } } }, + "codersdk.PatchGroupIDPSyncConfigRequest": { + "type": "object", + "properties": { + "auto_create_missing_groups": { + "type": "boolean" + }, + "field": { + "type": "string" + }, + "regex_filter": { + "$ref": "#/definitions/regexp.Regexp" + } + } + }, + "codersdk.PatchGroupIDPSyncMappingRequest": { + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + }, + "remove": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + } + } + }, "codersdk.PatchGroupRequest": { "type": "object", "properties": { @@ -12420,6 +12737,99 @@ const docTemplate = `{ } } }, + "codersdk.PatchOrganizationIDPSyncConfigRequest": { + "type": "object", + "properties": { + "assign_default": { + "type": "boolean" + }, + "field": { + "type": "string" + } + } + }, + "codersdk.PatchOrganizationIDPSyncMappingRequest": { + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + }, + "remove": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + } + } + }, + "codersdk.PatchRoleIDPSyncConfigRequest": { + "type": "object", + "properties": { + "field": { + "type": "string" + } + } + }, + "codersdk.PatchRoleIDPSyncMappingRequest": { + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + }, + "remove": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + } + } + }, "codersdk.PatchTemplateVersionRequest": { "type": "object", "properties": { diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 7859d7ffdc5e5..63b7146365d9f 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -3030,6 +3030,88 @@ } } }, + "/organizations/{organization}/settings/idpsync/groups/config": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "Update group IdP Sync config", + "operationId": "update-group-idp-sync-config", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "New config values", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchGroupIDPSyncConfigRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.GroupSyncSettings" + } + } + } + } + }, + "/organizations/{organization}/settings/idpsync/groups/mapping": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "Update group IdP Sync mapping", + "operationId": "update-group-idp-sync-mapping", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "Description of the mappings to add and remove", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchGroupIDPSyncMappingRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.GroupSyncSettings" + } + } + } + } + }, "/organizations/{organization}/settings/idpsync/roles": { "get": { "security": [ @@ -3100,6 +3182,88 @@ } } }, + "/organizations/{organization}/settings/idpsync/roles/config": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "Update role IdP Sync config", + "operationId": "update-role-idp-sync-config", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "New config values", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchRoleIDPSyncConfigRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.RoleSyncSettings" + } + } + } + } + }, + "/organizations/{organization}/settings/idpsync/roles/mapping": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "Update role IdP Sync mapping", + "operationId": "update-role-idp-sync-mapping", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Organization ID or name", + "name": "organization", + "in": "path", + "required": true + }, + { + "description": "Description of the mappings to add and remove", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchRoleIDPSyncMappingRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.RoleSyncSettings" + } + } + } + } + }, "/organizations/{organization}/templates": { "get": { "security": [ @@ -3744,6 +3908,72 @@ } } }, + "/settings/idpsync/organization/config": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "Update organization IdP Sync config", + "operationId": "update-organization-idp-sync-config", + "parameters": [ + { + "description": "New config values", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchOrganizationIDPSyncConfigRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.OrganizationSyncSettings" + } + } + } + } + }, + "/settings/idpsync/organization/mapping": { + "patch": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "Update organization IdP Sync mapping", + "operationId": "update-organization-idp-sync-mapping", + "parameters": [ + { + "description": "Description of the mappings to add and remove", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.PatchOrganizationIDPSyncMappingRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/codersdk.OrganizationSyncSettings" + } + } + } + } + }, "/tailnet": { "get": { "security": [ @@ -11172,6 +11402,57 @@ } } }, + "codersdk.PatchGroupIDPSyncConfigRequest": { + "type": "object", + "properties": { + "auto_create_missing_groups": { + "type": "boolean" + }, + "field": { + "type": "string" + }, + "regex_filter": { + "$ref": "#/definitions/regexp.Regexp" + } + } + }, + "codersdk.PatchGroupIDPSyncMappingRequest": { + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + }, + "remove": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + } + } + }, "codersdk.PatchGroupRequest": { "type": "object", "properties": { @@ -11201,6 +11482,99 @@ } } }, + "codersdk.PatchOrganizationIDPSyncConfigRequest": { + "type": "object", + "properties": { + "assign_default": { + "type": "boolean" + }, + "field": { + "type": "string" + } + } + }, + "codersdk.PatchOrganizationIDPSyncMappingRequest": { + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + }, + "remove": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + } + } + }, + "codersdk.PatchRoleIDPSyncConfigRequest": { + "type": "object", + "properties": { + "field": { + "type": "string" + } + } + }, + "codersdk.PatchRoleIDPSyncMappingRequest": { + "type": "object", + "properties": { + "add": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + }, + "remove": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gets": { + "description": "The ID of the Coder resource the user should be added to", + "type": "string" + }, + "given": { + "description": "The IdP claim the user has", + "type": "string" + } + } + } + } + } + }, "codersdk.PatchTemplateVersionRequest": { "type": "object", "properties": { diff --git a/coderd/coderd.go b/coderd/coderd.go index e273b7afdb80f..be558797389b9 100644 --- a/coderd/coderd.go +++ b/coderd/coderd.go @@ -585,6 +585,8 @@ func New(options *Options) *API { AppearanceFetcher: &api.AppearanceFetcher, BuildInfo: buildInfo, Entitlements: options.Entitlements, + Telemetry: options.Telemetry, + Logger: options.Logger.Named("site"), }) api.SiteHandler.Experiments.Store(&experiments) diff --git a/coderd/database/dbauthz/dbauthz.go b/coderd/database/dbauthz/dbauthz.go index 2e12cab9d33e0..0ba9e20216b41 100644 --- a/coderd/database/dbauthz/dbauthz.go +++ b/coderd/database/dbauthz/dbauthz.go @@ -2096,6 +2096,20 @@ func (q *querier) GetTailnetTunnelPeerIDs(ctx context.Context, srcID uuid.UUID) return q.db.GetTailnetTunnelPeerIDs(ctx, srcID) } +func (q *querier) GetTelemetryItem(ctx context.Context, key string) (database.TelemetryItem, error) { + if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceSystem); err != nil { + return database.TelemetryItem{}, err + } + return q.db.GetTelemetryItem(ctx, key) +} + +func (q *querier) GetTelemetryItems(ctx context.Context) ([]database.TelemetryItem, error) { + if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceSystem); err != nil { + return nil, err + } + return q.db.GetTelemetryItems(ctx) +} + func (q *querier) GetTemplateAppInsights(ctx context.Context, arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow, error) { if err := q.authorizeTemplateInsights(ctx, arg.TemplateIDs); err != nil { return nil, err @@ -3085,6 +3099,13 @@ func (q *querier) InsertReplica(ctx context.Context, arg database.InsertReplicaP return q.db.InsertReplica(ctx, arg) } +func (q *querier) InsertTelemetryItemIfNotExists(ctx context.Context, arg database.InsertTelemetryItemIfNotExistsParams) error { + if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil { + return err + } + return q.db.InsertTelemetryItemIfNotExists(ctx, arg) +} + func (q *querier) InsertTemplate(ctx context.Context, arg database.InsertTemplateParams) error { obj := rbac.ResourceTemplate.InOrg(arg.OrganizationID) if err := q.authorizeContext(ctx, policy.ActionCreate, obj); err != nil { @@ -4345,6 +4366,13 @@ func (q *querier) UpsertTailnetTunnel(ctx context.Context, arg database.UpsertTa return q.db.UpsertTailnetTunnel(ctx, arg) } +func (q *querier) UpsertTelemetryItem(ctx context.Context, arg database.UpsertTelemetryItemParams) error { + if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil { + return err + } + return q.db.UpsertTelemetryItem(ctx, arg) +} + func (q *querier) UpsertTemplateUsageStats(ctx context.Context) error { if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil { return err diff --git a/coderd/database/dbauthz/dbauthz_test.go b/coderd/database/dbauthz/dbauthz_test.go index fdbbcc8b34ca6..9e784fff0bf12 100644 --- a/coderd/database/dbauthz/dbauthz_test.go +++ b/coderd/database/dbauthz/dbauthz_test.go @@ -4224,6 +4224,24 @@ func (s *MethodTestSuite) TestSystemFunctions() { s.Run("GetWorkspaceModulesCreatedAfter", s.Subtest(func(db database.Store, check *expects) { check.Args(dbtime.Now()).Asserts(rbac.ResourceSystem, policy.ActionRead) })) + s.Run("GetTelemetryItem", s.Subtest(func(db database.Store, check *expects) { + check.Args("test").Asserts(rbac.ResourceSystem, policy.ActionRead).Errors(sql.ErrNoRows) + })) + s.Run("GetTelemetryItems", s.Subtest(func(db database.Store, check *expects) { + check.Args().Asserts(rbac.ResourceSystem, policy.ActionRead) + })) + s.Run("InsertTelemetryItemIfNotExists", s.Subtest(func(db database.Store, check *expects) { + check.Args(database.InsertTelemetryItemIfNotExistsParams{ + Key: "test", + Value: "value", + }).Asserts(rbac.ResourceSystem, policy.ActionCreate) + })) + s.Run("UpsertTelemetryItem", s.Subtest(func(db database.Store, check *expects) { + check.Args(database.UpsertTelemetryItemParams{ + Key: "test", + Value: "value", + }).Asserts(rbac.ResourceSystem, policy.ActionUpdate) + })) } func (s *MethodTestSuite) TestNotifications() { diff --git a/coderd/database/dbgen/dbgen.go b/coderd/database/dbgen/dbgen.go index 566540dcb2906..54e4f99959b44 100644 --- a/coderd/database/dbgen/dbgen.go +++ b/coderd/database/dbgen/dbgen.go @@ -1093,6 +1093,23 @@ func ProvisionerJobTimings(t testing.TB, db database.Store, build database.Works return timings } +func TelemetryItem(t testing.TB, db database.Store, seed database.TelemetryItem) database.TelemetryItem { + if seed.Key == "" { + seed.Key = testutil.GetRandomName(t) + } + if seed.Value == "" { + seed.Value = time.Now().Format(time.RFC3339) + } + err := db.UpsertTelemetryItem(genCtx, database.UpsertTelemetryItemParams{ + Key: seed.Key, + Value: seed.Value, + }) + require.NoError(t, err, "upsert telemetry item") + item, err := db.GetTelemetryItem(genCtx, seed.Key) + require.NoError(t, err, "get telemetry item") + return item +} + func provisionerJobTiming(t testing.TB, db database.Store, seed database.ProvisionerJobTiming) database.ProvisionerJobTiming { timing, err := db.InsertProvisionerJobTimings(genCtx, database.InsertProvisionerJobTimingsParams{ JobID: takeFirst(seed.JobID, uuid.New()), diff --git a/coderd/database/dbmem/dbmem.go b/coderd/database/dbmem/dbmem.go index 6b518c7696369..103ee1e717149 100644 --- a/coderd/database/dbmem/dbmem.go +++ b/coderd/database/dbmem/dbmem.go @@ -89,6 +89,7 @@ func New() database.Store { locks: map[int64]struct{}{}, runtimeConfig: map[string]string{}, userStatusChanges: make([]database.UserStatusChange, 0), + telemetryItems: make([]database.TelemetryItem, 0), }, } // Always start with a default org. Matching migration 198. @@ -258,6 +259,7 @@ type data struct { defaultProxyDisplayName string defaultProxyIconURL string userStatusChanges []database.UserStatusChange + telemetryItems []database.TelemetryItem } func tryPercentile(fs []float64, p float64) float64 { @@ -4330,6 +4332,23 @@ func (*FakeQuerier) GetTailnetTunnelPeerIDs(context.Context, uuid.UUID) ([]datab return nil, ErrUnimplemented } +func (q *FakeQuerier) GetTelemetryItem(_ context.Context, key string) (database.TelemetryItem, error) { + q.mutex.RLock() + defer q.mutex.RUnlock() + + for _, item := range q.telemetryItems { + if item.Key == key { + return item, nil + } + } + + return database.TelemetryItem{}, sql.ErrNoRows +} + +func (q *FakeQuerier) GetTelemetryItems(_ context.Context) ([]database.TelemetryItem, error) { + return q.telemetryItems, nil +} + func (q *FakeQuerier) GetTemplateAppInsights(ctx context.Context, arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow, error) { err := validateDatabaseType(arg) if err != nil { @@ -8120,6 +8139,30 @@ func (q *FakeQuerier) InsertReplica(_ context.Context, arg database.InsertReplic return replica, nil } +func (q *FakeQuerier) InsertTelemetryItemIfNotExists(_ context.Context, arg database.InsertTelemetryItemIfNotExistsParams) error { + err := validateDatabaseType(arg) + if err != nil { + return err + } + + q.mutex.Lock() + defer q.mutex.Unlock() + + for _, item := range q.telemetryItems { + if item.Key == arg.Key { + return nil + } + } + + q.telemetryItems = append(q.telemetryItems, database.TelemetryItem{ + Key: arg.Key, + Value: arg.Value, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }) + return nil +} + func (q *FakeQuerier) InsertTemplate(_ context.Context, arg database.InsertTemplateParams) error { if err := validateDatabaseType(arg); err != nil { return err @@ -10874,6 +10917,33 @@ func (*FakeQuerier) UpsertTailnetTunnel(_ context.Context, arg database.UpsertTa return database.TailnetTunnel{}, ErrUnimplemented } +func (q *FakeQuerier) UpsertTelemetryItem(_ context.Context, arg database.UpsertTelemetryItemParams) error { + err := validateDatabaseType(arg) + if err != nil { + return err + } + + q.mutex.Lock() + defer q.mutex.Unlock() + + for i, item := range q.telemetryItems { + if item.Key == arg.Key { + q.telemetryItems[i].Value = arg.Value + q.telemetryItems[i].UpdatedAt = time.Now() + return nil + } + } + + q.telemetryItems = append(q.telemetryItems, database.TelemetryItem{ + Key: arg.Key, + Value: arg.Value, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }) + + return nil +} + func (q *FakeQuerier) UpsertTemplateUsageStats(ctx context.Context) error { q.mutex.Lock() defer q.mutex.Unlock() diff --git a/coderd/database/dbmetrics/querymetrics.go b/coderd/database/dbmetrics/querymetrics.go index ba8a1f9cdc8a6..c0d3ed4994f9c 100644 --- a/coderd/database/dbmetrics/querymetrics.go +++ b/coderd/database/dbmetrics/querymetrics.go @@ -1134,6 +1134,20 @@ func (m queryMetricsStore) GetTailnetTunnelPeerIDs(ctx context.Context, srcID uu return r0, r1 } +func (m queryMetricsStore) GetTelemetryItem(ctx context.Context, key string) (database.TelemetryItem, error) { + start := time.Now() + r0, r1 := m.s.GetTelemetryItem(ctx, key) + m.queryLatencies.WithLabelValues("GetTelemetryItem").Observe(time.Since(start).Seconds()) + return r0, r1 +} + +func (m queryMetricsStore) GetTelemetryItems(ctx context.Context) ([]database.TelemetryItem, error) { + start := time.Now() + r0, r1 := m.s.GetTelemetryItems(ctx) + m.queryLatencies.WithLabelValues("GetTelemetryItems").Observe(time.Since(start).Seconds()) + return r0, r1 +} + func (m queryMetricsStore) GetTemplateAppInsights(ctx context.Context, arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow, error) { start := time.Now() r0, r1 := m.s.GetTemplateAppInsights(ctx, arg) @@ -1911,6 +1925,13 @@ func (m queryMetricsStore) InsertReplica(ctx context.Context, arg database.Inser return replica, err } +func (m queryMetricsStore) InsertTelemetryItemIfNotExists(ctx context.Context, arg database.InsertTelemetryItemIfNotExistsParams) error { + start := time.Now() + r0 := m.s.InsertTelemetryItemIfNotExists(ctx, arg) + m.queryLatencies.WithLabelValues("InsertTelemetryItemIfNotExists").Observe(time.Since(start).Seconds()) + return r0 +} + func (m queryMetricsStore) InsertTemplate(ctx context.Context, arg database.InsertTemplateParams) error { start := time.Now() err := m.s.InsertTemplate(ctx, arg) @@ -2772,6 +2793,13 @@ func (m queryMetricsStore) UpsertTailnetTunnel(ctx context.Context, arg database return r0, r1 } +func (m queryMetricsStore) UpsertTelemetryItem(ctx context.Context, arg database.UpsertTelemetryItemParams) error { + start := time.Now() + r0 := m.s.UpsertTelemetryItem(ctx, arg) + m.queryLatencies.WithLabelValues("UpsertTelemetryItem").Observe(time.Since(start).Seconds()) + return r0 +} + func (m queryMetricsStore) UpsertTemplateUsageStats(ctx context.Context) error { start := time.Now() r0 := m.s.UpsertTemplateUsageStats(ctx) diff --git a/coderd/database/dbmock/dbmock.go b/coderd/database/dbmock/dbmock.go index d2aa8aa6fa62e..e32834a441e6d 100644 --- a/coderd/database/dbmock/dbmock.go +++ b/coderd/database/dbmock/dbmock.go @@ -2346,6 +2346,36 @@ func (mr *MockStoreMockRecorder) GetTailnetTunnelPeerIDs(ctx, srcID any) *gomock return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTailnetTunnelPeerIDs", reflect.TypeOf((*MockStore)(nil).GetTailnetTunnelPeerIDs), ctx, srcID) } +// GetTelemetryItem mocks base method. +func (m *MockStore) GetTelemetryItem(ctx context.Context, key string) (database.TelemetryItem, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTelemetryItem", ctx, key) + ret0, _ := ret[0].(database.TelemetryItem) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTelemetryItem indicates an expected call of GetTelemetryItem. +func (mr *MockStoreMockRecorder) GetTelemetryItem(ctx, key any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTelemetryItem", reflect.TypeOf((*MockStore)(nil).GetTelemetryItem), ctx, key) +} + +// GetTelemetryItems mocks base method. +func (m *MockStore) GetTelemetryItems(ctx context.Context) ([]database.TelemetryItem, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTelemetryItems", ctx) + ret0, _ := ret[0].([]database.TelemetryItem) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTelemetryItems indicates an expected call of GetTelemetryItems. +func (mr *MockStoreMockRecorder) GetTelemetryItems(ctx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTelemetryItems", reflect.TypeOf((*MockStore)(nil).GetTelemetryItems), ctx) +} + // GetTemplateAppInsights mocks base method. func (m *MockStore) GetTemplateAppInsights(ctx context.Context, arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow, error) { m.ctrl.T.Helper() @@ -4051,6 +4081,20 @@ func (mr *MockStoreMockRecorder) InsertReplica(ctx, arg any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InsertReplica", reflect.TypeOf((*MockStore)(nil).InsertReplica), ctx, arg) } +// InsertTelemetryItemIfNotExists mocks base method. +func (m *MockStore) InsertTelemetryItemIfNotExists(ctx context.Context, arg database.InsertTelemetryItemIfNotExistsParams) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "InsertTelemetryItemIfNotExists", ctx, arg) + ret0, _ := ret[0].(error) + return ret0 +} + +// InsertTelemetryItemIfNotExists indicates an expected call of InsertTelemetryItemIfNotExists. +func (mr *MockStoreMockRecorder) InsertTelemetryItemIfNotExists(ctx, arg any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InsertTelemetryItemIfNotExists", reflect.TypeOf((*MockStore)(nil).InsertTelemetryItemIfNotExists), ctx, arg) +} + // InsertTemplate mocks base method. func (m *MockStore) InsertTemplate(ctx context.Context, arg database.InsertTemplateParams) error { m.ctrl.T.Helper() @@ -5861,6 +5905,20 @@ func (mr *MockStoreMockRecorder) UpsertTailnetTunnel(ctx, arg any) *gomock.Call return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertTailnetTunnel", reflect.TypeOf((*MockStore)(nil).UpsertTailnetTunnel), ctx, arg) } +// UpsertTelemetryItem mocks base method. +func (m *MockStore) UpsertTelemetryItem(ctx context.Context, arg database.UpsertTelemetryItemParams) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpsertTelemetryItem", ctx, arg) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpsertTelemetryItem indicates an expected call of UpsertTelemetryItem. +func (mr *MockStoreMockRecorder) UpsertTelemetryItem(ctx, arg any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertTelemetryItem", reflect.TypeOf((*MockStore)(nil).UpsertTelemetryItem), ctx, arg) +} + // UpsertTemplateUsageStats mocks base method. func (m *MockStore) UpsertTemplateUsageStats(ctx context.Context) error { m.ctrl.T.Helper() diff --git a/coderd/database/dump.sql b/coderd/database/dump.sql index c241548e166c2..9cc38adf23b6b 100644 --- a/coderd/database/dump.sql +++ b/coderd/database/dump.sql @@ -1164,6 +1164,13 @@ CREATE TABLE tailnet_tunnels ( updated_at timestamp with time zone NOT NULL ); +CREATE TABLE telemetry_items ( + key text NOT NULL, + value text NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL +); + CREATE TABLE template_usage_stats ( start_time timestamp with time zone NOT NULL, end_time timestamp with time zone NOT NULL, @@ -2026,6 +2033,9 @@ ALTER TABLE ONLY tailnet_peers ALTER TABLE ONLY tailnet_tunnels ADD CONSTRAINT tailnet_tunnels_pkey PRIMARY KEY (coordinator_id, src_id, dst_id); +ALTER TABLE ONLY telemetry_items + ADD CONSTRAINT telemetry_items_pkey PRIMARY KEY (key); + ALTER TABLE ONLY template_usage_stats ADD CONSTRAINT template_usage_stats_pkey PRIMARY KEY (start_time, template_id, user_id); diff --git a/coderd/database/migrations/000288_telemetry_items.down.sql b/coderd/database/migrations/000288_telemetry_items.down.sql new file mode 100644 index 0000000000000..118188f519e76 --- /dev/null +++ b/coderd/database/migrations/000288_telemetry_items.down.sql @@ -0,0 +1 @@ +DROP TABLE telemetry_items; diff --git a/coderd/database/migrations/000288_telemetry_items.up.sql b/coderd/database/migrations/000288_telemetry_items.up.sql new file mode 100644 index 0000000000000..40279827788d6 --- /dev/null +++ b/coderd/database/migrations/000288_telemetry_items.up.sql @@ -0,0 +1,6 @@ +CREATE TABLE telemetry_items ( + key TEXT NOT NULL PRIMARY KEY, + value TEXT NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), + updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() +); diff --git a/coderd/database/migrations/testdata/fixtures/000288_telemetry_items.up.sql b/coderd/database/migrations/testdata/fixtures/000288_telemetry_items.up.sql new file mode 100644 index 0000000000000..0189558292915 --- /dev/null +++ b/coderd/database/migrations/testdata/fixtures/000288_telemetry_items.up.sql @@ -0,0 +1,4 @@ +INSERT INTO + telemetry_items (key, value) +VALUES + ('example_key', 'example_value'); diff --git a/coderd/database/models.go b/coderd/database/models.go index b0a487c192793..9769bde33052b 100644 --- a/coderd/database/models.go +++ b/coderd/database/models.go @@ -2787,6 +2787,13 @@ type TailnetTunnel struct { UpdatedAt time.Time `db:"updated_at" json:"updated_at"` } +type TelemetryItem struct { + Key string `db:"key" json:"key"` + Value string `db:"value" json:"value"` + CreatedAt time.Time `db:"created_at" json:"created_at"` + UpdatedAt time.Time `db:"updated_at" json:"updated_at"` +} + // Joins in the display name information such as username, avatar, and organization name. type Template struct { ID uuid.UUID `db:"id" json:"id"` diff --git a/coderd/database/querier.go b/coderd/database/querier.go index 132a7aea75bdd..1fa83208a2218 100644 --- a/coderd/database/querier.go +++ b/coderd/database/querier.go @@ -224,6 +224,8 @@ type sqlcQuerier interface { GetTailnetPeers(ctx context.Context, id uuid.UUID) ([]TailnetPeer, error) GetTailnetTunnelPeerBindings(ctx context.Context, srcID uuid.UUID) ([]GetTailnetTunnelPeerBindingsRow, error) GetTailnetTunnelPeerIDs(ctx context.Context, srcID uuid.UUID) ([]GetTailnetTunnelPeerIDsRow, error) + GetTelemetryItem(ctx context.Context, key string) (TelemetryItem, error) + GetTelemetryItems(ctx context.Context) ([]TelemetryItem, error) // GetTemplateAppInsights returns the aggregate usage of each app in a given // timeframe. The result can be filtered on template_ids, meaning only user data // from workspaces based on those templates will be included. @@ -404,6 +406,7 @@ type sqlcQuerier interface { InsertProvisionerJobTimings(ctx context.Context, arg InsertProvisionerJobTimingsParams) ([]ProvisionerJobTiming, error) InsertProvisionerKey(ctx context.Context, arg InsertProvisionerKeyParams) (ProvisionerKey, error) InsertReplica(ctx context.Context, arg InsertReplicaParams) (Replica, error) + InsertTelemetryItemIfNotExists(ctx context.Context, arg InsertTelemetryItemIfNotExistsParams) error InsertTemplate(ctx context.Context, arg InsertTemplateParams) error InsertTemplateVersion(ctx context.Context, arg InsertTemplateVersionParams) error InsertTemplateVersionParameter(ctx context.Context, arg InsertTemplateVersionParameterParams) (TemplateVersionParameter, error) @@ -546,6 +549,7 @@ type sqlcQuerier interface { UpsertTailnetCoordinator(ctx context.Context, id uuid.UUID) (TailnetCoordinator, error) UpsertTailnetPeer(ctx context.Context, arg UpsertTailnetPeerParams) (TailnetPeer, error) UpsertTailnetTunnel(ctx context.Context, arg UpsertTailnetTunnelParams) (TailnetTunnel, error) + UpsertTelemetryItem(ctx context.Context, arg UpsertTelemetryItemParams) error // This query aggregates the workspace_agent_stats and workspace_app_stats data // into a single table for efficient storage and querying. Half-hour buckets are // used to store the data, and the minutes are summed for each user and template diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index 38dbf1fbfd0bb..86db8fb66956a 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -8702,6 +8702,86 @@ func (q *sqlQuerier) UpsertTailnetTunnel(ctx context.Context, arg UpsertTailnetT return i, err } +const getTelemetryItem = `-- name: GetTelemetryItem :one +SELECT key, value, created_at, updated_at FROM telemetry_items WHERE key = $1 +` + +func (q *sqlQuerier) GetTelemetryItem(ctx context.Context, key string) (TelemetryItem, error) { + row := q.db.QueryRowContext(ctx, getTelemetryItem, key) + var i TelemetryItem + err := row.Scan( + &i.Key, + &i.Value, + &i.CreatedAt, + &i.UpdatedAt, + ) + return i, err +} + +const getTelemetryItems = `-- name: GetTelemetryItems :many +SELECT key, value, created_at, updated_at FROM telemetry_items +` + +func (q *sqlQuerier) GetTelemetryItems(ctx context.Context) ([]TelemetryItem, error) { + rows, err := q.db.QueryContext(ctx, getTelemetryItems) + if err != nil { + return nil, err + } + defer rows.Close() + var items []TelemetryItem + for rows.Next() { + var i TelemetryItem + if err := rows.Scan( + &i.Key, + &i.Value, + &i.CreatedAt, + &i.UpdatedAt, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + +const insertTelemetryItemIfNotExists = `-- name: InsertTelemetryItemIfNotExists :exec +INSERT INTO telemetry_items (key, value) +VALUES ($1, $2) +ON CONFLICT (key) DO NOTHING +` + +type InsertTelemetryItemIfNotExistsParams struct { + Key string `db:"key" json:"key"` + Value string `db:"value" json:"value"` +} + +func (q *sqlQuerier) InsertTelemetryItemIfNotExists(ctx context.Context, arg InsertTelemetryItemIfNotExistsParams) error { + _, err := q.db.ExecContext(ctx, insertTelemetryItemIfNotExists, arg.Key, arg.Value) + return err +} + +const upsertTelemetryItem = `-- name: UpsertTelemetryItem :exec +INSERT INTO telemetry_items (key, value) +VALUES ($1, $2) +ON CONFLICT (key) DO UPDATE SET value = $2, updated_at = NOW() WHERE telemetry_items.key = $1 +` + +type UpsertTelemetryItemParams struct { + Key string `db:"key" json:"key"` + Value string `db:"value" json:"value"` +} + +func (q *sqlQuerier) UpsertTelemetryItem(ctx context.Context, arg UpsertTelemetryItemParams) error { + _, err := q.db.ExecContext(ctx, upsertTelemetryItem, arg.Key, arg.Value) + return err +} + const getTemplateAverageBuildTime = `-- name: GetTemplateAverageBuildTime :one WITH build_times AS ( SELECT diff --git a/coderd/database/queries/telemetryitems.sql b/coderd/database/queries/telemetryitems.sql new file mode 100644 index 0000000000000..7b7349db59943 --- /dev/null +++ b/coderd/database/queries/telemetryitems.sql @@ -0,0 +1,15 @@ +-- name: InsertTelemetryItemIfNotExists :exec +INSERT INTO telemetry_items (key, value) +VALUES ($1, $2) +ON CONFLICT (key) DO NOTHING; + +-- name: GetTelemetryItem :one +SELECT * FROM telemetry_items WHERE key = $1; + +-- name: UpsertTelemetryItem :exec +INSERT INTO telemetry_items (key, value) +VALUES ($1, $2) +ON CONFLICT (key) DO UPDATE SET value = $2, updated_at = NOW() WHERE telemetry_items.key = $1; + +-- name: GetTelemetryItems :many +SELECT * FROM telemetry_items; diff --git a/coderd/database/unique_constraint.go b/coderd/database/unique_constraint.go index f253aa98ec266..2e4b813e438b8 100644 --- a/coderd/database/unique_constraint.go +++ b/coderd/database/unique_constraint.go @@ -55,6 +55,7 @@ const ( UniqueTailnetCoordinatorsPkey UniqueConstraint = "tailnet_coordinators_pkey" // ALTER TABLE ONLY tailnet_coordinators ADD CONSTRAINT tailnet_coordinators_pkey PRIMARY KEY (id); UniqueTailnetPeersPkey UniqueConstraint = "tailnet_peers_pkey" // ALTER TABLE ONLY tailnet_peers ADD CONSTRAINT tailnet_peers_pkey PRIMARY KEY (id, coordinator_id); UniqueTailnetTunnelsPkey UniqueConstraint = "tailnet_tunnels_pkey" // ALTER TABLE ONLY tailnet_tunnels ADD CONSTRAINT tailnet_tunnels_pkey PRIMARY KEY (coordinator_id, src_id, dst_id); + UniqueTelemetryItemsPkey UniqueConstraint = "telemetry_items_pkey" // ALTER TABLE ONLY telemetry_items ADD CONSTRAINT telemetry_items_pkey PRIMARY KEY (key); UniqueTemplateUsageStatsPkey UniqueConstraint = "template_usage_stats_pkey" // ALTER TABLE ONLY template_usage_stats ADD CONSTRAINT template_usage_stats_pkey PRIMARY KEY (start_time, template_id, user_id); UniqueTemplateVersionParametersTemplateVersionIDNameKey UniqueConstraint = "template_version_parameters_template_version_id_name_key" // ALTER TABLE ONLY template_version_parameters ADD CONSTRAINT template_version_parameters_template_version_id_name_key UNIQUE (template_version_id, name); UniqueTemplateVersionVariablesTemplateVersionIDNameKey UniqueConstraint = "template_version_variables_template_version_id_name_key" // ALTER TABLE ONLY template_version_variables ADD CONSTRAINT template_version_variables_template_version_id_name_key UNIQUE (template_version_id, name); diff --git a/coderd/idpsync/group.go b/coderd/idpsync/group.go index c14b7655e7e20..4524284260359 100644 --- a/coderd/idpsync/group.go +++ b/coderd/idpsync/group.go @@ -30,7 +30,7 @@ func (AGPLIDPSync) GroupSyncEntitled() bool { return false } -func (s AGPLIDPSync) UpdateGroupSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings GroupSyncSettings) error { +func (s AGPLIDPSync) UpdateGroupSyncSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings GroupSyncSettings) error { orgResolver := s.Manager.OrganizationResolver(db, orgID) err := s.SyncSettings.Group.SetRuntimeValue(ctx, orgResolver, &settings) if err != nil { diff --git a/coderd/idpsync/idpsync.go b/coderd/idpsync/idpsync.go index e936bada73752..4da101635bd23 100644 --- a/coderd/idpsync/idpsync.go +++ b/coderd/idpsync/idpsync.go @@ -26,7 +26,7 @@ import ( type IDPSync interface { OrganizationSyncEntitled() bool OrganizationSyncSettings(ctx context.Context, db database.Store) (*OrganizationSyncSettings, error) - UpdateOrganizationSettings(ctx context.Context, db database.Store, settings OrganizationSyncSettings) error + UpdateOrganizationSyncSettings(ctx context.Context, db database.Store, settings OrganizationSyncSettings) error // OrganizationSyncEnabled returns true if all OIDC users are assigned // to organizations via org sync settings. // This is used to know when to disable manual org membership assignment. @@ -48,7 +48,7 @@ type IDPSync interface { // on the settings used by IDPSync. This entry is thread safe and can be // accessed concurrently. The settings are stored in the database. GroupSyncSettings(ctx context.Context, orgID uuid.UUID, db database.Store) (*GroupSyncSettings, error) - UpdateGroupSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings GroupSyncSettings) error + UpdateGroupSyncSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings GroupSyncSettings) error // RoleSyncEntitled returns true if the deployment is entitled to role syncing. RoleSyncEntitled() bool @@ -61,7 +61,7 @@ type IDPSync interface { // RoleSyncSettings is similar to GroupSyncSettings. See GroupSyncSettings for // rational. RoleSyncSettings(ctx context.Context, orgID uuid.UUID, db database.Store) (*RoleSyncSettings, error) - UpdateRoleSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings RoleSyncSettings) error + UpdateRoleSyncSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings RoleSyncSettings) error // ParseRoleClaims takes claims from an OIDC provider, and returns the params // for role syncing. Most of the logic happens in SyncRoles. ParseRoleClaims(ctx context.Context, mergedClaims jwt.MapClaims) (RoleParams, *HTTPError) @@ -70,6 +70,9 @@ type IDPSync interface { SyncRoles(ctx context.Context, db database.Store, user database.User, params RoleParams) error } +// AGPLIDPSync implements the IDPSync interface +var _ IDPSync = AGPLIDPSync{} + // AGPLIDPSync is the configuration for syncing user information from an external // IDP. All related code to syncing user information should be in this package. type AGPLIDPSync struct { diff --git a/coderd/idpsync/organization.go b/coderd/idpsync/organization.go index 12d79bc047776..6f755529cdde7 100644 --- a/coderd/idpsync/organization.go +++ b/coderd/idpsync/organization.go @@ -34,7 +34,7 @@ func (AGPLIDPSync) OrganizationSyncEnabled(_ context.Context, _ database.Store) return false } -func (s AGPLIDPSync) UpdateOrganizationSettings(ctx context.Context, db database.Store, settings OrganizationSyncSettings) error { +func (s AGPLIDPSync) UpdateOrganizationSyncSettings(ctx context.Context, db database.Store, settings OrganizationSyncSettings) error { rlv := s.Manager.Resolver(db) err := s.SyncSettings.Organization.SetRuntimeValue(ctx, rlv, &settings) if err != nil { @@ -45,6 +45,8 @@ func (s AGPLIDPSync) UpdateOrganizationSettings(ctx context.Context, db database } func (s AGPLIDPSync) OrganizationSyncSettings(ctx context.Context, db database.Store) (*OrganizationSyncSettings, error) { + // If this logic is ever updated, make sure to update the corresponding + // checkIDPOrgSync in coderd/telemetry/telemetry.go. rlv := s.Manager.Resolver(db) orgSettings, err := s.SyncSettings.Organization.Resolve(ctx, rlv) if err != nil { diff --git a/coderd/idpsync/role.go b/coderd/idpsync/role.go index cf768ee0eb05d..5cb0ac172581c 100644 --- a/coderd/idpsync/role.go +++ b/coderd/idpsync/role.go @@ -42,7 +42,7 @@ func (AGPLIDPSync) SiteRoleSyncEnabled() bool { return false } -func (s AGPLIDPSync) UpdateRoleSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings RoleSyncSettings) error { +func (s AGPLIDPSync) UpdateRoleSyncSettings(ctx context.Context, orgID uuid.UUID, db database.Store, settings RoleSyncSettings) error { orgResolver := s.Manager.OrganizationResolver(db, orgID) err := s.SyncSettings.Role.SetRuntimeValue(ctx, orgResolver, &settings) if err != nil { diff --git a/coderd/runtimeconfig/resolver.go b/coderd/runtimeconfig/resolver.go index d899680f034a4..5d06a156bfb41 100644 --- a/coderd/runtimeconfig/resolver.go +++ b/coderd/runtimeconfig/resolver.go @@ -12,6 +12,9 @@ import ( "github.com/coder/coder/v2/coderd/database" ) +// NoopResolver implements the Resolver interface +var _ Resolver = &NoopResolver{} + // NoopResolver is a useful test device. type NoopResolver struct{} @@ -31,6 +34,9 @@ func (NoopResolver) DeleteRuntimeConfig(context.Context, string) error { return ErrEntryNotFound } +// StoreResolver implements the Resolver interface +var _ Resolver = &StoreResolver{} + // StoreResolver uses the database as the underlying store for runtime settings. type StoreResolver struct { db Store diff --git a/coderd/telemetry/telemetry.go b/coderd/telemetry/telemetry.go index 233450c43d943..78819b0c65462 100644 --- a/coderd/telemetry/telemetry.go +++ b/coderd/telemetry/telemetry.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "crypto/sha256" + "database/sql" "encoding/json" "errors" "fmt" @@ -14,6 +15,7 @@ import ( "regexp" "runtime" "slices" + "strconv" "strings" "sync" "time" @@ -41,6 +43,7 @@ const ( ) type Options struct { + Disabled bool Database database.Store Logger slog.Logger // URL is an endpoint to direct telemetry towards! @@ -115,8 +118,8 @@ type remoteReporter struct { shutdownAt *time.Time } -func (*remoteReporter) Enabled() bool { - return true +func (r *remoteReporter) Enabled() bool { + return !r.options.Disabled } func (r *remoteReporter) Report(snapshot *Snapshot) { @@ -160,10 +163,12 @@ func (r *remoteReporter) Close() { close(r.closed) now := dbtime.Now() r.shutdownAt = &now - // Report a final collection of telemetry prior to close! - // This could indicate final actions a user has taken, and - // the time the deployment was shutdown. - r.reportWithDeployment() + if r.Enabled() { + // Report a final collection of telemetry prior to close! + // This could indicate final actions a user has taken, and + // the time the deployment was shutdown. + r.reportWithDeployment() + } r.closeFunc() } @@ -176,7 +181,74 @@ func (r *remoteReporter) isClosed() bool { } } +// See the corresponding test in telemetry_test.go for a truth table. +func ShouldReportTelemetryDisabled(recordedTelemetryEnabled *bool, telemetryEnabled bool) bool { + return recordedTelemetryEnabled != nil && *recordedTelemetryEnabled && !telemetryEnabled +} + +// RecordTelemetryStatus records the telemetry status in the database. +// If the status changed from enabled to disabled, returns a snapshot to +// be sent to the telemetry server. +func RecordTelemetryStatus( //nolint:revive + ctx context.Context, + logger slog.Logger, + db database.Store, + telemetryEnabled bool, +) (*Snapshot, error) { + item, err := db.GetTelemetryItem(ctx, string(TelemetryItemKeyTelemetryEnabled)) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + return nil, xerrors.Errorf("get telemetry enabled: %w", err) + } + var recordedTelemetryEnabled *bool + if !errors.Is(err, sql.ErrNoRows) { + value, err := strconv.ParseBool(item.Value) + if err != nil { + logger.Debug(ctx, "parse telemetry enabled", slog.Error(err)) + } + // If ParseBool fails, value will default to false. + // This may happen if an admin manually edits the telemetry item + // in the database. + recordedTelemetryEnabled = &value + } + + if err := db.UpsertTelemetryItem(ctx, database.UpsertTelemetryItemParams{ + Key: string(TelemetryItemKeyTelemetryEnabled), + Value: strconv.FormatBool(telemetryEnabled), + }); err != nil { + return nil, xerrors.Errorf("upsert telemetry enabled: %w", err) + } + + shouldReport := ShouldReportTelemetryDisabled(recordedTelemetryEnabled, telemetryEnabled) + if !shouldReport { + return nil, nil //nolint:nilnil + } + // If any of the following calls fail, we will never report that telemetry changed + // from enabled to disabled. This is okay. We only want to ping the telemetry server + // once, and never again. If that attempt fails, so be it. + item, err = db.GetTelemetryItem(ctx, string(TelemetryItemKeyTelemetryEnabled)) + if err != nil { + return nil, xerrors.Errorf("get telemetry enabled after upsert: %w", err) + } + return &Snapshot{ + TelemetryItems: []TelemetryItem{ + ConvertTelemetryItem(item), + }, + }, nil +} + func (r *remoteReporter) runSnapshotter() { + telemetryDisabledSnapshot, err := RecordTelemetryStatus(r.ctx, r.options.Logger, r.options.Database, r.Enabled()) + if err != nil { + r.options.Logger.Debug(r.ctx, "record and maybe report telemetry status", slog.Error(err)) + } + if telemetryDisabledSnapshot != nil { + r.reportSync(telemetryDisabledSnapshot) + } + r.options.Logger.Debug(r.ctx, "finished telemetry status check") + if !r.Enabled() { + return + } + first := true ticker := time.NewTicker(r.options.SnapshotFrequency) defer ticker.Stop() @@ -244,6 +316,11 @@ func (r *remoteReporter) deployment() error { return xerrors.Errorf("install source must be <=64 chars: %s", installSource) } + idpOrgSync, err := checkIDPOrgSync(r.ctx, r.options.Database, r.options.DeploymentConfig) + if err != nil { + r.options.Logger.Debug(r.ctx, "check IDP org sync", slog.Error(err)) + } + data, err := json.Marshal(&Deployment{ ID: r.options.DeploymentID, Architecture: sysInfo.Architecture, @@ -263,6 +340,7 @@ func (r *remoteReporter) deployment() error { MachineID: sysInfo.UniqueID, StartedAt: r.startedAt, ShutdownAt: r.shutdownAt, + IDPOrgSync: &idpOrgSync, }) if err != nil { return xerrors.Errorf("marshal deployment: %w", err) @@ -284,6 +362,45 @@ func (r *remoteReporter) deployment() error { return nil } +// idpOrgSyncConfig is a subset of +// https://github.com/coder/coder/blob/5c6578d84e2940b9cfd04798c45e7c8042c3fe0e/coderd/idpsync/organization.go#L148 +type idpOrgSyncConfig struct { + Field string `json:"field"` +} + +// checkIDPOrgSync inspects the server flags and the runtime config. It's based on +// the OrganizationSyncEnabled function from enterprise/coderd/enidpsync/organizations.go. +// It has one distinct difference: it doesn't check if the license entitles to the +// feature, it only checks if the feature is configured. +// +// The above function is not used because it's very hard to make it available in +// the telemetry package due to coder/coder package structure and initialization +// order of the coder server. +// +// We don't check license entitlements because it's also hard to do from the +// telemetry package, and the config check should be sufficient for telemetry purposes. +// +// While this approach duplicates code, it's simpler than the alternative. +// +// See https://github.com/coder/coder/pull/16323 for more details. +func checkIDPOrgSync(ctx context.Context, db database.Store, values *codersdk.DeploymentValues) (bool, error) { + // key based on https://github.com/coder/coder/blob/5c6578d84e2940b9cfd04798c45e7c8042c3fe0e/coderd/idpsync/idpsync.go#L168 + syncConfigRaw, err := db.GetRuntimeConfig(ctx, "organization-sync-settings") + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + // If the runtime config is not set, we check if the deployment config + // has the organization field set. + return values != nil && values.OIDC.OrganizationField != "", nil + } + return false, xerrors.Errorf("get runtime config: %w", err) + } + syncConfig := idpOrgSyncConfig{} + if err := json.Unmarshal([]byte(syncConfigRaw), &syncConfig); err != nil { + return false, xerrors.Errorf("unmarshal runtime config: %w", err) + } + return syncConfig.Field != "", nil +} + // createSnapshot collects a full snapshot from the database. func (r *remoteReporter) createSnapshot() (*Snapshot, error) { var ( @@ -518,6 +635,32 @@ func (r *remoteReporter) createSnapshot() (*Snapshot, error) { } return nil }) + eg.Go(func() error { + // Warning: When an organization is deleted, it's completely removed from + // the database. It will no longer be reported, and there will be no other + // indicator that it was deleted. This requires special handling when + // interpreting the telemetry data later. + orgs, err := r.options.Database.GetOrganizations(r.ctx, database.GetOrganizationsParams{}) + if err != nil { + return xerrors.Errorf("get organizations: %w", err) + } + snapshot.Organizations = make([]Organization, 0, len(orgs)) + for _, org := range orgs { + snapshot.Organizations = append(snapshot.Organizations, ConvertOrganization(org)) + } + return nil + }) + eg.Go(func() error { + items, err := r.options.Database.GetTelemetryItems(ctx) + if err != nil { + return xerrors.Errorf("get telemetry items: %w", err) + } + snapshot.TelemetryItems = make([]TelemetryItem, 0, len(items)) + for _, item := range items { + snapshot.TelemetryItems = append(snapshot.TelemetryItems, ConvertTelemetryItem(item)) + } + return nil + }) err := eg.Wait() if err != nil { @@ -916,6 +1059,23 @@ func ConvertExternalProvisioner(id uuid.UUID, tags map[string]string, provisione } } +func ConvertOrganization(org database.Organization) Organization { + return Organization{ + ID: org.ID, + CreatedAt: org.CreatedAt, + IsDefault: org.IsDefault, + } +} + +func ConvertTelemetryItem(item database.TelemetryItem) TelemetryItem { + return TelemetryItem{ + Key: item.Key, + Value: item.Value, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + } +} + // Snapshot represents a point-in-time anonymized database dump. // Data is aggregated by latest on the server-side, so partial data // can be sent without issue. @@ -942,6 +1102,8 @@ type Snapshot struct { WorkspaceModules []WorkspaceModule `json:"workspace_modules"` Workspaces []Workspace `json:"workspaces"` NetworkEvents []NetworkEvent `json:"network_events"` + Organizations []Organization `json:"organizations"` + TelemetryItems []TelemetryItem `json:"telemetry_items"` } // Deployment contains information about the host running Coder. @@ -964,6 +1126,9 @@ type Deployment struct { MachineID string `json:"machine_id"` StartedAt time.Time `json:"started_at"` ShutdownAt *time.Time `json:"shutdown_at"` + // While IDPOrgSync will always be set, it's nullable to make + // the struct backwards compatible with older coder versions. + IDPOrgSync *bool `json:"idp_org_sync"` } type APIKey struct { @@ -1457,8 +1622,36 @@ func NetworkEventFromProto(proto *tailnetproto.TelemetryEvent) (NetworkEvent, er }, nil } +type Organization struct { + ID uuid.UUID `json:"id"` + IsDefault bool `json:"is_default"` + CreatedAt time.Time `json:"created_at"` +} + +type telemetryItemKey string + +// The comment below gets rid of the warning that the name "TelemetryItemKey" has +// the "Telemetry" prefix, and that stutters when you use it outside the package +// (telemetry.TelemetryItemKey...). "TelemetryItem" is the name of a database table, +// so it makes sense to use the "Telemetry" prefix. +// +//revive:disable:exported +const ( + TelemetryItemKeyHTMLFirstServedAt telemetryItemKey = "html_first_served_at" + TelemetryItemKeyTelemetryEnabled telemetryItemKey = "telemetry_enabled" +) + +type TelemetryItem struct { + Key string `json:"key"` + Value string `json:"value"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + type noopReporter struct{} -func (*noopReporter) Report(_ *Snapshot) {} -func (*noopReporter) Enabled() bool { return false } -func (*noopReporter) Close() {} +func (*noopReporter) Report(_ *Snapshot) {} +func (*noopReporter) Enabled() bool { return false } +func (*noopReporter) Close() {} +func (*noopReporter) RunSnapshotter() {} +func (*noopReporter) ReportDisabledIfNeeded() error { return nil } diff --git a/coderd/telemetry/telemetry_test.go b/coderd/telemetry/telemetry_test.go index e0cbfd1cfa193..29fcb644fc88f 100644 --- a/coderd/telemetry/telemetry_test.go +++ b/coderd/telemetry/telemetry_test.go @@ -22,7 +22,10 @@ import ( "github.com/coder/coder/v2/coderd/database/dbmem" "github.com/coder/coder/v2/coderd/database/dbtestutil" "github.com/coder/coder/v2/coderd/database/dbtime" + "github.com/coder/coder/v2/coderd/idpsync" + "github.com/coder/coder/v2/coderd/runtimeconfig" "github.com/coder/coder/v2/coderd/telemetry" + "github.com/coder/coder/v2/codersdk" "github.com/coder/coder/v2/testutil" ) @@ -40,27 +43,42 @@ func TestTelemetry(t *testing.T) { db := dbmem.New() ctx := testutil.Context(t, testutil.WaitMedium) + + org, err := db.GetDefaultOrganization(ctx) + require.NoError(t, err) + _, _ = dbgen.APIKey(t, db, database.APIKey{}) _ = dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{ - Provisioner: database.ProvisionerTypeTerraform, - StorageMethod: database.ProvisionerStorageMethodFile, - Type: database.ProvisionerJobTypeTemplateVersionDryRun, + Provisioner: database.ProvisionerTypeTerraform, + StorageMethod: database.ProvisionerStorageMethodFile, + Type: database.ProvisionerJobTypeTemplateVersionDryRun, + OrganizationID: org.ID, }) _ = dbgen.Template(t, db, database.Template{ - Provisioner: database.ProvisionerTypeTerraform, + Provisioner: database.ProvisionerTypeTerraform, + OrganizationID: org.ID, }) sourceExampleID := uuid.NewString() _ = dbgen.TemplateVersion(t, db, database.TemplateVersion{ SourceExampleID: sql.NullString{String: sourceExampleID, Valid: true}, + OrganizationID: org.ID, + }) + _ = dbgen.TemplateVersion(t, db, database.TemplateVersion{ + OrganizationID: org.ID, }) - _ = dbgen.TemplateVersion(t, db, database.TemplateVersion{}) user := dbgen.User(t, db, database.User{}) - _ = dbgen.Workspace(t, db, database.WorkspaceTable{}) + _ = dbgen.Workspace(t, db, database.WorkspaceTable{ + OrganizationID: org.ID, + }) _ = dbgen.WorkspaceApp(t, db, database.WorkspaceApp{ SharingLevel: database.AppSharingLevelOwner, Health: database.WorkspaceAppHealthDisabled, OpenIn: database.WorkspaceAppOpenInSlimWindow, }) + _ = dbgen.TelemetryItem(t, db, database.TelemetryItem{ + Key: string(telemetry.TelemetryItemKeyHTMLFirstServedAt), + Value: time.Now().Format(time.RFC3339), + }) group := dbgen.Group(t, db, database.Group{}) _ = dbgen.GroupMember(t, db, database.GroupMemberTable{UserID: user.ID, GroupID: group.ID}) wsagent := dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{}) @@ -112,7 +130,9 @@ func TestTelemetry(t *testing.T) { require.Len(t, snapshot.WorkspaceAgentStats, 1) require.Len(t, snapshot.WorkspaceProxies, 1) require.Len(t, snapshot.WorkspaceModules, 1) - + require.Len(t, snapshot.Organizations, 1) + // We create one item manually above. The other is TelemetryEnabled, created by the snapshotter. + require.Len(t, snapshot.TelemetryItems, 2) wsa := snapshot.WorkspaceAgents[0] require.Len(t, wsa.Subsystems, 2) require.Equal(t, string(database.WorkspaceAgentSubsystemEnvbox), wsa.Subsystems[0]) @@ -128,6 +148,19 @@ func TestTelemetry(t *testing.T) { }) require.Equal(t, tvs[0].SourceExampleID, &sourceExampleID) require.Nil(t, tvs[1].SourceExampleID) + + for _, entity := range snapshot.Workspaces { + require.Equal(t, entity.OrganizationID, org.ID) + } + for _, entity := range snapshot.ProvisionerJobs { + require.Equal(t, entity.OrganizationID, org.ID) + } + for _, entity := range snapshot.TemplateVersions { + require.Equal(t, entity.OrganizationID, org.ID) + } + for _, entity := range snapshot.Templates { + require.Equal(t, entity.OrganizationID, org.ID) + } }) t.Run("HashedEmail", func(t *testing.T) { t.Parallel() @@ -243,6 +276,41 @@ func TestTelemetry(t *testing.T) { require.Equal(t, c.want, telemetry.GetModuleSourceType(c.source)) } }) + t.Run("IDPOrgSync", func(t *testing.T) { + t.Parallel() + ctx := testutil.Context(t, testutil.WaitMedium) + db, _ := dbtestutil.NewDB(t) + + // 1. No org sync settings + deployment, _ := collectSnapshot(t, db, nil) + require.False(t, *deployment.IDPOrgSync) + + // 2. Org sync settings set in server flags + deployment, _ = collectSnapshot(t, db, func(opts telemetry.Options) telemetry.Options { + opts.DeploymentConfig = &codersdk.DeploymentValues{ + OIDC: codersdk.OIDCConfig{ + OrganizationField: "organizations", + }, + } + return opts + }) + require.True(t, *deployment.IDPOrgSync) + + // 3. Org sync settings set in runtime config + org, err := db.GetDefaultOrganization(ctx) + require.NoError(t, err) + sync := idpsync.NewAGPLSync(testutil.Logger(t), runtimeconfig.NewManager(), idpsync.DeploymentSyncSettings{}) + err = sync.UpdateOrganizationSyncSettings(ctx, db, idpsync.OrganizationSyncSettings{ + Field: "organizations", + Mapping: map[string][]uuid.UUID{ + "first": {org.ID}, + }, + AssignDefault: true, + }) + require.NoError(t, err) + deployment, _ = collectSnapshot(t, db, nil) + require.True(t, *deployment.IDPOrgSync) + }) } // nolint:paralleltest @@ -253,31 +321,153 @@ func TestTelemetryInstallSource(t *testing.T) { require.Equal(t, "aws_marketplace", deployment.InstallSource) } -func collectSnapshot(t *testing.T, db database.Store, addOptionsFn func(opts telemetry.Options) telemetry.Options) (*telemetry.Deployment, *telemetry.Snapshot) { +func TestTelemetryItem(t *testing.T) { + t.Parallel() + ctx := testutil.Context(t, testutil.WaitMedium) + db, _ := dbtestutil.NewDB(t) + key := testutil.GetRandomName(t) + value := time.Now().Format(time.RFC3339) + + err := db.InsertTelemetryItemIfNotExists(ctx, database.InsertTelemetryItemIfNotExistsParams{ + Key: key, + Value: value, + }) + require.NoError(t, err) + + item, err := db.GetTelemetryItem(ctx, key) + require.NoError(t, err) + require.Equal(t, item.Key, key) + require.Equal(t, item.Value, value) + + // Inserting a new value should not update the existing value + err = db.InsertTelemetryItemIfNotExists(ctx, database.InsertTelemetryItemIfNotExistsParams{ + Key: key, + Value: "new_value", + }) + require.NoError(t, err) + + item, err = db.GetTelemetryItem(ctx, key) + require.NoError(t, err) + require.Equal(t, item.Value, value) + + // Upserting a new value should update the existing value + err = db.UpsertTelemetryItem(ctx, database.UpsertTelemetryItemParams{ + Key: key, + Value: "new_value", + }) + require.NoError(t, err) + + item, err = db.GetTelemetryItem(ctx, key) + require.NoError(t, err) + require.Equal(t, item.Value, "new_value") +} + +func TestShouldReportTelemetryDisabled(t *testing.T) { + t.Parallel() + // Description | telemetryEnabled (db) | telemetryEnabled (is) | Report Telemetry Disabled | + //----------------------------------------|-----------------------|-----------------------|---------------------------| + // New deployment | | true | No | + // New deployment with telemetry disabled | | false | No | + // Telemetry was enabled, and still is | true | true | No | + // Telemetry was enabled but now disabled | true | false | Yes | + // Telemetry was disabled, now is enabled | false | true | No | + // Telemetry was disabled, still disabled | false | false | No | + boolTrue := true + boolFalse := false + require.False(t, telemetry.ShouldReportTelemetryDisabled(nil, true)) + require.False(t, telemetry.ShouldReportTelemetryDisabled(nil, false)) + require.False(t, telemetry.ShouldReportTelemetryDisabled(&boolTrue, true)) + require.True(t, telemetry.ShouldReportTelemetryDisabled(&boolTrue, false)) + require.False(t, telemetry.ShouldReportTelemetryDisabled(&boolFalse, true)) + require.False(t, telemetry.ShouldReportTelemetryDisabled(&boolFalse, false)) +} + +func TestRecordTelemetryStatus(t *testing.T) { + t.Parallel() + for _, testCase := range []struct { + name string + recordedTelemetryEnabled string + telemetryEnabled bool + shouldReport bool + }{ + {name: "New deployment", recordedTelemetryEnabled: "nil", telemetryEnabled: true, shouldReport: false}, + {name: "Telemetry disabled", recordedTelemetryEnabled: "nil", telemetryEnabled: false, shouldReport: false}, + {name: "Telemetry was enabled and still is", recordedTelemetryEnabled: "true", telemetryEnabled: true, shouldReport: false}, + {name: "Telemetry was enabled but now disabled", recordedTelemetryEnabled: "true", telemetryEnabled: false, shouldReport: true}, + {name: "Telemetry was disabled now is enabled", recordedTelemetryEnabled: "false", telemetryEnabled: true, shouldReport: false}, + {name: "Telemetry was disabled still disabled", recordedTelemetryEnabled: "false", telemetryEnabled: false, shouldReport: false}, + {name: "Telemetry was disabled still disabled, invalid value", recordedTelemetryEnabled: "invalid", telemetryEnabled: false, shouldReport: false}, + } { + testCase := testCase + t.Run(testCase.name, func(t *testing.T) { + t.Parallel() + + db, _ := dbtestutil.NewDB(t) + ctx := testutil.Context(t, testutil.WaitMedium) + logger := testutil.Logger(t) + if testCase.recordedTelemetryEnabled != "nil" { + db.UpsertTelemetryItem(ctx, database.UpsertTelemetryItemParams{ + Key: string(telemetry.TelemetryItemKeyTelemetryEnabled), + Value: testCase.recordedTelemetryEnabled, + }) + } + snapshot1, err := telemetry.RecordTelemetryStatus(ctx, logger, db, testCase.telemetryEnabled) + require.NoError(t, err) + + if testCase.shouldReport { + require.NotNil(t, snapshot1) + require.Equal(t, snapshot1.TelemetryItems[0].Key, string(telemetry.TelemetryItemKeyTelemetryEnabled)) + require.Equal(t, snapshot1.TelemetryItems[0].Value, "false") + } else { + require.Nil(t, snapshot1) + } + + for i := 0; i < 3; i++ { + // Whatever happens, subsequent calls should not report if telemetryEnabled didn't change + snapshot2, err := telemetry.RecordTelemetryStatus(ctx, logger, db, testCase.telemetryEnabled) + require.NoError(t, err) + require.Nil(t, snapshot2) + } + }) + } +} + +func mockTelemetryServer(t *testing.T) (*url.URL, chan *telemetry.Deployment, chan *telemetry.Snapshot) { t.Helper() deployment := make(chan *telemetry.Deployment, 64) snapshot := make(chan *telemetry.Snapshot, 64) r := chi.NewRouter() r.Post("/deployment", func(w http.ResponseWriter, r *http.Request) { require.Equal(t, buildinfo.Version(), r.Header.Get(telemetry.VersionHeader)) - w.WriteHeader(http.StatusAccepted) dd := &telemetry.Deployment{} err := json.NewDecoder(r.Body).Decode(dd) require.NoError(t, err) deployment <- dd + // Ensure the header is sent only after deployment is sent + w.WriteHeader(http.StatusAccepted) }) r.Post("/snapshot", func(w http.ResponseWriter, r *http.Request) { require.Equal(t, buildinfo.Version(), r.Header.Get(telemetry.VersionHeader)) - w.WriteHeader(http.StatusAccepted) ss := &telemetry.Snapshot{} err := json.NewDecoder(r.Body).Decode(ss) require.NoError(t, err) snapshot <- ss + // Ensure the header is sent only after snapshot is sent + w.WriteHeader(http.StatusAccepted) }) server := httptest.NewServer(r) t.Cleanup(server.Close) serverURL, err := url.Parse(server.URL) require.NoError(t, err) + + return serverURL, deployment, snapshot +} + +func collectSnapshot(t *testing.T, db database.Store, addOptionsFn func(opts telemetry.Options) telemetry.Options) (*telemetry.Deployment, *telemetry.Snapshot) { + t.Helper() + + serverURL, deployment, snapshot := mockTelemetryServer(t) + options := telemetry.Options{ Database: db, Logger: testutil.Logger(t), diff --git a/coderd/users.go b/coderd/users.go index 56f295986859c..964f18724449a 100644 --- a/coderd/users.go +++ b/coderd/users.go @@ -918,6 +918,7 @@ func (api *API) putUserStatus(status database.UserStatus) func(rw http.ResponseW func (api *API) notifyUserStatusChanged(ctx context.Context, actingUserName string, targetUser database.User, status database.UserStatus) error { var labels map[string]string + var data map[string]any var adminTemplateID, personalTemplateID uuid.UUID switch status { case database.UserStatusSuspended: @@ -926,6 +927,9 @@ func (api *API) notifyUserStatusChanged(ctx context.Context, actingUserName stri "suspended_account_user_name": targetUser.Name, "initiator": actingUserName, } + data = map[string]any{ + "user": map[string]any{"id": targetUser.ID, "name": targetUser.Name, "email": targetUser.Email}, + } adminTemplateID = notifications.TemplateUserAccountSuspended personalTemplateID = notifications.TemplateYourAccountSuspended case database.UserStatusActive: @@ -934,6 +938,9 @@ func (api *API) notifyUserStatusChanged(ctx context.Context, actingUserName stri "activated_account_user_name": targetUser.Name, "initiator": actingUserName, } + data = map[string]any{ + "user": map[string]any{"id": targetUser.ID, "name": targetUser.Name, "email": targetUser.Email}, + } adminTemplateID = notifications.TemplateUserAccountActivated personalTemplateID = notifications.TemplateYourAccountActivated default: @@ -949,16 +956,16 @@ func (api *API) notifyUserStatusChanged(ctx context.Context, actingUserName stri // Send notifications to user admins and affected user for _, u := range userAdmins { // nolint:gocritic // Need notifier actor to enqueue notifications - if _, err := api.NotificationsEnqueuer.Enqueue(dbauthz.AsNotifier(ctx), u.ID, adminTemplateID, - labels, "api-put-user-status", + if _, err := api.NotificationsEnqueuer.EnqueueWithData(dbauthz.AsNotifier(ctx), u.ID, adminTemplateID, + labels, data, "api-put-user-status", targetUser.ID, ); err != nil { api.Logger.Warn(ctx, "unable to notify about changed user's status", slog.F("affected_user", targetUser.Username), slog.Error(err)) } } // nolint:gocritic // Need notifier actor to enqueue notifications - if _, err := api.NotificationsEnqueuer.Enqueue(dbauthz.AsNotifier(ctx), targetUser.ID, personalTemplateID, - labels, "api-put-user-status", + if _, err := api.NotificationsEnqueuer.EnqueueWithData(dbauthz.AsNotifier(ctx), targetUser.ID, personalTemplateID, + labels, data, "api-put-user-status", targetUser.ID, ); err != nil { api.Logger.Warn(ctx, "unable to notify user about status change of their account", slog.F("affected_user", targetUser.Username), slog.Error(err)) @@ -1424,13 +1431,20 @@ func (api *API) CreateUser(ctx context.Context, store database.Store, req Create } for _, u := range userAdmins { - // nolint:gocritic // Need notifier actor to enqueue notifications - if _, err := api.NotificationsEnqueuer.Enqueue(dbauthz.AsNotifier(ctx), u.ID, notifications.TemplateUserAccountCreated, + if _, err := api.NotificationsEnqueuer.EnqueueWithData( + // nolint:gocritic // Need notifier actor to enqueue notifications + dbauthz.AsNotifier(ctx), + u.ID, + notifications.TemplateUserAccountCreated, map[string]string{ "created_account_name": user.Username, "created_account_user_name": user.Name, "initiator": req.accountCreatorName, - }, "api-users-create", + }, + map[string]any{ + "user": map[string]any{"id": user.ID, "name": user.Name, "email": user.Email}, + }, + "api-users-create", user.ID, ); err != nil { api.Logger.Warn(ctx, "unable to notify about created user", slog.F("created_user", user.Username), slog.Error(err)) diff --git a/coderd/users_test.go b/coderd/users_test.go index 1386d76f3e0bf..53ec98b30d911 100644 --- a/coderd/users_test.go +++ b/coderd/users_test.go @@ -392,12 +392,19 @@ func TestNotifyUserStatusChanged(t *testing.T) { // Validate that each expected notification is present in notifyEnq.Sent() for _, expected := range expectedNotifications { found := false - for _, sent := range notifyEnq.Sent() { + for _, sent := range notifyEnq.Sent(notificationstest.WithTemplateID(expected.TemplateID)) { if sent.TemplateID == expected.TemplateID && sent.UserID == expected.UserID && slices.Contains(sent.Targets, member.ID) && sent.Labels[label] == member.Username { found = true + + require.IsType(t, map[string]any{}, sent.Data["user"]) + userData := sent.Data["user"].(map[string]any) + require.Equal(t, member.ID, userData["id"]) + require.Equal(t, member.Name, userData["name"]) + require.Equal(t, member.Email, userData["email"]) + break } } @@ -858,11 +865,18 @@ func TestNotifyCreatedUser(t *testing.T) { require.NoError(t, err) // then - require.Len(t, notifyEnq.Sent(), 1) - require.Equal(t, notifications.TemplateUserAccountCreated, notifyEnq.Sent()[0].TemplateID) - require.Equal(t, firstUser.UserID, notifyEnq.Sent()[0].UserID) - require.Contains(t, notifyEnq.Sent()[0].Targets, user.ID) - require.Equal(t, user.Username, notifyEnq.Sent()[0].Labels["created_account_name"]) + sent := notifyEnq.Sent(notificationstest.WithTemplateID(notifications.TemplateUserAccountCreated)) + require.Len(t, sent, 1) + require.Equal(t, notifications.TemplateUserAccountCreated, sent[0].TemplateID) + require.Equal(t, firstUser.UserID, sent[0].UserID) + require.Contains(t, sent[0].Targets, user.ID) + require.Equal(t, user.Username, sent[0].Labels["created_account_name"]) + + require.IsType(t, map[string]any{}, sent[0].Data["user"]) + userData := sent[0].Data["user"].(map[string]any) + require.Equal(t, user.ID, userData["id"]) + require.Equal(t, user.Name, userData["name"]) + require.Equal(t, user.Email, userData["email"]) }) t.Run("UserAdminNotified", func(t *testing.T) { diff --git a/coderd/workspacebuilds.go b/coderd/workspacebuilds.go index 375eaab5cd33b..76166bfcb6164 100644 --- a/coderd/workspacebuilds.go +++ b/coderd/workspacebuilds.go @@ -527,7 +527,7 @@ func (api *API) notifyWorkspaceUpdated( "workspace": map[string]any{"id": workspace.ID, "name": workspace.Name}, "template": map[string]any{"id": template.ID, "name": template.Name}, "template_version": map[string]any{"id": version.ID, "name": version.Name}, - "owner": map[string]any{"id": owner.ID, "name": owner.Name}, + "owner": map[string]any{"id": owner.ID, "name": owner.Name, "email": owner.Email}, "parameters": buildParameters, }, "api-workspaces-updated", diff --git a/coderd/workspacebuilds_test.go b/coderd/workspacebuilds_test.go index da4c09329cc39..fc8961a8c74ac 100644 --- a/coderd/workspacebuilds_test.go +++ b/coderd/workspacebuilds_test.go @@ -648,7 +648,7 @@ func TestWorkspaceBuildWithUpdatedTemplateVersionSendsNotification(t *testing.T) client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, NotificationsEnqueuer: notify}) first := coderdtest.CreateFirstUser(t, client) templateAdminClient, templateAdmin := coderdtest.CreateAnotherUser(t, client, first.OrganizationID, rbac.RoleTemplateAdmin()) - userClient, _ := coderdtest.CreateAnotherUser(t, client, first.OrganizationID) + userClient, user := coderdtest.CreateAnotherUser(t, client, first.OrganizationID) // Create a template with an initial version version := coderdtest.CreateTemplateVersion(t, templateAdminClient, first.OrganizationID, nil) @@ -684,6 +684,12 @@ func TestWorkspaceBuildWithUpdatedTemplateVersionSendsNotification(t *testing.T) require.Contains(t, sent[0].Targets, workspace.ID) require.Contains(t, sent[0].Targets, workspace.OrganizationID) require.Contains(t, sent[0].Targets, workspace.OwnerID) + + owner, ok := sent[0].Data["owner"].(map[string]any) + require.True(t, ok, "notification data should have owner") + require.Equal(t, user.ID, owner["id"]) + require.Equal(t, user.Name, owner["name"]) + require.Equal(t, user.Email, owner["email"]) }) } diff --git a/coderd/workspaces.go b/coderd/workspaces.go index 158f27132b427..7a64648033c79 100644 --- a/coderd/workspaces.go +++ b/coderd/workspaces.go @@ -809,7 +809,7 @@ func (api *API) notifyWorkspaceCreated( "workspace": map[string]any{"id": workspace.ID, "name": workspace.Name}, "template": map[string]any{"id": template.ID, "name": template.Name}, "template_version": map[string]any{"id": version.ID, "name": version.Name}, - "owner": map[string]any{"id": owner.ID, "name": owner.Name}, + "owner": map[string]any{"id": owner.ID, "name": owner.Name, "email": owner.Email}, "parameters": buildParameters, }, "api-workspaces-create", diff --git a/coderd/workspaces_test.go b/coderd/workspaces_test.go index e74d5174123a1..b8bf71c3eb3ac 100644 --- a/coderd/workspaces_test.go +++ b/coderd/workspaces_test.go @@ -639,6 +639,12 @@ func TestPostWorkspacesByOrganization(t *testing.T) { require.Contains(t, sent[0].Targets, workspace.ID) require.Contains(t, sent[0].Targets, workspace.OrganizationID) require.Contains(t, sent[0].Targets, workspace.OwnerID) + + owner, ok := sent[0].Data["owner"].(map[string]any) + require.True(t, ok, "notification data should have owner") + require.Equal(t, memberUser.ID, owner["id"]) + require.Equal(t, memberUser.Name, owner["name"]) + require.Equal(t, memberUser.Email, owner["email"]) }) t.Run("CreateWithAuditLogs", func(t *testing.T) { diff --git a/codersdk/idpsync.go b/codersdk/idpsync.go index 2cc1f51ee3011..8f92cea680e25 100644 --- a/codersdk/idpsync.go +++ b/codersdk/idpsync.go @@ -12,6 +12,13 @@ import ( "golang.org/x/xerrors" ) +type IDPSyncMapping[ResourceIdType uuid.UUID | string] struct { + // The IdP claim the user has + Given string + // The ID of the Coder resource the user should be added to + Gets ResourceIdType +} + type GroupSyncSettings struct { // Field is the name of the claim field that specifies what groups a user // should be in. If empty, no groups will be synced. @@ -61,6 +68,46 @@ func (c *Client) PatchGroupIDPSyncSettings(ctx context.Context, orgID string, re return resp, json.NewDecoder(res.Body).Decode(&resp) } +type PatchGroupIDPSyncConfigRequest struct { + Field string `json:"field"` + RegexFilter *regexp.Regexp `json:"regex_filter"` + AutoCreateMissing bool `json:"auto_create_missing_groups"` +} + +func (c *Client) PatchGroupIDPSyncConfig(ctx context.Context, orgID string, req PatchGroupIDPSyncConfigRequest) (GroupSyncSettings, error) { + res, err := c.Request(ctx, http.MethodPatch, fmt.Sprintf("/api/v2/organizations/%s/settings/idpsync/groups/config", orgID), req) + if err != nil { + return GroupSyncSettings{}, xerrors.Errorf("make request: %w", err) + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return GroupSyncSettings{}, ReadBodyAsError(res) + } + var resp GroupSyncSettings + return resp, json.NewDecoder(res.Body).Decode(&resp) +} + +// If the same mapping is present in both Add and Remove, Remove will take presidence. +type PatchGroupIDPSyncMappingRequest struct { + Add []IDPSyncMapping[uuid.UUID] + Remove []IDPSyncMapping[uuid.UUID] +} + +func (c *Client) PatchGroupIDPSyncMapping(ctx context.Context, orgID string, req PatchGroupIDPSyncMappingRequest) (GroupSyncSettings, error) { + res, err := c.Request(ctx, http.MethodPatch, fmt.Sprintf("/api/v2/organizations/%s/settings/idpsync/groups/mapping", orgID), req) + if err != nil { + return GroupSyncSettings{}, xerrors.Errorf("make request: %w", err) + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return GroupSyncSettings{}, ReadBodyAsError(res) + } + var resp GroupSyncSettings + return resp, json.NewDecoder(res.Body).Decode(&resp) +} + type RoleSyncSettings struct { // Field is the name of the claim field that specifies what organization roles // a user should be given. If empty, no roles will be synced. @@ -97,6 +144,44 @@ func (c *Client) PatchRoleIDPSyncSettings(ctx context.Context, orgID string, req return resp, json.NewDecoder(res.Body).Decode(&resp) } +type PatchRoleIDPSyncConfigRequest struct { + Field string `json:"field"` +} + +func (c *Client) PatchRoleIDPSyncConfig(ctx context.Context, orgID string, req PatchRoleIDPSyncConfigRequest) (RoleSyncSettings, error) { + res, err := c.Request(ctx, http.MethodPatch, fmt.Sprintf("/api/v2/organizations/%s/settings/idpsync/roles/config", orgID), req) + if err != nil { + return RoleSyncSettings{}, xerrors.Errorf("make request: %w", err) + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return RoleSyncSettings{}, ReadBodyAsError(res) + } + var resp RoleSyncSettings + return resp, json.NewDecoder(res.Body).Decode(&resp) +} + +// If the same mapping is present in both Add and Remove, Remove will take presidence. +type PatchRoleIDPSyncMappingRequest struct { + Add []IDPSyncMapping[string] + Remove []IDPSyncMapping[string] +} + +func (c *Client) PatchRoleIDPSyncMapping(ctx context.Context, orgID string, req PatchRoleIDPSyncMappingRequest) (RoleSyncSettings, error) { + res, err := c.Request(ctx, http.MethodPatch, fmt.Sprintf("/api/v2/organizations/%s/settings/idpsync/roles/mapping", orgID), req) + if err != nil { + return RoleSyncSettings{}, xerrors.Errorf("make request: %w", err) + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return RoleSyncSettings{}, ReadBodyAsError(res) + } + var resp RoleSyncSettings + return resp, json.NewDecoder(res.Body).Decode(&resp) +} + type OrganizationSyncSettings struct { // Field selects the claim field to be used as the created user's // organizations. If the field is the empty string, then no organization @@ -137,6 +222,45 @@ func (c *Client) PatchOrganizationIDPSyncSettings(ctx context.Context, req Organ return resp, json.NewDecoder(res.Body).Decode(&resp) } +type PatchOrganizationIDPSyncConfigRequest struct { + Field string `json:"field"` + AssignDefault bool `json:"assign_default"` +} + +func (c *Client) PatchOrganizationIDPSyncConfig(ctx context.Context, req PatchOrganizationIDPSyncConfigRequest) (OrganizationSyncSettings, error) { + res, err := c.Request(ctx, http.MethodPatch, "/api/v2/settings/idpsync/organization/config", req) + if err != nil { + return OrganizationSyncSettings{}, xerrors.Errorf("make request: %w", err) + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return OrganizationSyncSettings{}, ReadBodyAsError(res) + } + var resp OrganizationSyncSettings + return resp, json.NewDecoder(res.Body).Decode(&resp) +} + +// If the same mapping is present in both Add and Remove, Remove will take presidence. +type PatchOrganizationIDPSyncMappingRequest struct { + Add []IDPSyncMapping[uuid.UUID] + Remove []IDPSyncMapping[uuid.UUID] +} + +func (c *Client) PatchOrganizationIDPSyncMapping(ctx context.Context, req PatchOrganizationIDPSyncMappingRequest) (OrganizationSyncSettings, error) { + res, err := c.Request(ctx, http.MethodPatch, "/api/v2/settings/idpsync/organization/mapping", req) + if err != nil { + return OrganizationSyncSettings{}, xerrors.Errorf("make request: %w", err) + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return OrganizationSyncSettings{}, ReadBodyAsError(res) + } + var resp OrganizationSyncSettings + return resp, json.NewDecoder(res.Body).Decode(&resp) +} + func (c *Client) GetAvailableIDPSyncFields(ctx context.Context) ([]string, error) { res, err := c.Request(ctx, http.MethodGet, "/api/v2/settings/idpsync/available-fields", nil) if err != nil { diff --git a/docs/admin/users/idp-sync.md b/docs/admin/users/idp-sync.md index 8e9ea79a9a80b..ee2dc83be387c 100644 --- a/docs/admin/users/idp-sync.md +++ b/docs/admin/users/idp-sync.md @@ -1,13 +1,39 @@ -# IDP Sync +# IdP Sync
-IDP sync is an Enterprise and Premium feature. +IdP sync is an Enterprise and Premium feature. [Learn more](https://coder.com/pricing#compare-plans).
+IdP (Identity provider) sync allows you to use OpenID Connect (OIDC) to +synchronize Coder groups, roles, and organizations based on claims from your IdP. + +## Prerequisites + +### Confirm that OIDC provider sends claims + +To confirm that your OIDC provider is sending claims, log in with OIDC and visit +the following URL with an `Owner` account: + +```text +https://[coder.example.com]/api/v2/debug/[your-username]/debug-link +``` + +You should see a field in either `id_token_claims`, `user_info_claims` or +both followed by a list of the user's OIDC groups in the response. + +This is the [claim](https://openid.net/specs/openid-connect-core-1_0.html#Claims) +sent by the OIDC provider. + +Depending on the OIDC provider, this claim might be called something else. +Common names include `groups`, `memberOf`, and `roles`. + +See the [troubleshooting section](#troubleshooting-grouproleorganization-sync) +for help troubleshooting common issues. + ## Group Sync If your OpenID Connect provider supports group claims, you can configure Coder @@ -21,115 +47,36 @@ If group sync is enabled, the user's groups will be controlled by the OIDC provider. This means manual group additions/removals will be overwritten on the next user login. -There are two ways you can configure group sync: +For deployments with multiple [organizations](./organizations.md), configure +group sync for each organization.
-## Server Flags +### Dashboard -1. Confirm that your OIDC provider is sending claims. - - Log in with OIDC and visit the following URL with an `Owner` account: +1. Fetch the corresponding group IDs using the following endpoint: ```text - https://[coder.example.com]/api/v2/debug/[your-username]/debug-link + https://[coder.example.com]/api/v2/groups ``` - You should see a field in either `id_token_claims`, `user_info_claims` or - both followed by a list of the user's OIDC groups in the response. This is - the [claim](https://openid.net/specs/openid-connect-core-1_0.html#Claims) - sent by the OIDC provider. - - See [Troubleshooting](#troubleshooting-grouproleorganization-sync) to debug - this. +1. As an Owner or Organization Admin, go to **Admin settings**, select + **Organizations**, then **IdP Sync**: - Depending on the OIDC provider, this claim may be called something else. - Common names include `groups`, `memberOf`, and `roles`. + ![IdP Sync - Group sync settings](../../images/admin/users/organizations/group-sync-empty.png) -1. Configure the Coder server to read groups from the claim name with the - [OIDC group field](../../reference/cli/server.md#--oidc-group-field) server - flag: +1. Enter the **Group sync field** and an optional **Regex filter**, then select + **Save**. - - Environment variable: +1. Select **Auto create missing groups** to automatically create groups + returned by the OIDC provider if they do not exist in Coder. - ```sh - CODER_OIDC_GROUP_FIELD=groups - ``` +1. Enter the **IdP group name** and **Coder group**, then **Add IdP group**. - - As a flag: - - ```sh - --oidc-group-field groups - ``` - -On login, users will automatically be assigned to groups that have matching -names in Coder and removed from groups that the user no longer belongs to. - -For cases when an OIDC provider only returns group IDs or you want to have -different group names in Coder than in your OIDC provider, you can configure -mapping between the two with the -[OIDC group mapping](../../reference/cli/server.md#--oidc-group-mapping) server -flag: - -- Environment variable: - - ```sh - CODER_OIDC_GROUP_MAPPING='{"myOIDCGroupID": "myCoderGroupName"}' - ``` - -- As a flag: - - ```sh - --oidc-group-mapping '{"myOIDCGroupID": "myCoderGroupName"}' - ``` - -Below is an example mapping in the Coder Helm chart: - -```yaml -coder: - env: - - name: CODER_OIDC_GROUP_MAPPING - value: > - {"myOIDCGroupID": "myCoderGroupName"} -``` - -From the example above, users that belong to the `myOIDCGroupID` group in your -OIDC provider will be added to the `myCoderGroupName` group in Coder. - -## Runtime (Organizations) - -
- -You must have a Premium license with Organizations enabled to use this. -[Contact your account team](https://coder.com/contact) for more details. - -
- -For deployments with multiple [organizations](./organizations.md), you must -configure group sync at the organization level. In future Coder versions, you -will be able to configure this in the UI. For now, you must use CLI commands. +### CLI 1. Confirm you have the [Coder CLI](../../install/index.md) installed and are - logged in with a user who is an Owner or Organization Admin role. - -1. Confirm that your OIDC provider is sending a groups claim. - - Log in with OIDC and visit the following URL: - - ```text - https://[coder.example.com]/api/v2/debug/[your-username]/debug-link - ``` - - You should see a field in either `id_token_claims`, `user_info_claims` or - both followed by a list of the user's OIDC groups in the response. This is - the [claim](https://openid.net/specs/openid-connect-core-1_0.html#Claims) - sent by the OIDC provider. - - See [Troubleshooting](#troubleshooting-grouproleorganization-sync) to debug - this. - - Depending on the OIDC provider, this claim may be called something else. - Common names include `groups`, `memberOf`, and `roles`. + logged in with a user who is an Owner or has an Organization Admin role. 1. To fetch the current group sync settings for an organization, run the following: @@ -165,7 +112,7 @@ Below is an example that uses the `groups` claim and maps all groups prefixed by
-You much specify Coder group IDs instead of group names. The fastest way to find +You must specify Coder group IDs instead of group names. The fastest way to find the ID for a corresponding group is by visiting `https://coder.example.com/api/v2/groups`. @@ -200,102 +147,110 @@ coder organizations settings set group-sync \ Visit the Coder UI to confirm these changes: -![IDP Sync](../../images/admin/users/organizations/group-sync.png) +![IdP Sync](../../images/admin/users/organizations/group-sync.png) -
+### Server Flags -### Group allowlist +
-You can limit which groups from your identity provider can log in to Coder with -[CODER_OIDC_ALLOWED_GROUPS](https://coder.com/docs/cli/server#--oidc-allowed-groups). -Users who are not in a matching group will see the following error: +Use server flags only with Coder deployments with a single organization. -Unauthorized group error +You can use the dashboard to configure group sync instead. -## Role Sync +
-
+1. Configure the Coder server to read groups from the claim name with the + [OIDC group field](../../reference/cli/server.md#--oidc-group-field) server + flag: -Role sync is an Enterprise and Premium feature. -[Learn more](https://coder.com/pricing#compare-plans). + - Environment variable: -
+ ```sh + CODER_OIDC_GROUP_FIELD=groups + ``` -If your OpenID Connect provider supports roles claims, you can configure Coder -to synchronize roles in your auth provider to roles within Coder. + - As a flag: -There are 2 ways to do role sync. Server Flags assign site wide roles, and -runtime org role sync assigns organization roles + ```sh + --oidc-group-field groups + ``` -
+1. On login, users will automatically be assigned to groups that have matching + names in Coder and removed from groups that the user no longer belongs to. -You must have a Premium license with Organizations enabled to use this. -[Contact your account team](https://coder.com/contact) for more details. +1. For cases when an OIDC provider only returns group IDs or you want to have + different group names in Coder than in your OIDC provider, you can configure + mapping between the two with the + [OIDC group mapping](../../reference/cli/server.md#--oidc-group-mapping) server + flag: -
+ - Environment variable: -
+ ```sh + CODER_OIDC_GROUP_MAPPING='{"myOIDCGroupID": "myCoderGroupName"}' + ``` + + - As a flag: -## Server Flags + ```sh + --oidc-group-mapping '{"myOIDCGroupID": "myCoderGroupName"}' + ``` -1. Confirm that your OIDC provider is sending a roles claim by logging in with - OIDC and visiting the following URL with an `Owner` account: + Below is an example mapping in the Coder Helm chart: - ```text - https://[coder.example.com]/api/v2/debug/[your-username]/debug-link + ```yaml + coder: + env: + - name: CODER_OIDC_GROUP_MAPPING + value: > + {"myOIDCGroupID": "myCoderGroupName"} ``` - You should see a field in either `id_token_claims`, `user_info_claims` or - both followed by a list of the user's OIDC roles in the response. This is the - [claim](https://openid.net/specs/openid-connect-core-1_0.html#Claims) sent by - the OIDC provider. + From this example, users that belong to the `myOIDCGroupID` group in your + OIDC provider will be added to the `myCoderGroupName` group in Coder. - See [Troubleshooting](#troubleshooting-grouproleorganization-sync) to debug - this. +
- Depending on the OIDC provider, this claim may be called something else. +### Group allowlist -1. Configure the Coder server to read groups from the claim name with the - [OIDC role field](../../reference/cli/server.md#--oidc-user-role-field) - server flag: +You can limit which groups from your identity provider can log in to Coder with +[CODER_OIDC_ALLOWED_GROUPS](https://coder.com/docs/cli/server#--oidc-allowed-groups). +Users who are not in a matching group will see the following error: -1. Set the following in your Coder server [configuration](../setup/index.md). +Unauthorized group error - ```env - # Depending on your identity provider configuration, you may need to explicitly request a "roles" scope - CODER_OIDC_SCOPES=openid,profile,email,roles +## Role Sync - # The following fields are required for role sync: - CODER_OIDC_USER_ROLE_FIELD=roles - CODER_OIDC_USER_ROLE_MAPPING='{"TemplateAuthor":["template-admin","user-admin"]}' - ``` +If your OpenID Connect provider supports roles claims, you can configure Coder +to synchronize roles in your auth provider to roles within Coder. -One role from your identity provider can be mapped to many roles in Coder. The -example above maps to two roles in Coder. +For deployments with multiple [organizations](./organizations.md), configure +role sync at the organization level. -## Runtime (Organizations) +
-For deployments with multiple [organizations](./organizations.md), you can -configure role sync at the organization level. In future Coder versions, you -will be able to configure this in the UI. For now, you must use CLI commands. +### Dashboard -1. Confirm that your OIDC provider is sending a roles claim. +1. As an Owner or Organization Admin, go to **Admin settings**, select + **Organizations**, then **IdP Sync**. - Log in with OIDC and visit the following URL with an `Owner` account: +1. Select the **Role sync settings** tab: - ```text - https://[coder.example.com]/api/v2/debug/[your-username]/debug-link - ``` + ![IdP Sync - Role sync settings](../../images/admin/users/organizations/role-sync-empty.png) + +1. Enter the **Role sync field**, then select **Save**. - You should see a field in either `id_token_claims`, `user_info_claims` or - both followed by a list of the user's OIDC roles in the response. This is the - [claim](https://openid.net/specs/openid-connect-core-1_0.html#Claims) sent by - the OIDC provider. +1. Enter the **IdP role name** and **Coder role**, then **Add IdP role**. - See [Troubleshooting](#troubleshooting-grouproleorganization-sync) to debug - this. + To add a new custom role, select **Roles** from the sidebar, then + **Create custom role**. - Depending on the OIDC provider, this claim may be called something else. + Visit the [groups and roles documentation](./groups-roles.md) for more information. + +### CLI + +1. Confirm you have the [Coder CLI](../../install/index.md) installed and are + logged in with a user who is an Owner or has an Organization Admin role. 1. To fetch the current group sync settings for an organization, run the following: @@ -316,7 +271,7 @@ will be able to configure this in the UI. For now, you must use CLI commands. ``` Below is an example that uses the `roles` claim and maps `coder-admins` from the -IDP as an `Organization Admin` and also maps to a custom `provisioner-admin` +IdP as an `Organization Admin` and also maps to a custom `provisioner-admin` role: ```json @@ -332,7 +287,7 @@ role:
Be sure to use the `name` field for each role, not the display name. Use -`coder organization roles show --org=` to see roles for your +`coder organization roles show --org=` to see roles for your organization.
@@ -347,19 +302,40 @@ coder organizations settings set role-sync \ Visit the Coder UI to confirm these changes: -![IDP Sync](../../images/admin/users/organizations/role-sync.png) +![IdP Sync](../../images/admin/users/organizations/role-sync.png) -
+### Server Flags -## Organization Sync +
-
+Use server flags only with Coder deployments with a single organization. -Organization sync is an Enterprise and Premium feature. -[Learn more](https://coder.com/pricing#compare-plans). +You can use the dashboard to configure role sync instead.
+1. Configure the Coder server to read groups from the claim name with the + [OIDC role field](../../reference/cli/server.md#--oidc-user-role-field) + server flag: + +1. Set the following in your Coder server [configuration](../setup/index.md). + + ```env + # Depending on your identity provider configuration, you may need to explicitly request a "roles" scope + CODER_OIDC_SCOPES=openid,profile,email,roles + + # The following fields are required for role sync: + CODER_OIDC_USER_ROLE_FIELD=roles + CODER_OIDC_USER_ROLE_MAPPING='{"TemplateAuthor":["template-admin","user-admin"]}' + ``` + +One role from your identity provider can be mapped to many roles in Coder. The +example above maps to two roles in Coder. + + + +## Organization Sync + If your OpenID Connect provider supports groups/role claims, you can configure Coder to synchronize claims in your auth provider to organizations within Coder. @@ -370,28 +346,11 @@ Organization sync works across all organizations. On user login, the sync will add and remove the user from organizations based on their IdP claims. After the sync, the user's state should match that of the IdP. -You can initiate an organization sync through the CLI or through the Coder -dashboard: +You can initiate an organization sync through the Coder dashboard or CLI:
-## Dashboard - -1. Confirm that your OIDC provider is sending claims. Log in with OIDC and visit - the following URL with an `Owner` account: - - ```text - https://[coder.example.com]/api/v2/debug/[your-username]/debug-link - ``` - - You should see a field in either `id_token_claims`, `user_info_claims` or - both followed by a list of the user's OIDC groups in the response. This is - the [claim](https://openid.net/specs/openid-connect-core-1_0.html#Claims) - sent by the OIDC provider. See - [Troubleshooting](#troubleshooting-grouproleorganization-sync) to debug this. - - Depending on the OIDC provider, this claim may be called something else. - Common names include `groups`, `memberOf`, and `roles`. +### Dashboard 1. Fetch the corresponding organization IDs using the following endpoint: @@ -400,7 +359,7 @@ dashboard: ``` 1. As a Coder organization user admin or site-wide user admin, go to - **Settings** > **IdP organization sync**. + **Admin settings** > **Deployment** and select **IdP organization sync**. 1. In the **Organization sync field** text box, enter the organization claim, then select **Save**. @@ -415,7 +374,7 @@ dashboard: ![IdP organization sync](../../images/admin/users/organizations/idp-org-sync.png) -## CLI +### CLI Use the Coder CLI to show and adjust the settings. @@ -467,11 +426,11 @@ settings, a user's memberships will update when they log out and log back in. ## Troubleshooting group/role/organization sync -Some common issues when enabling group/role sync. +Some common issues when enabling group, role, or organization sync. ### General guidelines -If you are running into issues with group/role sync: +If you are running into issues with a sync: 1. View your Coder server logs and enable [verbose mode](../../reference/cli/index.md#-v---verbose). @@ -487,7 +446,7 @@ If you are running into issues with group/role sync: 1. Attempt to log in, preferably with a user who has the `Owner` role. -The logs for a successful group sync look like this (human-readable): +The logs for a successful sync look like this (human-readable): ```sh [debu] coderd.userauth: got oidc claims request_id=49e86507-6842-4b0b-94d4-f245e62e49f3 source=id_token claim_fields="[aio aud email exp groups iat idp iss name nbf oid preferred_username rh sub tid uti ver]" blank=[] @@ -552,7 +511,7 @@ The application '' asked for scope 'groups' that doesn't exist This can happen because the identity provider has a different name for the scope. For example, Azure AD uses `GroupMember.Read.All` instead of `groups`. -You can find the correct scope name in the IDP's documentation. Some IDP's allow +You can find the correct scope name in the IdP's documentation. Some IdPs allow configuring the name of this scope. The solution is to update the value of `CODER_OIDC_SCOPES` to the correct value @@ -562,15 +521,15 @@ for the identity provider. Steps to troubleshoot. -1. Ensure the user is a part of a group in the IDP. If the user has 0 groups, no +1. Ensure the user is a part of a group in the IdP. If the user has 0 groups, no `groups` claim will be sent. 2. Check if another claim appears to be the correct claim with a different name. A common name is `memberOf` instead of `groups`. If this is present, update `CODER_OIDC_GROUP_FIELD=memberOf`. -3. Make sure the number of groups being sent is under the limit of the IDP. Some - IDPs will return an error, while others will just omit the `groups` claim. A +3. Make sure the number of groups being sent is under the limit of the IdP. Some + IdPs will return an error, while others will just omit the `groups` claim. A common solution is to create a filter on the identity provider that returns - less than the limit for your IDP. + less than the limit for your IdP. - [Azure AD limit is 200, and omits groups if exceeded.](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/connect/how-to-connect-fed-group-claims#options-for-applications-to-consume-group-information) - [Okta limit is 100, and returns an error if exceeded.](https://developer.okta.com/docs/reference/api/oidc/#scope-dependent-claims-not-always-returned) @@ -582,32 +541,37 @@ Below are some details specific to individual OIDC providers. > **Note:** Tested on ADFS 4.0, Windows Server 2019 -1. In your Federation Server, create a new application group for Coder. Follow - the steps as described - [here.](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/development/msal/adfs-msal-web-app-web-api#app-registration-in-ad-fs) +1. In your Federation Server, create a new application group for Coder. + Follow the steps as described in the [Windows Server documentation] + (https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/development/msal/adfs-msal-web-app-web-api#app-registration-in-ad-fs). + - **Server Application**: Note the Client ID. - **Configure Application Credentials**: Note the Client Secret. - **Configure Web API**: Set the Client ID as the relying party identifier. - **Application Permissions**: Allow access to the claims `openid`, `email`, `profile`, and `allatclaims`. + 1. Visit your ADFS server's `/.well-known/openid-configuration` URL and note the value for `issuer`. - > **Note:** This is usually of the form - > `https://adfs.corp/adfs/.well-known/openid-configuration` + + This will look something like + `https://adfs.corp/adfs/.well-known/openid-configuration`. + 1. In Coder's configuration file (or Helm values as appropriate), set the following environment variables or their corresponding CLI arguments: - - `CODER_OIDC_ISSUER_URL`: the `issuer` value from the previous step. - - `CODER_OIDC_CLIENT_ID`: the Client ID from step 1. - - `CODER_OIDC_CLIENT_SECRET`: the Client Secret from step 1. + - `CODER_OIDC_ISSUER_URL`: `issuer` value from the previous step. + - `CODER_OIDC_CLIENT_ID`: Client ID from step 1. + - `CODER_OIDC_CLIENT_SECRET`: Client Secret from step 1. - `CODER_OIDC_AUTH_URL_PARAMS`: set to - ```console + ```json {"resource":"$CLIENT_ID"} ``` - where `$CLIENT_ID` is the Client ID from step 1 - ([see here](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-openid-connect-oauth-flows-scenarios#:~:text=scope%E2%80%AFopenid.-,resource,-optional)). + Where `$CLIENT_ID` is the Client ID from step 1. + Consult the Microsoft [AD FS OpenID Connect/OAuth flows and Application Scenarios documentation](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-openid-connect-oauth-flows-scenarios#:~:text=scope%E2%80%AFopenid.-,resource,-optional) for more information. + This is required for the upstream OIDC provider to return the requested claims. @@ -615,34 +579,35 @@ Below are some details specific to individual OIDC providers. 1. Configure [Issuance Transform Rules](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-rule-to-send-ldap-attributes-as-claims) - on your federation server to send the following claims: + on your Federation Server to send the following claims: - `preferred_username`: You can use e.g. "Display Name" as required. - `email`: You can use e.g. the LDAP attribute "E-Mail-Addresses" as required. - `email_verified`: Create a custom claim rule: - ```console + ```json => issue(Type = "email_verified", Value = "true") ``` - (Optional) If using Group Sync, send the required groups in the configured - groups claim field. See [here](https://stackoverflow.com/a/55570286) for an - example. + groups claim field. + Use [this answer from Stack Overflow](https://stackoverflow.com/a/55570286) for an example. ### Keycloak -The access_type parameter has two possible values: "online" and "offline." By -default, the value is set to "offline". This means that when a user -authenticates using OIDC, the application requests offline access to the user's -resources, including the ability to refresh access tokens without requiring the -user to reauthenticate. +The `access_type` parameter has two possible values: `online` and `offline`. +By default, the value is set to `offline`. + +This means that when a user authenticates using OIDC, the application requests +offline access to the user's resources, including the ability to refresh access +tokens without requiring the user to reauthenticate. -To enable the `offline_access` scope, which allows for the refresh token +To enable the `offline_access` scope which allows for the refresh token functionality, you need to add it to the list of requested scopes during the -authentication flow. Including the `offline_access` scope in the requested -scopes ensures that the user is granted the necessary permissions to obtain -refresh tokens. +authentication flow. +Including the `offline_access` scope in the requested scopes ensures that the +user is granted the necessary permissions to obtain refresh tokens. By combining the `{"access_type":"offline"}` parameter in the OIDC Auth URL with the `offline_access` scope, you can achieve the desired behavior of obtaining diff --git a/docs/images/admin/users/organizations/group-sync-empty.png b/docs/images/admin/users/organizations/group-sync-empty.png new file mode 100644 index 0000000000000000000000000000000000000000..4114ec7cacd8fc949cf939b8425648dfa0607b8f GIT binary patch literal 55416 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
HcfDp#Ko)1fvAS{Y$IP={74v)FW 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 bqKKIoFRs3vZKZ7i0gux`v;%$r$t!;YFr$Zn diff --git a/docs/images/admin/users/organizations/role-sync-empty.png b/docs/images/admin/users/organizations/role-sync-empty.png new file mode 100644 index 0000000000000000000000000000000000000000..91e36fff5bf026729f28d0476c0336b930fffb68 GIT binary patch literal 43142 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�TGl(|qL`urpH-l03P}=tN%^`7&;dy* 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 BoW=kE literal 0 HcmV?d00001 diff --git a/docs/images/admin/users/organizations/role-sync.png b/docs/images/admin/users/organizations/role-sync.png index 1b0fafb39fae120289aba469e185b8b6236e347e..9360c9e1337aa6d58c91d9c68c8b04e8eab8bcf6 100644 GIT binary patch literal 60491 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
yA z+XgZRS{9ad{+^1BvRsf;u+QFzpn@|2T7VW{2TVl(@;5eE`|w$QDiPlJxZHZ}?=R<6 z?n3!m_Lq{%9H~V4Km`Xa87FdiSHHsIgM_3c;oynY`cd0Eo^~ZAr5Hb~-LsdzldO_} zv!qSwci=7tS0i9hqV7I5dS6)l`)|~Mj;{lEUulp$cu-r^=NXdae-@FYI`|mW6f7Qj z5RIOg#2-!Q?Z129KynI0iJ!7+_ami$YO798-aI=3J5M8qlVREk`P4zA`lwhGZL1sj zRw>-cwhCYF;IVgw`oEt$XMqknP+zCj!WT6vW#RG4VC zS23Vv55|A~2VG^y0-vEn=#wjpfR*03I%GmG$D1Nhdg3 zRnCf!m38to zO|#ao1j9-Gq$cEH)LdB7iEK%%whWj>Qodk^P`aWoETPG2NH69gCh4&2uoxzl90}Pc zb1Sdzj;s0*S7G6Y=%$wC+Cm z6f>9jriKDwHcT#Z+lKedy5qRb>2Yx02NmR@l~!u!nbc1R3Kl-}`)bp++LSu*_AN>I z^3xtrlme`jt!Y1bJ??9Q>q>e{YA&l(DSF!S+_}H$ru5*MW-KO3U3vO=W^kbALtpZl z5=a8l0i8(L14A$NGLv)W_hdKEQwt1WZ=6>971oB?j^uLFYxlc-AA`V(mY#k%@O!E| z3plL{1|&rfgRaGq^4Tz#lneo1EJ&&;8F_}q5ViSGX@wct@u}Gtm8!>Y6*11F{Bm38 z+3T|#>&4avUcleVrXl*ETTp2rSDKY&UGy4ysV_S6pyaLC{Fdd3iy6>BZH$&oCFD#p z#ooD-YWiSpWHev`d$<;*Y0@zXh3sMEa&UMqrC-m6r&e_D^+3_6nbUTsJ}^BE^F#2GFJbUY;gb+ztJ=G+NXI6cjHn&ksftcXY5}Z|(aC z*&}BCHV>=ERaw}lm*$pZxtpFWJ%iiB-dCpfl5v~ShS5JAK0OX-$DT;r%CUFP?B%1l zcK7aGULFQ9vBvML`{I&ql5vYemqbSLlPM**Ee2Z?Ft1mgNKs^&2Lb8-{gESbMs8Sx z-5@?LE*F|-=Igf-A3ZH_$7~9nWfc@eQ@yD1sjKl93ff9(e8k1C0V$m#rT50&RUiaN z@5IqJZfa_#zwiq5IBY&y>J-o&uRu^wRNC->ip*t*4ZKn#uFA|^!p=}tU!lg`c0s7e zg&SA;LRM|>k_7amytNJJ_MSc10qzm}@rU-u>Z|aJ7ZE!|FCh!62`%&T_f_g#^v9}P z0X00`j|VqbY)ke;9@#)w6Nq-wRj*cG`*HJ;pC_B|?a_4#dvcQA@uJt#JH8q^h~rfGcGm?AG^IS94t8X{L{z&v3RVz6t-tBayn|(7dIt zB=d{h*y$Wl(51^>{o`INzx}Ij+YyeuRFdx6x?R7e&m>xWjEtkx?*XLqT-2GauWx~w zk6->6>6G$))lr`WcWu6le`Kb?#e+f!etsG2X52-l!ulo&#Dq!dgv8=C$xYQ1Gatm$ z4)N<76rEnIRDQ1>S;+=x_5n4|n07{1#@JxOj~~(lWr@#4EyG-@DY^Oa`YYZ}@KlH1 zUxn&~>uuR(^j0iSMySTE=8a_Eh3NZSIXKR8MUK@to~W3jlx3zj%hS_|_xjiOm^zr2 zF46ZCTDrKHe5x!rH4M)Dv10g8fELtUAbY10ea>@;?eO;|u_ozX`Vxw#+{2cT(uxrE z>^?X2-n?n5tdflm>ey&z zNN3hp#PK#Nu%`7n>eJf1z!`fs7{XNPrk&+x_;m*42%T~%LqDj3Y2O?KDu1?7=XFj& z@}+Lro*cWnQhRc@Uokl$(r7t3D$&?+G4$3m5`E3h^6$?JJL4{TV

aYuU4|Z0m5t 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 literal 82417 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 F{vW!!xLW`K literal 267865 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%0Ad0mhrOTlmaf!)BMKZaM-2P?QtY13X|R- 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%0A@8%-CL<9;<^ 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⪙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 literal 242300 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

  • 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 vAHx=?lK#4LVj~m_j$q( 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
    - {logo_url ? ( + HEaaN-logo + {/*{logo_url ? ( ) : ( - )} + )}*/} diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx index 90ea1dab74a67..df9893811caf5 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx @@ -95,7 +95,7 @@ export const UserDropdownContent: FC = ({ {Language.signOutLabel} - {supportLinks && ( + {/*{supportLinks && ( <> {supportLinks.map((link) => ( @@ -113,7 +113,7 @@ export const UserDropdownContent: FC = ({ ))} - )} + )}*/} diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index 9a367c1c13801..976c4712b49e9 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -69,7 +69,10 @@ export const LoginPage: FC = () => { /> ); } - } + } + //else { + // window.location.replace(`https://heaan.io`); + //} if (isConfiguringTheFirstUser) { return ; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx index ea3b150d9844e..9734167e259df 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx @@ -70,7 +70,7 @@ export const AccountForm: FC = ({ onChange={onChangeTrimmed(form)} aria-disabled={!editable} autoComplete="username" - disabled={!editable} + disabled fullWidth label={Language.usernameLabel} /> @@ -83,13 +83,14 @@ export const AccountForm: FC = ({ }} label={Language.nameLabel} helperText='The human-readable name is optional and can be accessed in a template via the "data.coder_workspace_owner.me.full_name" property.' + disabled /> -
    + {/*
    {Language.updateSettings} -
    +
    */} ); diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index b3f4a76cd4b3d..87bde9634657f 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -408,6 +408,7 @@ const WarningDialog: FC< // You can see the favicon designs here: https://www.figma.com/file/YIGBkXUcnRGz2ZKNmLaJQf/Coder-v2-Design?node-id=560%3A620 type FaviconType = + "heaan" | "favicon" | "favicon-success" | "favicon-error" @@ -417,26 +418,26 @@ type FaviconType = const getFaviconByStatus = (build: TypesGen.WorkspaceBuild): FaviconType => { switch (build.status) { case undefined: - return "favicon"; + return "heaan"; case "running": - return "favicon-success"; + return "heaan"; case "starting": - return "favicon-running"; + return "heaan"; case "stopping": - return "favicon-running"; + return "heaan"; case "stopped": - return "favicon"; + return "heaan"; case "deleting": - return "favicon"; + return "heaan"; case "deleted": - return "favicon"; + return "heaan"; case "canceling": - return "favicon-warning"; + return "heaan"; case "canceled": - return "favicon"; + return "heaan"; case "failed": - return "favicon-error"; + return "heaan"; case "pending": - return "favicon"; + return "heaan"; } }; diff --git a/site/src/theme/icons.json b/site/src/theme/icons.json index 3d63b9ac81b5a..42319971f3983 100644 --- a/site/src/theme/icons.json +++ b/site/src/theme/icons.json @@ -49,6 +49,8 @@ "go.svg", "goland.svg", "google.svg", + "heaan-dark.svg", + "heaan-light.svg", "image.svg", "intellij.svg", "java.svg", diff --git a/site/static/favicons/heaan-dark.svg b/site/static/favicons/heaan-dark.svg new file mode 100644 index 0000000000000..c05fbc7dc0dc3 --- /dev/null +++ b/site/static/favicons/heaan-dark.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/site/static/favicons/heaan-light.svg b/site/static/favicons/heaan-light.svg new file mode 100644 index 0000000000000..b2df44b83504f --- /dev/null +++ b/site/static/favicons/heaan-light.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/site/static/icon/heaan-dark.svg b/site/static/icon/heaan-dark.svg new file mode 100644 index 0000000000000..c05fbc7dc0dc3 --- /dev/null +++ b/site/static/icon/heaan-dark.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/site/static/icon/heaan-light.svg b/site/static/icon/heaan-light.svg new file mode 100644 index 0000000000000..b2df44b83504f --- /dev/null +++ b/site/static/icon/heaan-light.svg @@ -0,0 +1,8 @@ + + + + + + + + From 5853a98aff5220c271d86f87ad22319e87eddefc Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Mon, 21 Apr 2025 02:36:57 +0000 Subject: [PATCH 18/28] update: coder login page redirect to landing page --- site/src/pages/LoginPage/LoginPage.tsx | 8 ++++---- site/src/theme/icons.json | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index 976c4712b49e9..f490086ee9bde 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -69,10 +69,10 @@ export const LoginPage: FC = () => { /> ); } - } - //else { - // window.location.replace(`https://heaan.io`); - //} + } else { + window.location.replace(`https://heaan.io`); + return null; + } if (isConfiguringTheFirstUser) { return ; diff --git a/site/src/theme/icons.json b/site/src/theme/icons.json index 42319971f3983..54de2f4bf911e 100644 --- a/site/src/theme/icons.json +++ b/site/src/theme/icons.json @@ -21,6 +21,7 @@ "confluence.svg", "container.svg", "cpp.svg", + "cryptolab_symbol.svg", "cursor.svg", "database.svg", "datagrip.svg", From 7f5f6c20cf2f845e6725fe2d8c59ae32baa5ab9e Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Mon, 21 Apr 2025 04:54:04 +0000 Subject: [PATCH 19/28] fix: fix UI --- .../Navbar/UserDropdown/UserDropdownContent.tsx | 10 ++++++---- site/src/pages/TemplatePage/TemplateLayout.tsx | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx index df9893811caf5..02bc9f902b124 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx @@ -76,12 +76,12 @@ export const UserDropdownContent: FC = ({ - + {/* Install CLI - + */} @@ -118,7 +118,7 @@ export const UserDropdownContent: FC = ({ - + {/* = ({ > {buildInfo?.version} - + */} {Boolean(buildInfo?.deployment_id) && (
    = ({ {buildInfo?.deployment_id}
    + = ({
    )} +
    {"© 2025 CryptoLab, Inc."}
    {Language.copyrightText}

    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 diff --git a/docs/manifest.json b/docs/manifest.json index 7cf556984ecbf..119099ab0b061 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -284,7 +284,7 @@ "state": ["enterprise", "premium"] }, { - "title": "IDP Sync", + "title": "IdP Sync", "path": "./admin/users/idp-sync.md", "state": ["enterprise", "premium"] }, diff --git a/docs/reference/api/enterprise.md b/docs/reference/api/enterprise.md index 6f8b061ed9025..a1a61f4a5b54a 100644 --- a/docs/reference/api/enterprise.md +++ b/docs/reference/api/enterprise.md @@ -1953,6 +1953,141 @@ curl -X PATCH http://coder-server:8080/api/v2/organizations/{organization}/setti To perform this operation, you must be authenticated. [Learn more](authentication.md). +## Update group IdP Sync config + +### Code samples + +```shell +# Example request using curl +curl -X PATCH http://coder-server:8080/api/v2/organizations/{organization}/settings/idpsync/groups/config \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -H 'Coder-Session-Token: API_KEY' +``` + +`PATCH /organizations/{organization}/settings/idpsync/groups/config` + +> Body parameter + +```json +{ + "auto_create_missing_groups": true, + "field": "string", + "regex_filter": {} +} +``` + +### Parameters + +| Name | In | Type | Required | Description | +|----------------|------|----------------------------------------------------------------------------------------------|----------|-------------------------| +| `organization` | path | string(uuid) | true | Organization ID or name | +| `body` | body | [codersdk.PatchGroupIDPSyncConfigRequest](schemas.md#codersdkpatchgroupidpsyncconfigrequest) | true | New config values | + +### Example responses + +> 200 Response + +```json +{ + "auto_create_missing_groups": true, + "field": "string", + "legacy_group_name_mapping": { + "property1": "string", + "property2": "string" + }, + "mapping": { + "property1": [ + "string" + ], + "property2": [ + "string" + ] + }, + "regex_filter": {} +} +``` + +### Responses + +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|-------------|--------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.GroupSyncSettings](schemas.md#codersdkgroupsyncsettings) | + +To perform this operation, you must be authenticated. [Learn more](authentication.md). + +## Update group IdP Sync mapping + +### Code samples + +```shell +# Example request using curl +curl -X PATCH http://coder-server:8080/api/v2/organizations/{organization}/settings/idpsync/groups/mapping \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -H 'Coder-Session-Token: API_KEY' +``` + +`PATCH /organizations/{organization}/settings/idpsync/groups/mapping` + +> Body parameter + +```json +{ + "add": [ + { + "gets": "string", + "given": "string" + } + ], + "remove": [ + { + "gets": "string", + "given": "string" + } + ] +} +``` + +### Parameters + +| Name | In | Type | Required | Description | +|----------------|------|------------------------------------------------------------------------------------------------|----------|-----------------------------------------------| +| `organization` | path | string(uuid) | true | Organization ID or name | +| `body` | body | [codersdk.PatchGroupIDPSyncMappingRequest](schemas.md#codersdkpatchgroupidpsyncmappingrequest) | true | Description of the mappings to add and remove | + +### Example responses + +> 200 Response + +```json +{ + "auto_create_missing_groups": true, + "field": "string", + "legacy_group_name_mapping": { + "property1": "string", + "property2": "string" + }, + "mapping": { + "property1": [ + "string" + ], + "property2": [ + "string" + ] + }, + "regex_filter": {} +} +``` + +### Responses + +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|-------------|--------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.GroupSyncSettings](schemas.md#codersdkgroupsyncsettings) | + +To perform this operation, you must be authenticated. [Learn more](authentication.md). + ## Get role IdP Sync settings by organization ### Code samples @@ -2061,6 +2196,127 @@ curl -X PATCH http://coder-server:8080/api/v2/organizations/{organization}/setti To perform this operation, you must be authenticated. [Learn more](authentication.md). +## Update role IdP Sync config + +### Code samples + +```shell +# Example request using curl +curl -X PATCH http://coder-server:8080/api/v2/organizations/{organization}/settings/idpsync/roles/config \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -H 'Coder-Session-Token: API_KEY' +``` + +`PATCH /organizations/{organization}/settings/idpsync/roles/config` + +> Body parameter + +```json +{ + "field": "string" +} +``` + +### Parameters + +| Name | In | Type | Required | Description | +|----------------|------|--------------------------------------------------------------------------------------------|----------|-------------------------| +| `organization` | path | string(uuid) | true | Organization ID or name | +| `body` | body | [codersdk.PatchRoleIDPSyncConfigRequest](schemas.md#codersdkpatchroleidpsyncconfigrequest) | true | New config values | + +### Example responses + +> 200 Response + +```json +{ + "field": "string", + "mapping": { + "property1": [ + "string" + ], + "property2": [ + "string" + ] + } +} +``` + +### Responses + +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|-------------|------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.RoleSyncSettings](schemas.md#codersdkrolesyncsettings) | + +To perform this operation, you must be authenticated. [Learn more](authentication.md). + +## Update role IdP Sync mapping + +### Code samples + +```shell +# Example request using curl +curl -X PATCH http://coder-server:8080/api/v2/organizations/{organization}/settings/idpsync/roles/mapping \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -H 'Coder-Session-Token: API_KEY' +``` + +`PATCH /organizations/{organization}/settings/idpsync/roles/mapping` + +> Body parameter + +```json +{ + "add": [ + { + "gets": "string", + "given": "string" + } + ], + "remove": [ + { + "gets": "string", + "given": "string" + } + ] +} +``` + +### Parameters + +| Name | In | Type | Required | Description | +|----------------|------|----------------------------------------------------------------------------------------------|----------|-----------------------------------------------| +| `organization` | path | string(uuid) | true | Organization ID or name | +| `body` | body | [codersdk.PatchRoleIDPSyncMappingRequest](schemas.md#codersdkpatchroleidpsyncmappingrequest) | true | Description of the mappings to add and remove | + +### Example responses + +> 200 Response + +```json +{ + "field": "string", + "mapping": { + "property1": [ + "string" + ], + "property2": [ + "string" + ] + } +} +``` + +### Responses + +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|-------------|------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.RoleSyncSettings](schemas.md#codersdkrolesyncsettings) | + +To perform this operation, you must be authenticated. [Learn more](authentication.md). + ## Fetch provisioner key details ### Code samples @@ -2677,6 +2933,128 @@ curl -X PATCH http://coder-server:8080/api/v2/settings/idpsync/organization \ To perform this operation, you must be authenticated. [Learn more](authentication.md). +## Update organization IdP Sync config + +### Code samples + +```shell +# Example request using curl +curl -X PATCH http://coder-server:8080/api/v2/settings/idpsync/organization/config \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -H 'Coder-Session-Token: API_KEY' +``` + +`PATCH /settings/idpsync/organization/config` + +> Body parameter + +```json +{ + "assign_default": true, + "field": "string" +} +``` + +### Parameters + +| Name | In | Type | Required | Description | +|--------|------|------------------------------------------------------------------------------------------------------------|----------|-------------------| +| `body` | body | [codersdk.PatchOrganizationIDPSyncConfigRequest](schemas.md#codersdkpatchorganizationidpsyncconfigrequest) | true | New config values | + +### Example responses + +> 200 Response + +```json +{ + "field": "string", + "mapping": { + "property1": [ + "string" + ], + "property2": [ + "string" + ] + }, + "organization_assign_default": true +} +``` + +### Responses + +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|-------------|----------------------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.OrganizationSyncSettings](schemas.md#codersdkorganizationsyncsettings) | + +To perform this operation, you must be authenticated. [Learn more](authentication.md). + +## Update organization IdP Sync mapping + +### Code samples + +```shell +# Example request using curl +curl -X PATCH http://coder-server:8080/api/v2/settings/idpsync/organization/mapping \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -H 'Coder-Session-Token: API_KEY' +``` + +`PATCH /settings/idpsync/organization/mapping` + +> Body parameter + +```json +{ + "add": [ + { + "gets": "string", + "given": "string" + } + ], + "remove": [ + { + "gets": "string", + "given": "string" + } + ] +} +``` + +### Parameters + +| Name | In | Type | Required | Description | +|--------|------|--------------------------------------------------------------------------------------------------------------|----------|-----------------------------------------------| +| `body` | body | [codersdk.PatchOrganizationIDPSyncMappingRequest](schemas.md#codersdkpatchorganizationidpsyncmappingrequest) | true | Description of the mappings to add and remove | + +### Example responses + +> 200 Response + +```json +{ + "field": "string", + "mapping": { + "property1": [ + "string" + ], + "property2": [ + "string" + ] + }, + "organization_assign_default": true +} +``` + +### Responses + +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|-------------|----------------------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.OrganizationSyncSettings](schemas.md#codersdkorganizationsyncsettings) | + +To perform this operation, you must be authenticated. [Learn more](authentication.md). + ## Get template ACLs ### Code samples diff --git a/docs/reference/api/schemas.md b/docs/reference/api/schemas.md index db6fc2a51f58e..20ed37f81f7f7 100644 --- a/docs/reference/api/schemas.md +++ b/docs/reference/api/schemas.md @@ -4152,6 +4152,54 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith | » `[any property]` | array of string | false | | | | `organization_assign_default` | boolean | false | | Organization assign default will ensure the default org is always included for every user, regardless of their claims. This preserves legacy behavior. | +## codersdk.PatchGroupIDPSyncConfigRequest + +```json +{ + "auto_create_missing_groups": true, + "field": "string", + "regex_filter": {} +} +``` + +### Properties + +| Name | Type | Required | Restrictions | Description | +|------------------------------|--------------------------------|----------|--------------|-------------| +| `auto_create_missing_groups` | boolean | false | | | +| `field` | string | false | | | +| `regex_filter` | [regexp.Regexp](#regexpregexp) | false | | | + +## codersdk.PatchGroupIDPSyncMappingRequest + +```json +{ + "add": [ + { + "gets": "string", + "given": "string" + } + ], + "remove": [ + { + "gets": "string", + "given": "string" + } + ] +} +``` + +### Properties + +| Name | Type | Required | Restrictions | Description | +|-----------|-----------------|----------|--------------|----------------------------------------------------------| +| `add` | array of object | false | | | +| `» gets` | string | false | | The ID of the Coder resource the user should be added to | +| `» given` | string | false | | The IdP claim the user has | +| `remove` | array of object | false | | | +| `» gets` | string | false | | The ID of the Coder resource the user should be added to | +| `» given` | string | false | | The IdP claim the user has | + ## codersdk.PatchGroupRequest ```json @@ -4180,6 +4228,96 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith | `quota_allowance` | integer | false | | | | `remove_users` | array of string | false | | | +## codersdk.PatchOrganizationIDPSyncConfigRequest + +```json +{ + "assign_default": true, + "field": "string" +} +``` + +### Properties + +| Name | Type | Required | Restrictions | Description | +|------------------|---------|----------|--------------|-------------| +| `assign_default` | boolean | false | | | +| `field` | string | false | | | + +## codersdk.PatchOrganizationIDPSyncMappingRequest + +```json +{ + "add": [ + { + "gets": "string", + "given": "string" + } + ], + "remove": [ + { + "gets": "string", + "given": "string" + } + ] +} +``` + +### Properties + +| Name | Type | Required | Restrictions | Description | +|-----------|-----------------|----------|--------------|----------------------------------------------------------| +| `add` | array of object | false | | | +| `» gets` | string | false | | The ID of the Coder resource the user should be added to | +| `» given` | string | false | | The IdP claim the user has | +| `remove` | array of object | false | | | +| `» gets` | string | false | | The ID of the Coder resource the user should be added to | +| `» given` | string | false | | The IdP claim the user has | + +## codersdk.PatchRoleIDPSyncConfigRequest + +```json +{ + "field": "string" +} +``` + +### Properties + +| Name | Type | Required | Restrictions | Description | +|---------|--------|----------|--------------|-------------| +| `field` | string | false | | | + +## codersdk.PatchRoleIDPSyncMappingRequest + +```json +{ + "add": [ + { + "gets": "string", + "given": "string" + } + ], + "remove": [ + { + "gets": "string", + "given": "string" + } + ] +} +``` + +### Properties + +| Name | Type | Required | Restrictions | Description | +|-----------|-----------------|----------|--------------|----------------------------------------------------------| +| `add` | array of object | false | | | +| `» gets` | string | false | | The ID of the Coder resource the user should be added to | +| `» given` | string | false | | The IdP claim the user has | +| `remove` | array of object | false | | | +| `» gets` | string | false | | The ID of the Coder resource the user should be added to | +| `» given` | string | false | | The IdP claim the user has | + ## codersdk.PatchTemplateVersionRequest ```json diff --git a/docs/tutorials/best-practices/organizations.md b/docs/tutorials/best-practices/organizations.md index 473bf832e11d8..5771df3e0bb8d 100644 --- a/docs/tutorials/best-practices/organizations.md +++ b/docs/tutorials/best-practices/organizations.md @@ -94,17 +94,6 @@ provider such as Okta. A single claim from the identity provider (like `memberOf`) can be used to sync site-wide roles, organizations, groups, and organization roles. -### Planned enhancements - -Site-wide role sync is managed via server flags. We plan on changing this to -runtime configuration so Coder does not need a re-deploy: - -- Issue [coder/internal#86](https://github.com/coder/internal/issues/86) - -Make all sync configurable via the dashboard UI: - -- [coder/coder#15290](https://github.com/coder/coder/issues/15290) - Regex filters and mapping can be configured to ensure the proper resources are allocated in Coder. Learn more about [IDP sync](../../admin/users/idp-sync.md). diff --git a/enterprise/coderd/coderd.go b/enterprise/coderd/coderd.go index b32f763720b9d..2a91fbbfd6f93 100644 --- a/enterprise/coderd/coderd.go +++ b/enterprise/coderd/coderd.go @@ -295,7 +295,10 @@ func New(ctx context.Context, options *Options) (_ *API, err error) { r.Route("/organization", func(r chi.Router) { r.Get("/", api.organizationIDPSyncSettings) r.Patch("/", api.patchOrganizationIDPSyncSettings) + r.Patch("/config", api.patchOrganizationIDPSyncConfig) + r.Patch("/mapping", api.patchOrganizationIDPSyncMapping) }) + r.Get("/available-fields", api.deploymentIDPSyncClaimFields) r.Get("/field-values", api.deploymentIDPSyncClaimFieldValues) }) @@ -307,11 +310,17 @@ func New(ctx context.Context, options *Options) (_ *API, err error) { httpmw.ExtractOrganizationParam(api.Database), ) r.Route("/organizations/{organization}/settings", func(r chi.Router) { - r.Get("/idpsync/available-fields", api.organizationIDPSyncClaimFields) r.Get("/idpsync/groups", api.groupIDPSyncSettings) r.Patch("/idpsync/groups", api.patchGroupIDPSyncSettings) + r.Patch("/idpsync/groups/config", api.patchGroupIDPSyncConfig) + r.Patch("/idpsync/groups/mapping", api.patchGroupIDPSyncMapping) + r.Get("/idpsync/roles", api.roleIDPSyncSettings) r.Patch("/idpsync/roles", api.patchRoleIDPSyncSettings) + r.Patch("/idpsync/roles/config", api.patchRoleIDPSyncConfig) + r.Patch("/idpsync/roles/mapping", api.patchRoleIDPSyncMapping) + + r.Get("/idpsync/available-fields", api.organizationIDPSyncClaimFields) r.Get("/idpsync/field-values", api.organizationIDPSyncClaimFieldValues) }) }) diff --git a/enterprise/coderd/enidpsync/enidpsync.go b/enterprise/coderd/enidpsync/enidpsync.go index c7ba8dd3ecdc6..2020a4300ebc6 100644 --- a/enterprise/coderd/enidpsync/enidpsync.go +++ b/enterprise/coderd/enidpsync/enidpsync.go @@ -7,6 +7,8 @@ import ( "github.com/coder/coder/v2/coderd/runtimeconfig" ) +var _ idpsync.IDPSync = &EnterpriseIDPSync{} + // EnterpriseIDPSync enabled syncing user information from an external IDP. // The sync is an enterprise feature, so this struct wraps the AGPL implementation // and extends it with enterprise capabilities. These capabilities can entirely diff --git a/enterprise/coderd/enidpsync/organizations.go b/enterprise/coderd/enidpsync/organizations.go index 313d90fac8a9f..826144afc1492 100644 --- a/enterprise/coderd/enidpsync/organizations.go +++ b/enterprise/coderd/enidpsync/organizations.go @@ -19,6 +19,8 @@ func (e EnterpriseIDPSync) OrganizationSyncEnabled(ctx context.Context, db datab return false } + // If this logic is ever updated, make sure to update the corresponding + // checkIDPOrgSync in coderd/telemetry/telemetry.go. settings, err := e.OrganizationSyncSettings(ctx, db) if err == nil && settings.Field != "" { return true diff --git a/enterprise/coderd/enidpsync/organizations_test.go b/enterprise/coderd/enidpsync/organizations_test.go index 36dbedf3a466d..391535c9478d7 100644 --- a/enterprise/coderd/enidpsync/organizations_test.go +++ b/enterprise/coderd/enidpsync/organizations_test.go @@ -300,7 +300,7 @@ func TestOrganizationSync(t *testing.T) { // Create a new sync object sync := enidpsync.NewSync(logger, runtimeconfig.NewManager(), caseData.Entitlements, caseData.Settings) if caseData.RuntimeSettings != nil { - err := sync.UpdateOrganizationSettings(ctx, rdb, *caseData.RuntimeSettings) + err := sync.UpdateOrganizationSyncSettings(ctx, rdb, *caseData.RuntimeSettings) require.NoError(t, err) } diff --git a/enterprise/coderd/idpsync.go b/enterprise/coderd/idpsync.go index 192d61ea996c6..2dcee572eb692 100644 --- a/enterprise/coderd/idpsync.go +++ b/enterprise/coderd/idpsync.go @@ -3,6 +3,7 @@ package coderd import ( "fmt" "net/http" + "slices" "github.com/google/uuid" @@ -14,6 +15,7 @@ import ( "github.com/coder/coder/v2/coderd/idpsync" "github.com/coder/coder/v2/coderd/rbac" "github.com/coder/coder/v2/coderd/rbac/policy" + "github.com/coder/coder/v2/coderd/util/slice" "github.com/coder/coder/v2/codersdk" ) @@ -59,7 +61,6 @@ func (api *API) patchGroupIDPSyncSettings(rw http.ResponseWriter, r *http.Reques ctx := r.Context() org := httpmw.OrganizationParam(r) auditor := *api.AGPL.Auditor.Load() - aReq, commitAudit := audit.InitRequest[idpsync.GroupSyncSettings](rw, &audit.RequestParams{ Audit: auditor, Log: api.Logger, @@ -102,7 +103,7 @@ func (api *API) patchGroupIDPSyncSettings(rw http.ResponseWriter, r *http.Reques } aReq.Old = *existing - err = api.IDPSync.UpdateGroupSettings(sysCtx, org.ID, api.Database, idpsync.GroupSyncSettings{ + err = api.IDPSync.UpdateGroupSyncSettings(sysCtx, org.ID, api.Database, idpsync.GroupSyncSettings{ Field: req.Field, Mapping: req.Mapping, RegexFilter: req.RegexFilter, @@ -130,6 +131,153 @@ func (api *API) patchGroupIDPSyncSettings(rw http.ResponseWriter, r *http.Reques }) } +// @Summary Update group IdP Sync config +// @ID update-group-idp-sync-config +// @Security CoderSessionToken +// @Produce json +// @Accept json +// @Tags Enterprise +// @Success 200 {object} codersdk.GroupSyncSettings +// @Param organization path string true "Organization ID or name" format(uuid) +// @Param request body codersdk.PatchGroupIDPSyncConfigRequest true "New config values" +// @Router /organizations/{organization}/settings/idpsync/groups/config [patch] +func (api *API) patchGroupIDPSyncConfig(rw http.ResponseWriter, r *http.Request) { + ctx := r.Context() + org := httpmw.OrganizationParam(r) + auditor := *api.AGPL.Auditor.Load() + aReq, commitAudit := audit.InitRequest[idpsync.GroupSyncSettings](rw, &audit.RequestParams{ + Audit: auditor, + Log: api.Logger, + Request: r, + Action: database.AuditActionWrite, + OrganizationID: org.ID, + }) + defer commitAudit() + + if !api.Authorize(r, policy.ActionUpdate, rbac.ResourceIdpsyncSettings.InOrg(org.ID)) { + httpapi.Forbidden(rw) + return + } + + var req codersdk.PatchGroupIDPSyncConfigRequest + if !httpapi.Read(ctx, rw, r, &req) { + return + } + + var settings idpsync.GroupSyncSettings + //nolint:gocritic // Requires system context to update runtime config + sysCtx := dbauthz.AsSystemRestricted(ctx) + err := database.ReadModifyUpdate(api.Database, func(tx database.Store) error { + existing, err := api.IDPSync.GroupSyncSettings(sysCtx, org.ID, tx) + if err != nil { + return err + } + aReq.Old = *existing + + settings = idpsync.GroupSyncSettings{ + Field: req.Field, + RegexFilter: req.RegexFilter, + AutoCreateMissing: req.AutoCreateMissing, + LegacyNameMapping: existing.LegacyNameMapping, + Mapping: existing.Mapping, + } + + err = api.IDPSync.UpdateGroupSyncSettings(sysCtx, org.ID, tx, settings) + if err != nil { + return err + } + + return nil + }) + if err != nil { + httpapi.InternalServerError(rw, err) + return + } + + aReq.New = settings + httpapi.Write(ctx, rw, http.StatusOK, codersdk.GroupSyncSettings{ + Field: settings.Field, + RegexFilter: settings.RegexFilter, + AutoCreateMissing: settings.AutoCreateMissing, + LegacyNameMapping: settings.LegacyNameMapping, + Mapping: settings.Mapping, + }) +} + +// @Summary Update group IdP Sync mapping +// @ID update-group-idp-sync-mapping +// @Security CoderSessionToken +// @Produce json +// @Accept json +// @Tags Enterprise +// @Success 200 {object} codersdk.GroupSyncSettings +// @Param organization path string true "Organization ID or name" format(uuid) +// @Param request body codersdk.PatchGroupIDPSyncMappingRequest true "Description of the mappings to add and remove" +// @Router /organizations/{organization}/settings/idpsync/groups/mapping [patch] +func (api *API) patchGroupIDPSyncMapping(rw http.ResponseWriter, r *http.Request) { + ctx := r.Context() + org := httpmw.OrganizationParam(r) + auditor := *api.AGPL.Auditor.Load() + aReq, commitAudit := audit.InitRequest[idpsync.GroupSyncSettings](rw, &audit.RequestParams{ + Audit: auditor, + Log: api.Logger, + Request: r, + Action: database.AuditActionWrite, + OrganizationID: org.ID, + }) + defer commitAudit() + + if !api.Authorize(r, policy.ActionUpdate, rbac.ResourceIdpsyncSettings.InOrg(org.ID)) { + httpapi.Forbidden(rw) + return + } + + var req codersdk.PatchGroupIDPSyncMappingRequest + if !httpapi.Read(ctx, rw, r, &req) { + return + } + + var settings idpsync.GroupSyncSettings + //nolint:gocritic // Requires system context to update runtime config + sysCtx := dbauthz.AsSystemRestricted(ctx) + err := database.ReadModifyUpdate(api.Database, func(tx database.Store) error { + existing, err := api.IDPSync.GroupSyncSettings(sysCtx, org.ID, tx) + if err != nil { + return err + } + aReq.Old = *existing + + newMapping := applyIDPSyncMappingDiff(existing.Mapping, req.Add, req.Remove) + settings = idpsync.GroupSyncSettings{ + Field: existing.Field, + RegexFilter: existing.RegexFilter, + AutoCreateMissing: existing.AutoCreateMissing, + LegacyNameMapping: existing.LegacyNameMapping, + Mapping: newMapping, + } + + err = api.IDPSync.UpdateGroupSyncSettings(sysCtx, org.ID, tx, settings) + if err != nil { + return err + } + + return nil + }) + if err != nil { + httpapi.InternalServerError(rw, err) + return + } + + aReq.New = settings + httpapi.Write(ctx, rw, http.StatusOK, codersdk.GroupSyncSettings{ + Field: settings.Field, + RegexFilter: settings.RegexFilter, + AutoCreateMissing: settings.AutoCreateMissing, + LegacyNameMapping: settings.LegacyNameMapping, + Mapping: settings.Mapping, + }) +} + // @Summary Get role IdP Sync settings by organization // @ID get-role-idp-sync-settings-by-organization // @Security CoderSessionToken @@ -201,7 +349,7 @@ func (api *API) patchRoleIDPSyncSettings(rw http.ResponseWriter, r *http.Request } aReq.Old = *existing - err = api.IDPSync.UpdateRoleSettings(sysCtx, org.ID, api.Database, idpsync.RoleSyncSettings{ + err = api.IDPSync.UpdateRoleSyncSettings(sysCtx, org.ID, api.Database, idpsync.RoleSyncSettings{ Field: req.Field, Mapping: req.Mapping, }) @@ -223,6 +371,141 @@ func (api *API) patchRoleIDPSyncSettings(rw http.ResponseWriter, r *http.Request }) } +// @Summary Update role IdP Sync config +// @ID update-role-idp-sync-config +// @Security CoderSessionToken +// @Produce json +// @Accept json +// @Tags Enterprise +// @Success 200 {object} codersdk.RoleSyncSettings +// @Param organization path string true "Organization ID or name" format(uuid) +// @Param request body codersdk.PatchRoleIDPSyncConfigRequest true "New config values" +// @Router /organizations/{organization}/settings/idpsync/roles/config [patch] +func (api *API) patchRoleIDPSyncConfig(rw http.ResponseWriter, r *http.Request) { + ctx := r.Context() + org := httpmw.OrganizationParam(r) + auditor := *api.AGPL.Auditor.Load() + aReq, commitAudit := audit.InitRequest[idpsync.RoleSyncSettings](rw, &audit.RequestParams{ + Audit: auditor, + Log: api.Logger, + Request: r, + Action: database.AuditActionWrite, + OrganizationID: org.ID, + }) + defer commitAudit() + + if !api.Authorize(r, policy.ActionUpdate, rbac.ResourceIdpsyncSettings.InOrg(org.ID)) { + httpapi.Forbidden(rw) + return + } + + var req codersdk.PatchRoleIDPSyncConfigRequest + if !httpapi.Read(ctx, rw, r, &req) { + return + } + + var settings idpsync.RoleSyncSettings + //nolint:gocritic // Requires system context to update runtime config + sysCtx := dbauthz.AsSystemRestricted(ctx) + err := database.ReadModifyUpdate(api.Database, func(tx database.Store) error { + existing, err := api.IDPSync.RoleSyncSettings(sysCtx, org.ID, tx) + if err != nil { + return err + } + aReq.Old = *existing + + settings = idpsync.RoleSyncSettings{ + Field: req.Field, + Mapping: existing.Mapping, + } + + err = api.IDPSync.UpdateRoleSyncSettings(sysCtx, org.ID, tx, settings) + if err != nil { + return err + } + + return nil + }) + if err != nil { + httpapi.InternalServerError(rw, err) + return + } + + aReq.New = settings + httpapi.Write(ctx, rw, http.StatusOK, codersdk.RoleSyncSettings{ + Field: settings.Field, + Mapping: settings.Mapping, + }) +} + +// @Summary Update role IdP Sync mapping +// @ID update-role-idp-sync-mapping +// @Security CoderSessionToken +// @Produce json +// @Accept json +// @Tags Enterprise +// @Success 200 {object} codersdk.RoleSyncSettings +// @Param organization path string true "Organization ID or name" format(uuid) +// @Param request body codersdk.PatchRoleIDPSyncMappingRequest true "Description of the mappings to add and remove" +// @Router /organizations/{organization}/settings/idpsync/roles/mapping [patch] +func (api *API) patchRoleIDPSyncMapping(rw http.ResponseWriter, r *http.Request) { + ctx := r.Context() + org := httpmw.OrganizationParam(r) + auditor := *api.AGPL.Auditor.Load() + aReq, commitAudit := audit.InitRequest[idpsync.RoleSyncSettings](rw, &audit.RequestParams{ + Audit: auditor, + Log: api.Logger, + Request: r, + Action: database.AuditActionWrite, + OrganizationID: org.ID, + }) + defer commitAudit() + + if !api.Authorize(r, policy.ActionUpdate, rbac.ResourceIdpsyncSettings.InOrg(org.ID)) { + httpapi.Forbidden(rw) + return + } + + var req codersdk.PatchRoleIDPSyncMappingRequest + if !httpapi.Read(ctx, rw, r, &req) { + return + } + + var settings idpsync.RoleSyncSettings + //nolint:gocritic // Requires system context to update runtime config + sysCtx := dbauthz.AsSystemRestricted(ctx) + err := database.ReadModifyUpdate(api.Database, func(tx database.Store) error { + existing, err := api.IDPSync.RoleSyncSettings(sysCtx, org.ID, tx) + if err != nil { + return err + } + aReq.Old = *existing + + newMapping := applyIDPSyncMappingDiff(existing.Mapping, req.Add, req.Remove) + settings = idpsync.RoleSyncSettings{ + Field: existing.Field, + Mapping: newMapping, + } + + err = api.IDPSync.UpdateRoleSyncSettings(sysCtx, org.ID, tx, settings) + if err != nil { + return err + } + + return nil + }) + if err != nil { + httpapi.InternalServerError(rw, err) + return + } + + aReq.New = settings + httpapi.Write(ctx, rw, http.StatusOK, codersdk.RoleSyncSettings{ + Field: settings.Field, + Mapping: settings.Mapping, + }) +} + // @Summary Get organization IdP Sync settings // @ID get-organization-idp-sync-settings // @Security CoderSessionToken @@ -292,7 +575,7 @@ func (api *API) patchOrganizationIDPSyncSettings(rw http.ResponseWriter, r *http } aReq.Old = *existing - err = api.IDPSync.UpdateOrganizationSettings(sysCtx, api.Database, idpsync.OrganizationSyncSettings{ + err = api.IDPSync.UpdateOrganizationSyncSettings(sysCtx, api.Database, idpsync.OrganizationSyncSettings{ Field: req.Field, // We do not check if the mappings point to actual organizations. Mapping: req.Mapping, @@ -317,6 +600,139 @@ func (api *API) patchOrganizationIDPSyncSettings(rw http.ResponseWriter, r *http }) } +// @Summary Update organization IdP Sync config +// @ID update-organization-idp-sync-config +// @Security CoderSessionToken +// @Produce json +// @Accept json +// @Tags Enterprise +// @Success 200 {object} codersdk.OrganizationSyncSettings +// @Param request body codersdk.PatchOrganizationIDPSyncConfigRequest true "New config values" +// @Router /settings/idpsync/organization/config [patch] +func (api *API) patchOrganizationIDPSyncConfig(rw http.ResponseWriter, r *http.Request) { + ctx := r.Context() + auditor := *api.AGPL.Auditor.Load() + aReq, commitAudit := audit.InitRequest[idpsync.OrganizationSyncSettings](rw, &audit.RequestParams{ + Audit: auditor, + Log: api.Logger, + Request: r, + Action: database.AuditActionWrite, + }) + defer commitAudit() + + if !api.Authorize(r, policy.ActionUpdate, rbac.ResourceIdpsyncSettings) { + httpapi.Forbidden(rw) + return + } + + var req codersdk.PatchOrganizationIDPSyncConfigRequest + if !httpapi.Read(ctx, rw, r, &req) { + return + } + + var settings idpsync.OrganizationSyncSettings + //nolint:gocritic // Requires system context to update runtime config + sysCtx := dbauthz.AsSystemRestricted(ctx) + err := database.ReadModifyUpdate(api.Database, func(tx database.Store) error { + existing, err := api.IDPSync.OrganizationSyncSettings(sysCtx, tx) + if err != nil { + return err + } + aReq.Old = *existing + + settings = idpsync.OrganizationSyncSettings{ + Field: req.Field, + AssignDefault: req.AssignDefault, + Mapping: existing.Mapping, + } + + err = api.IDPSync.UpdateOrganizationSyncSettings(sysCtx, tx, settings) + if err != nil { + return err + } + + return nil + }) + if err != nil { + httpapi.InternalServerError(rw, err) + return + } + + aReq.New = settings + httpapi.Write(ctx, rw, http.StatusOK, codersdk.OrganizationSyncSettings{ + Field: settings.Field, + Mapping: settings.Mapping, + AssignDefault: settings.AssignDefault, + }) +} + +// @Summary Update organization IdP Sync mapping +// @ID update-organization-idp-sync-mapping +// @Security CoderSessionToken +// @Produce json +// @Accept json +// @Tags Enterprise +// @Success 200 {object} codersdk.OrganizationSyncSettings +// @Param request body codersdk.PatchOrganizationIDPSyncMappingRequest true "Description of the mappings to add and remove" +// @Router /settings/idpsync/organization/mapping [patch] +func (api *API) patchOrganizationIDPSyncMapping(rw http.ResponseWriter, r *http.Request) { + ctx := r.Context() + auditor := *api.AGPL.Auditor.Load() + aReq, commitAudit := audit.InitRequest[idpsync.OrganizationSyncSettings](rw, &audit.RequestParams{ + Audit: auditor, + Log: api.Logger, + Request: r, + Action: database.AuditActionWrite, + }) + defer commitAudit() + + if !api.Authorize(r, policy.ActionUpdate, rbac.ResourceIdpsyncSettings) { + httpapi.Forbidden(rw) + return + } + + var req codersdk.PatchOrganizationIDPSyncMappingRequest + if !httpapi.Read(ctx, rw, r, &req) { + return + } + + var settings idpsync.OrganizationSyncSettings + //nolint:gocritic // Requires system context to update runtime config + sysCtx := dbauthz.AsSystemRestricted(ctx) + err := database.ReadModifyUpdate(api.Database, func(tx database.Store) error { + existing, err := api.IDPSync.OrganizationSyncSettings(sysCtx, tx) + if err != nil { + return err + } + aReq.Old = *existing + + newMapping := applyIDPSyncMappingDiff(existing.Mapping, req.Add, req.Remove) + settings = idpsync.OrganizationSyncSettings{ + Field: existing.Field, + Mapping: newMapping, + AssignDefault: existing.AssignDefault, + } + + err = api.IDPSync.UpdateOrganizationSyncSettings(sysCtx, tx, settings) + if err != nil { + return err + } + + return nil + }) + if err != nil { + httpapi.InternalServerError(rw, err) + return + } + + aReq.New = settings + httpapi.Write(ctx, rw, http.StatusOK, codersdk.OrganizationSyncSettings{ + Field: settings.Field, + Mapping: settings.Mapping, + AssignDefault: settings.AssignDefault, + }) +} + // @Summary Get the available organization idp sync claim fields // @ID get-the-available-organization-idp-sync-claim-fields // @Security CoderSessionToken @@ -423,3 +839,31 @@ func (api *API) idpSyncClaimFieldValues(orgID uuid.UUID, rw http.ResponseWriter, httpapi.Write(ctx, rw, http.StatusOK, fieldValues) } + +func applyIDPSyncMappingDiff[IDType uuid.UUID | string]( + previous map[string][]IDType, + add, remove []codersdk.IDPSyncMapping[IDType], +) map[string][]IDType { + next := make(map[string][]IDType) + + // Copy existing mapping + for key, ids := range previous { + next[key] = append(next[key], ids...) + } + + // Add unique entries + for _, mapping := range add { + if !slice.Contains(next[mapping.Given], mapping.Gets) { + next[mapping.Given] = append(next[mapping.Given], mapping.Gets) + } + } + + // Remove entries + for _, mapping := range remove { + next[mapping.Given] = slices.DeleteFunc(next[mapping.Given], func(u IDType) bool { + return u == mapping.Gets + }) + } + + return next +} diff --git a/enterprise/coderd/idpsync_internal_test.go b/enterprise/coderd/idpsync_internal_test.go new file mode 100644 index 0000000000000..51db04e74b913 --- /dev/null +++ b/enterprise/coderd/idpsync_internal_test.go @@ -0,0 +1,117 @@ +package coderd + +import ( + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" + + "github.com/coder/coder/v2/codersdk" +) + +func TestApplyIDPSyncMappingDiff(t *testing.T) { + t.Parallel() + + t.Run("with UUIDs", func(t *testing.T) { + t.Parallel() + + id := []uuid.UUID{ + uuid.MustParse("00000000-b8bd-46bb-bb6c-6c2b2c0dd2ea"), + uuid.MustParse("01000000-fbe8-464c-9429-fe01a03f3644"), + uuid.MustParse("02000000-0926-407b-9998-39af62e3d0c5"), + uuid.MustParse("03000000-92f6-4bfd-bba6-0f54667b131c"), + } + + mapping := applyIDPSyncMappingDiff(map[string][]uuid.UUID{}, + []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wibble", Gets: id[0]}, + {Given: "wibble", Gets: id[1]}, + {Given: "wobble", Gets: id[0]}, + {Given: "wobble", Gets: id[1]}, + {Given: "wobble", Gets: id[2]}, + {Given: "wobble", Gets: id[3]}, + {Given: "wooble", Gets: id[0]}, + }, + // Remove takes priority over Add, so `3` should not actually be added. + []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wobble", Gets: id[3]}, + }, + ) + + expected := map[string][]uuid.UUID{ + "wibble": {id[0], id[1]}, + "wobble": {id[0], id[1], id[2]}, + "wooble": {id[0]}, + } + + require.Equal(t, expected, mapping) + + mapping = applyIDPSyncMappingDiff(mapping, + []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wibble", Gets: id[2]}, + {Given: "wobble", Gets: id[3]}, + {Given: "wooble", Gets: id[0]}, + }, + []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wibble", Gets: id[0]}, + {Given: "wobble", Gets: id[1]}, + }, + ) + + expected = map[string][]uuid.UUID{ + "wibble": {id[1], id[2]}, + "wobble": {id[0], id[2], id[3]}, + "wooble": {id[0]}, + } + + require.Equal(t, expected, mapping) + }) + + t.Run("with strings", func(t *testing.T) { + t.Parallel() + + mapping := applyIDPSyncMappingDiff(map[string][]string{}, + []codersdk.IDPSyncMapping[string]{ + {Given: "wibble", Gets: "group-00"}, + {Given: "wibble", Gets: "group-01"}, + {Given: "wobble", Gets: "group-00"}, + {Given: "wobble", Gets: "group-01"}, + {Given: "wobble", Gets: "group-02"}, + {Given: "wobble", Gets: "group-03"}, + {Given: "wooble", Gets: "group-00"}, + }, + // Remove takes priority over Add, so `3` should not actually be added. + []codersdk.IDPSyncMapping[string]{ + {Given: "wobble", Gets: "group-03"}, + }, + ) + + expected := map[string][]string{ + "wibble": {"group-00", "group-01"}, + "wobble": {"group-00", "group-01", "group-02"}, + "wooble": {"group-00"}, + } + + require.Equal(t, expected, mapping) + + mapping = applyIDPSyncMappingDiff(mapping, + []codersdk.IDPSyncMapping[string]{ + {Given: "wibble", Gets: "group-02"}, + {Given: "wobble", Gets: "group-03"}, + {Given: "wooble", Gets: "group-00"}, + }, + []codersdk.IDPSyncMapping[string]{ + {Given: "wibble", Gets: "group-00"}, + {Given: "wobble", Gets: "group-01"}, + }, + ) + + expected = map[string][]string{ + "wibble": {"group-01", "group-02"}, + "wobble": {"group-00", "group-02", "group-03"}, + "wooble": {"group-00"}, + } + + require.Equal(t, expected, mapping) + }) +} diff --git a/enterprise/coderd/idpsync_test.go b/enterprise/coderd/idpsync_test.go index 41a8db2dd0792..d34701c3f6936 100644 --- a/enterprise/coderd/idpsync_test.go +++ b/enterprise/coderd/idpsync_test.go @@ -5,6 +5,7 @@ import ( "regexp" "testing" + "github.com/google/uuid" "github.com/stretchr/testify/require" "github.com/coder/coder/v2/coderd/coderdtest" @@ -19,7 +20,7 @@ import ( "github.com/coder/serpent" ) -func TestGetGroupSyncConfig(t *testing.T) { +func TestGetGroupSyncSettings(t *testing.T) { t.Parallel() t.Run("OK", func(t *testing.T) { @@ -82,7 +83,7 @@ func TestGetGroupSyncConfig(t *testing.T) { }) } -func TestPostGroupSyncConfig(t *testing.T) { +func TestPatchGroupSyncSettings(t *testing.T) { t.Parallel() t.Run("OK", func(t *testing.T) { @@ -140,7 +141,172 @@ func TestPostGroupSyncConfig(t *testing.T) { }) } -func TestGetRoleSyncConfig(t *testing.T) { +func TestPatchGroupSyncConfig(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + orgID := user.OrganizationID + orgAdmin, _ := coderdtest.CreateAnotherUser(t, owner, orgID, rbac.ScopedRoleOrgAdmin(user.OrganizationID)) + + mapping := map[string][]uuid.UUID{"wibble": {uuid.New()}} + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := orgAdmin.PatchGroupIDPSyncSettings(ctx, orgID.String(), codersdk.GroupSyncSettings{ + Field: "wibble", + RegexFilter: regexp.MustCompile("wib{2,}le"), + AutoCreateMissing: false, + Mapping: mapping, + }) + + require.NoError(t, err) + + fetchedSettings, err := orgAdmin.GroupIDPSyncSettings(ctx, orgID.String()) + require.NoError(t, err) + require.Equal(t, "wibble", fetchedSettings.Field) + require.Equal(t, "wib{2,}le", fetchedSettings.RegexFilter.String()) + require.Equal(t, false, fetchedSettings.AutoCreateMissing) + require.Equal(t, mapping, fetchedSettings.Mapping) + + ctx = testutil.Context(t, testutil.WaitShort) + settings, err := orgAdmin.PatchGroupIDPSyncConfig(ctx, orgID.String(), codersdk.PatchGroupIDPSyncConfigRequest{ + Field: "wobble", + RegexFilter: regexp.MustCompile("wob{2,}le"), + AutoCreateMissing: true, + }) + + require.NoError(t, err) + require.Equal(t, "wobble", settings.Field) + require.Equal(t, "wob{2,}le", settings.RegexFilter.String()) + require.Equal(t, true, settings.AutoCreateMissing) + require.Equal(t, mapping, settings.Mapping) + + fetchedSettings, err = orgAdmin.GroupIDPSyncSettings(ctx, orgID.String()) + require.NoError(t, err) + require.Equal(t, "wobble", fetchedSettings.Field) + require.Equal(t, "wob{2,}le", fetchedSettings.RegexFilter.String()) + require.Equal(t, true, fetchedSettings.AutoCreateMissing) + require.Equal(t, mapping, fetchedSettings.Mapping) + }) + + t.Run("NotAuthorized", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + member, _ := coderdtest.CreateAnotherUser(t, owner, user.OrganizationID) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := member.PatchGroupIDPSyncConfig(ctx, user.OrganizationID.String(), codersdk.PatchGroupIDPSyncConfigRequest{}) + var apiError *codersdk.Error + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + }) +} + +func TestPatchGroupSyncMapping(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + orgID := user.OrganizationID + orgAdmin, _ := coderdtest.CreateAnotherUser(t, owner, orgID, rbac.ScopedRoleOrgAdmin(user.OrganizationID)) + // These IDs are easier to visually diff if the test fails than truly random + // ones. + orgs := []uuid.UUID{ + uuid.MustParse("00000000-b8bd-46bb-bb6c-6c2b2c0dd2ea"), + uuid.MustParse("01000000-fbe8-464c-9429-fe01a03f3644"), + uuid.MustParse("02000000-0926-407b-9998-39af62e3d0c5"), + } + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := orgAdmin.PatchGroupIDPSyncSettings(ctx, orgID.String(), codersdk.GroupSyncSettings{ + Field: "wibble", + RegexFilter: regexp.MustCompile("wib{2,}le"), + AutoCreateMissing: true, + Mapping: map[string][]uuid.UUID{"wobble": {orgs[0]}}, + }) + require.NoError(t, err) + + ctx = testutil.Context(t, testutil.WaitShort) + settings, err := orgAdmin.PatchGroupIDPSyncMapping(ctx, orgID.String(), codersdk.PatchGroupIDPSyncMappingRequest{ + Add: []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wibble", Gets: orgs[0]}, + {Given: "wobble", Gets: orgs[1]}, + {Given: "wobble", Gets: orgs[2]}, + }, + // Remove takes priority over Add, so "3" should not actually be added to wooble. + Remove: []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wobble", Gets: orgs[1]}, + }, + }) + + expected := map[string][]uuid.UUID{ + "wibble": {orgs[0]}, + "wobble": {orgs[0], orgs[2]}, + } + + require.NoError(t, err) + require.Equal(t, expected, settings.Mapping) + + fetchedSettings, err := orgAdmin.GroupIDPSyncSettings(ctx, orgID.String()) + require.NoError(t, err) + require.Equal(t, "wibble", fetchedSettings.Field) + require.Equal(t, "wib{2,}le", fetchedSettings.RegexFilter.String()) + require.Equal(t, true, fetchedSettings.AutoCreateMissing) + require.Equal(t, expected, fetchedSettings.Mapping) + }) + + t.Run("NotAuthorized", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + member, _ := coderdtest.CreateAnotherUser(t, owner, user.OrganizationID) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := member.PatchGroupIDPSyncMapping(ctx, user.OrganizationID.String(), codersdk.PatchGroupIDPSyncMappingRequest{}) + var apiError *codersdk.Error + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + }) +} + +func TestGetRoleSyncSettings(t *testing.T) { t.Parallel() t.Run("OK", func(t *testing.T) { @@ -174,7 +340,7 @@ func TestGetRoleSyncConfig(t *testing.T) { }) } -func TestPostRoleSyncConfig(t *testing.T) { +func TestPatchRoleSyncSettings(t *testing.T) { t.Parallel() t.Run("OK", func(t *testing.T) { @@ -231,3 +397,381 @@ func TestPostRoleSyncConfig(t *testing.T) { require.Equal(t, http.StatusForbidden, apiError.StatusCode()) }) } + +func TestPatchRoleSyncConfig(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + orgID := user.OrganizationID + orgAdmin, _ := coderdtest.CreateAnotherUser(t, owner, orgID, rbac.ScopedRoleOrgAdmin(user.OrganizationID)) + + mapping := map[string][]string{"wibble": {"group-01"}} + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := orgAdmin.PatchRoleIDPSyncSettings(ctx, orgID.String(), codersdk.RoleSyncSettings{ + Field: "wibble", + Mapping: mapping, + }) + + require.NoError(t, err) + + fetchedSettings, err := orgAdmin.RoleIDPSyncSettings(ctx, orgID.String()) + require.NoError(t, err) + require.Equal(t, "wibble", fetchedSettings.Field) + require.Equal(t, mapping, fetchedSettings.Mapping) + + ctx = testutil.Context(t, testutil.WaitShort) + settings, err := orgAdmin.PatchRoleIDPSyncConfig(ctx, orgID.String(), codersdk.PatchRoleIDPSyncConfigRequest{ + Field: "wobble", + }) + + require.NoError(t, err) + require.Equal(t, "wobble", settings.Field) + require.Equal(t, mapping, settings.Mapping) + + fetchedSettings, err = orgAdmin.RoleIDPSyncSettings(ctx, orgID.String()) + require.NoError(t, err) + require.Equal(t, "wobble", fetchedSettings.Field) + require.Equal(t, mapping, fetchedSettings.Mapping) + }) + + t.Run("NotAuthorized", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + member, _ := coderdtest.CreateAnotherUser(t, owner, user.OrganizationID) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := member.PatchGroupIDPSyncConfig(ctx, user.OrganizationID.String(), codersdk.PatchGroupIDPSyncConfigRequest{}) + var apiError *codersdk.Error + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + }) +} + +func TestPatchRoleSyncMapping(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + orgID := user.OrganizationID + orgAdmin, _ := coderdtest.CreateAnotherUser(t, owner, orgID, rbac.ScopedRoleOrgAdmin(user.OrganizationID)) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := orgAdmin.PatchRoleIDPSyncSettings(ctx, orgID.String(), codersdk.RoleSyncSettings{ + Field: "wibble", + Mapping: map[string][]string{"wobble": {"group-00"}}, + }) + require.NoError(t, err) + + ctx = testutil.Context(t, testutil.WaitShort) + settings, err := orgAdmin.PatchRoleIDPSyncMapping(ctx, orgID.String(), codersdk.PatchRoleIDPSyncMappingRequest{ + Add: []codersdk.IDPSyncMapping[string]{ + {Given: "wibble", Gets: "group-00"}, + {Given: "wobble", Gets: "group-01"}, + {Given: "wobble", Gets: "group-02"}, + }, + // Remove takes priority over Add, so "3" should not actually be added to wooble. + Remove: []codersdk.IDPSyncMapping[string]{ + {Given: "wobble", Gets: "group-01"}, + }, + }) + + expected := map[string][]string{ + "wibble": {"group-00"}, + "wobble": {"group-00", "group-02"}, + } + + require.NoError(t, err) + require.Equal(t, expected, settings.Mapping) + + fetchedSettings, err := orgAdmin.RoleIDPSyncSettings(ctx, orgID.String()) + require.NoError(t, err) + require.Equal(t, "wibble", fetchedSettings.Field) + require.Equal(t, expected, fetchedSettings.Mapping) + }) + + t.Run("NotAuthorized", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + member, _ := coderdtest.CreateAnotherUser(t, owner, user.OrganizationID) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := member.PatchGroupIDPSyncMapping(ctx, user.OrganizationID.String(), codersdk.PatchGroupIDPSyncMappingRequest{}) + var apiError *codersdk.Error + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + }) +} + +func TestGetOrganizationSyncSettings(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, _, _, user := coderdenttest.NewWithAPI(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + expected := map[string][]uuid.UUID{"foo": {user.OrganizationID}} + + ctx := testutil.Context(t, testutil.WaitShort) + settings, err := owner.PatchOrganizationIDPSyncSettings(ctx, codersdk.OrganizationSyncSettings{ + Field: "august", + Mapping: expected, + }) + + require.NoError(t, err) + require.Equal(t, "august", settings.Field) + require.Equal(t, expected, settings.Mapping) + + settings, err = owner.OrganizationIDPSyncSettings(ctx) + require.NoError(t, err) + require.Equal(t, "august", settings.Field) + require.Equal(t, expected, settings.Mapping) + }) +} + +func TestPatchOrganizationSyncSettings(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, _ := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + ctx := testutil.Context(t, testutil.WaitShort) + //nolint:gocritic // Only owners can change Organization IdP sync settings + settings, err := owner.PatchOrganizationIDPSyncSettings(ctx, codersdk.OrganizationSyncSettings{ + Field: "august", + }) + require.NoError(t, err) + require.Equal(t, "august", settings.Field) + + fetchedSettings, err := owner.OrganizationIDPSyncSettings(ctx) + require.NoError(t, err) + require.Equal(t, "august", fetchedSettings.Field) + }) + + t.Run("NotAuthorized", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + member, _ := coderdtest.CreateAnotherUser(t, owner, user.OrganizationID) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := member.PatchRoleIDPSyncSettings(ctx, user.OrganizationID.String(), codersdk.RoleSyncSettings{ + Field: "august", + }) + var apiError *codersdk.Error + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + + _, err = member.RoleIDPSyncSettings(ctx, user.OrganizationID.String()) + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + }) +} + +func TestPatchOrganizationSyncConfig(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + mapping := map[string][]uuid.UUID{"wibble": {user.OrganizationID}} + + ctx := testutil.Context(t, testutil.WaitShort) + //nolint:gocritic // Only owners can change Organization IdP sync settings + _, err := owner.PatchOrganizationIDPSyncSettings(ctx, codersdk.OrganizationSyncSettings{ + Field: "wibble", + AssignDefault: true, + Mapping: mapping, + }) + + require.NoError(t, err) + + fetchedSettings, err := owner.OrganizationIDPSyncSettings(ctx) + require.NoError(t, err) + require.Equal(t, "wibble", fetchedSettings.Field) + require.Equal(t, true, fetchedSettings.AssignDefault) + require.Equal(t, mapping, fetchedSettings.Mapping) + + ctx = testutil.Context(t, testutil.WaitShort) + settings, err := owner.PatchOrganizationIDPSyncConfig(ctx, codersdk.PatchOrganizationIDPSyncConfigRequest{ + Field: "wobble", + }) + + require.NoError(t, err) + require.Equal(t, "wobble", settings.Field) + require.Equal(t, false, settings.AssignDefault) + require.Equal(t, mapping, settings.Mapping) + + fetchedSettings, err = owner.OrganizationIDPSyncSettings(ctx) + require.NoError(t, err) + require.Equal(t, "wobble", fetchedSettings.Field) + require.Equal(t, false, fetchedSettings.AssignDefault) + require.Equal(t, mapping, fetchedSettings.Mapping) + }) + + t.Run("NotAuthorized", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + member, _ := coderdtest.CreateAnotherUser(t, owner, user.OrganizationID) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := member.PatchOrganizationIDPSyncConfig(ctx, codersdk.PatchOrganizationIDPSyncConfigRequest{}) + var apiError *codersdk.Error + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + }) +} + +func TestPatchOrganizationSyncMapping(t *testing.T) { + t.Parallel() + + t.Run("OK", func(t *testing.T) { + t.Parallel() + + owner, _ := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + // These IDs are easier to visually diff if the test fails than truly random + // ones. + orgs := []uuid.UUID{ + uuid.MustParse("00000000-b8bd-46bb-bb6c-6c2b2c0dd2ea"), + uuid.MustParse("01000000-fbe8-464c-9429-fe01a03f3644"), + uuid.MustParse("02000000-0926-407b-9998-39af62e3d0c5"), + } + + ctx := testutil.Context(t, testutil.WaitShort) + //nolint:gocritic // Only owners can change Organization IdP sync settings + settings, err := owner.PatchOrganizationIDPSyncMapping(ctx, codersdk.PatchOrganizationIDPSyncMappingRequest{ + Add: []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wibble", Gets: orgs[0]}, + {Given: "wobble", Gets: orgs[0]}, + {Given: "wobble", Gets: orgs[1]}, + {Given: "wobble", Gets: orgs[2]}, + }, + Remove: []codersdk.IDPSyncMapping[uuid.UUID]{ + {Given: "wobble", Gets: orgs[1]}, + }, + }) + + expected := map[string][]uuid.UUID{ + "wibble": {orgs[0]}, + "wobble": {orgs[0], orgs[2]}, + } + + require.NoError(t, err) + require.Equal(t, expected, settings.Mapping) + + fetchedSettings, err := owner.OrganizationIDPSyncSettings(ctx) + require.NoError(t, err) + require.Equal(t, expected, fetchedSettings.Mapping) + }) + + t.Run("NotAuthorized", func(t *testing.T) { + t.Parallel() + + owner, user := coderdenttest.New(t, &coderdenttest.Options{ + LicenseOptions: &coderdenttest.LicenseOptions{ + Features: license.Features{ + codersdk.FeatureCustomRoles: 1, + codersdk.FeatureMultipleOrganizations: 1, + }, + }, + }) + + member, _ := coderdtest.CreateAnotherUser(t, owner, user.OrganizationID) + + ctx := testutil.Context(t, testutil.WaitShort) + _, err := member.PatchOrganizationIDPSyncMapping(ctx, codersdk.PatchOrganizationIDPSyncMappingRequest{}) + var apiError *codersdk.Error + require.ErrorAs(t, err, &apiError) + require.Equal(t, http.StatusForbidden, apiError.StatusCode()) + }) +} diff --git a/go.mod b/go.mod index a1f8b6b7a7ac8..a21bd05fada74 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( github.com/chromedp/chromedp v0.11.0 github.com/cli/safeexec v1.0.1 github.com/coder/flog v1.1.0 - github.com/coder/guts v1.0.0 + github.com/coder/guts v1.0.1 github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0 github.com/coder/quartz v0.1.2 github.com/coder/retry v1.5.1 diff --git a/go.sum b/go.sum index 1737a0ea1e0b1..2f14b991fee23 100644 --- a/go.sum +++ b/go.sum @@ -226,8 +226,8 @@ github.com/coder/go-httpstat v0.0.0-20230801153223-321c88088322 h1:m0lPZjlQ7vdVp github.com/coder/go-httpstat v0.0.0-20230801153223-321c88088322/go.mod h1:rOLFDDVKVFiDqZFXoteXc97YXx7kFi9kYqR+2ETPkLQ= github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136 h1:0RgB61LcNs24WOxc3PBvygSNTQurm0PYPujJjLLOzs0= github.com/coder/go-scim/pkg/v2 v2.0.0-20230221055123-1d63c1222136/go.mod h1:VkD1P761nykiq75dz+4iFqIQIZka189tx1BQLOp0Skc= -github.com/coder/guts v1.0.0 h1:Ba6TBOeED+96Dv8IdISjbGhCzHKicqSc4SEYVV+4zeE= -github.com/coder/guts v1.0.0/go.mod h1:SfmxjDaSfPjzKJ9mGU4sA/1OHU+u66uRfhFF+y4BARQ= +github.com/coder/guts v1.0.1 h1:tU9pW+1jftCSX1eBxnNHiouQBSBJIej3I+kqfjIyeJU= +github.com/coder/guts v1.0.1/go.mod h1:z8LHbF6vwDOXQOReDvay7Rpwp/jHwCZiZwjd6wfLcJg= github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048 h1:3jzYUlGH7ZELIH4XggXhnTnP05FCYiAFeQpoN+gNR5I= github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0 h1:3A0ES21Ke+FxEM8CXx9n47SZOKOpgSE1bbJzlE4qPVs= diff --git a/site/site.go b/site/site.go index af66c01c6f896..3a85f7b3963ad 100644 --- a/site/site.go +++ b/site/site.go @@ -34,6 +34,7 @@ import ( "golang.org/x/sync/singleflight" "golang.org/x/xerrors" + "cdr.dev/slog" "github.com/coder/coder/v2/coderd/appearance" "github.com/coder/coder/v2/coderd/database" "github.com/coder/coder/v2/coderd/database/db2sdk" @@ -41,6 +42,7 @@ import ( "github.com/coder/coder/v2/coderd/entitlements" "github.com/coder/coder/v2/coderd/httpapi" "github.com/coder/coder/v2/coderd/httpmw" + "github.com/coder/coder/v2/coderd/telemetry" "github.com/coder/coder/v2/codersdk" ) @@ -81,6 +83,8 @@ type Options struct { BuildInfo codersdk.BuildInfoResponse AppearanceFetcher *atomic.Pointer[appearance.Fetcher] Entitlements *entitlements.Set + Telemetry telemetry.Reporter + Logger slog.Logger } func New(opts *Options) *Handler { @@ -183,6 +187,8 @@ type Handler struct { Entitlements *entitlements.Set Experiments atomic.Pointer[codersdk.Experiments] + + telemetryHTMLServedOnce sync.Once } func (h *Handler) ServeHTTP(rw http.ResponseWriter, r *http.Request) { @@ -321,12 +327,51 @@ func ShouldCacheFile(reqFile string) bool { return true } +// reportHTMLFirstServedAt sends a telemetry report when the first HTML is ever served. +// The purpose is to track the first time the first user opens the site. +func (h *Handler) reportHTMLFirstServedAt() { + // nolint:gocritic // Manipulating telemetry items is system-restricted. + // TODO(hugodutka): Add a telemetry context in RBAC. + ctx := dbauthz.AsSystemRestricted(context.Background()) + itemKey := string(telemetry.TelemetryItemKeyHTMLFirstServedAt) + _, err := h.opts.Database.GetTelemetryItem(ctx, itemKey) + if err == nil { + // If the value is already set, then we reported it before. + // We don't need to report it again. + return + } + if !errors.Is(err, sql.ErrNoRows) { + h.opts.Logger.Debug(ctx, "failed to get telemetry html first served at", slog.Error(err)) + return + } + if err := h.opts.Database.InsertTelemetryItemIfNotExists(ctx, database.InsertTelemetryItemIfNotExistsParams{ + Key: string(telemetry.TelemetryItemKeyHTMLFirstServedAt), + Value: time.Now().Format(time.RFC3339), + }); err != nil { + h.opts.Logger.Debug(ctx, "failed to set telemetry html first served at", slog.Error(err)) + return + } + item, err := h.opts.Database.GetTelemetryItem(ctx, itemKey) + if err != nil { + h.opts.Logger.Debug(ctx, "failed to get telemetry html first served at", slog.Error(err)) + return + } + h.opts.Telemetry.Report(&telemetry.Snapshot{ + TelemetryItems: []telemetry.TelemetryItem{telemetry.ConvertTelemetryItem(item)}, + }) +} + func (h *Handler) serveHTML(resp http.ResponseWriter, request *http.Request, reqPath string, state htmlState) bool { if data, err := h.renderHTMLWithState(request, reqPath, state); err == nil { if reqPath == "" { // Pass "index.html" to the ServeContent so the ServeContent sets the right content headers. reqPath = "index.html" } + // `Once` is used to reduce the volume of db calls and telemetry reports. + // It's fine to run the enclosed function multiple times, but it's unnecessary. + h.telemetryHTMLServedOnce.Do(func() { + go h.reportHTMLFirstServedAt() + }) http.ServeContent(resp, request, reqPath, time.Time{}, bytes.NewReader(data)) return true } diff --git a/site/site_test.go b/site/site_test.go index 8bee665a56ae3..63f3f9aa17226 100644 --- a/site/site_test.go +++ b/site/site_test.go @@ -27,8 +27,10 @@ import ( "github.com/coder/coder/v2/coderd/database/db2sdk" "github.com/coder/coder/v2/coderd/database/dbgen" "github.com/coder/coder/v2/coderd/database/dbmem" + "github.com/coder/coder/v2/coderd/database/dbtestutil" "github.com/coder/coder/v2/coderd/database/dbtime" "github.com/coder/coder/v2/coderd/httpmw" + "github.com/coder/coder/v2/coderd/telemetry" "github.com/coder/coder/v2/codersdk" "github.com/coder/coder/v2/site" "github.com/coder/coder/v2/testutil" @@ -45,9 +47,10 @@ func TestInjection(t *testing.T) { binFs := http.FS(fstest.MapFS{}) db := dbmem.New() handler := site.New(&site.Options{ - BinFS: binFs, - Database: db, - SiteFS: siteFS, + Telemetry: telemetry.NewNoop(), + BinFS: binFs, + Database: db, + SiteFS: siteFS, }) user := dbgen.User(t, db, database.User{}) @@ -101,9 +104,10 @@ func TestInjectionFailureProducesCleanHTML(t *testing.T) { }, } handler := site.New(&site.Options{ - BinFS: binFs, - Database: db, - SiteFS: siteFS, + Telemetry: telemetry.NewNoop(), + BinFS: binFs, + Database: db, + SiteFS: siteFS, // No OAuth2 configs, refresh will fail. OAuth2Configs: &httpmw.OAuth2Configs{ @@ -147,9 +151,12 @@ func TestCaching(t *testing.T) { } binFS := http.FS(fstest.MapFS{}) + db, _ := dbtestutil.NewDB(t) srv := httptest.NewServer(site.New(&site.Options{ - BinFS: binFS, - SiteFS: rootFS, + Telemetry: telemetry.NewNoop(), + BinFS: binFS, + SiteFS: rootFS, + Database: db, })) defer srv.Close() @@ -213,9 +220,12 @@ func TestServingFiles(t *testing.T) { } binFS := http.FS(fstest.MapFS{}) + db, _ := dbtestutil.NewDB(t) srv := httptest.NewServer(site.New(&site.Options{ - BinFS: binFS, - SiteFS: rootFS, + Telemetry: telemetry.NewNoop(), + BinFS: binFS, + SiteFS: rootFS, + Database: db, })) defer srv.Close() @@ -473,6 +483,7 @@ func TestServingBin(t *testing.T) { } srv := httptest.NewServer(site.New(&site.Options{ + Telemetry: telemetry.NewNoop(), BinFS: binFS, BinHashes: binHashes, SiteFS: rootFS, diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index d5093587ad527..de879ee23daa5 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1055,6 +1055,12 @@ export interface HealthcheckReport { readonly coder_version: string; } +// From codersdk/idpsync.go +export interface IDPSyncMapping { + readonly Given: string; + readonly Gets: ResourceIdType; +} + // From codersdk/insights.go export type InsightsReportInterval = "day" | "week"; @@ -1449,6 +1455,19 @@ export interface Pagination { readonly offset?: number; } +// From codersdk/idpsync.go +export interface PatchGroupIDPSyncConfigRequest { + readonly field: string; + readonly regex_filter: string | null; + readonly auto_create_missing_groups: boolean; +} + +// From codersdk/idpsync.go +export interface PatchGroupIDPSyncMappingRequest { + readonly Add: readonly IDPSyncMapping[]; + readonly Remove: readonly IDPSyncMapping[]; +} + // From codersdk/groups.go export interface PatchGroupRequest { readonly add_users: readonly string[]; @@ -1459,6 +1478,29 @@ export interface PatchGroupRequest { readonly quota_allowance: number | null; } +// From codersdk/idpsync.go +export interface PatchOrganizationIDPSyncConfigRequest { + readonly field: string; + readonly assign_default: boolean; +} + +// From codersdk/idpsync.go +export interface PatchOrganizationIDPSyncMappingRequest { + readonly Add: readonly IDPSyncMapping[]; + readonly Remove: readonly IDPSyncMapping[]; +} + +// From codersdk/idpsync.go +export interface PatchRoleIDPSyncConfigRequest { + readonly field: string; +} + +// From codersdk/idpsync.go +export interface PatchRoleIDPSyncMappingRequest { + readonly Add: readonly IDPSyncMapping[]; + readonly Remove: readonly IDPSyncMapping[]; +} + // From codersdk/templateversions.go export interface PatchTemplateVersionRequest { readonly name: string; From 2f32b11831a236ed550f35b2296b8f948eb64f4e Mon Sep 17 00:00:00 2001 From: "gcp-cherry-pick-bot[bot]" <98988430+gcp-cherry-pick-bot[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:53:51 +0500 Subject: [PATCH 02/28] fix(site): fix agent and web terminal troubleshooting links (cherry-pick #16353) (#16405) Co-authored-by: M Atif Ali --- cli/cliui/agent.go | 8 ++++---- site/src/pages/TerminalPage/TerminalAlerts.tsx | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/cli/cliui/agent.go b/cli/cliui/agent.go index f2c1378eecb7a..3bb6fee7be769 100644 --- a/cli/cliui/agent.go +++ b/cli/cliui/agent.go @@ -120,7 +120,7 @@ func Agent(ctx context.Context, writer io.Writer, agentID uuid.UUID, opts AgentO if agent.Status == codersdk.WorkspaceAgentTimeout { now := time.Now() sw.Log(now, codersdk.LogLevelInfo, "The workspace agent is having trouble connecting, wait for it to connect or restart your workspace.") - sw.Log(now, codersdk.LogLevelInfo, troubleshootingMessage(agent, fmt.Sprintf("%s/templates#agent-connection-issues", opts.DocsURL))) + sw.Log(now, codersdk.LogLevelInfo, troubleshootingMessage(agent, fmt.Sprintf("%s/admin/templates/troubleshooting#agent-connection-issues", opts.DocsURL))) for agent.Status == codersdk.WorkspaceAgentTimeout { if agent, err = fetch(); err != nil { return xerrors.Errorf("fetch: %w", err) @@ -225,13 +225,13 @@ func Agent(ctx context.Context, writer io.Writer, agentID uuid.UUID, opts AgentO sw.Fail(stage, safeDuration(sw, agent.ReadyAt, agent.StartedAt)) // Use zero time (omitted) to separate these from the startup logs. sw.Log(time.Time{}, codersdk.LogLevelWarn, "Warning: A startup script exited with an error and your workspace may be incomplete.") - sw.Log(time.Time{}, codersdk.LogLevelWarn, troubleshootingMessage(agent, fmt.Sprintf("%s/templates#startup-script-exited-with-an-error", opts.DocsURL))) + sw.Log(time.Time{}, codersdk.LogLevelWarn, troubleshootingMessage(agent, fmt.Sprintf("%s/admin/templates/troubleshooting#startup-script-exited-with-an-error", opts.DocsURL))) default: switch { case agent.LifecycleState.Starting(): // Use zero time (omitted) to separate these from the startup logs. sw.Log(time.Time{}, codersdk.LogLevelWarn, "Notice: The startup scripts are still running and your workspace may be incomplete.") - sw.Log(time.Time{}, codersdk.LogLevelWarn, troubleshootingMessage(agent, fmt.Sprintf("%s/templates#your-workspace-may-be-incomplete", opts.DocsURL))) + sw.Log(time.Time{}, codersdk.LogLevelWarn, troubleshootingMessage(agent, fmt.Sprintf("%s/admin/templates/troubleshooting#your-workspace-may-be-incomplete", opts.DocsURL))) // Note: We don't complete or fail the stage here, it's // intentionally left open to indicate this stage didn't // complete. @@ -253,7 +253,7 @@ func Agent(ctx context.Context, writer io.Writer, agentID uuid.UUID, opts AgentO stage := "The workspace agent lost connection" sw.Start(stage) sw.Log(time.Now(), codersdk.LogLevelWarn, "Wait for it to reconnect or restart your workspace.") - sw.Log(time.Now(), codersdk.LogLevelWarn, troubleshootingMessage(agent, fmt.Sprintf("%s/templates#agent-connection-issues", opts.DocsURL))) + sw.Log(time.Now(), codersdk.LogLevelWarn, troubleshootingMessage(agent, fmt.Sprintf("%s/admin/templates/troubleshooting#agent-connection-issues", opts.DocsURL))) disconnectedAt := agent.DisconnectedAt for agent.Status == codersdk.WorkspaceAgentDisconnected { diff --git a/site/src/pages/TerminalPage/TerminalAlerts.tsx b/site/src/pages/TerminalPage/TerminalAlerts.tsx index 2876ad51aaa62..eb7369fc431b7 100644 --- a/site/src/pages/TerminalPage/TerminalAlerts.tsx +++ b/site/src/pages/TerminalPage/TerminalAlerts.tsx @@ -72,7 +72,9 @@ export const ErrorScriptAlert: FC = () => { The workspace{" "} From fb71cb5f9688b93ac53a050e668586814269f06a Mon Sep 17 00:00:00 2001 From: "gcp-cherry-pick-bot[bot]" <98988430+gcp-cherry-pick-bot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 14:51:07 +0500 Subject: [PATCH 03/28] fix: fix broken troubleshooting link (cherry-pick #16469) (#16472) Co-authored-by: Marcin Tojek fix: fix broken troubleshooting link (#16469) Fixes: https://github.com/coder/coder/issues/16468 --- cli/ping.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/ping.go b/cli/ping.go index 0e219d5762f86..19191b92916bb 100644 --- a/cli/ping.go +++ b/cli/ping.go @@ -159,7 +159,7 @@ func (r *RootCmd) ping() *serpent.Command { LocalNetInfo: ni, Verbose: r.verbose, PingP2P: didP2p, - TroubleshootingURL: appearanceConfig.DocsURL + "/networking/troubleshooting", + TroubleshootingURL: appearanceConfig.DocsURL + "/admin/networking/troubleshooting", } awsRanges, err := cliutil.FetchAWSIPRanges(diagCtx, cliutil.AWSIPRangesURL) From 552c4cd93d6e89bc6631cefbc5e4ecf4e59c84d2 Mon Sep 17 00:00:00 2001 From: "gcp-cherry-pick-bot[bot]" <98988430+gcp-cherry-pick-bot[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 15:08:59 +0500 Subject: [PATCH 04/28] fix: handle undefined job while updating build progress (cherry-pick #16732) (#16741) Cherry-picked fix: handle undefined job while updating build progress (#16732) Fixes: https://github.com/coder/coder/issues/15444 Co-authored-by: Marcin Tojek --- site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx index 88f006681495e..52f3e725c6003 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx @@ -81,6 +81,7 @@ export const WorkspaceBuildProgress: FC = ({ useEffect(() => { const updateProgress = () => { if ( + job === undefined || job.status !== "running" || transitionStats.P50 === undefined || transitionStats.P95 === undefined || From d31c994018e2639264b05a1f6d0eeaec2852a77c Mon Sep 17 00:00:00 2001 From: Jon Ayers Date: Tue, 4 Mar 2025 17:12:12 -0500 Subject: [PATCH 05/28] chore: upgrade terraform to 1.10.5 (#16519) (#16806) - Updates `terraform` to [v1.10.5](https://github.com/hashicorp/terraform/blob/v1.10.5/CHANGELOG.md#1105-january-22-2025) - Updates provider to >=2.0.0 in provider testdata fixtures - Fixes provider to required release version for resource monitors - Fixes missing leading / in volumes in resource monitor tests --------- --------- Co-authored-by: Colin Adler Co-authored-by: Cian Johnston --- .github/actions/setup-tf/action.yaml | 2 +- docs/install/offline.md | 2 +- dogfood/contents/Dockerfile | 4 +- install.sh | 2 +- provisioner/terraform/install.go | 4 +- .../testdata/calling-module/calling-module.tf | 2 +- .../calling-module/calling-module.tfplan.json | 20 +- .../calling-module.tfstate.json | 17 +- .../chaining-resources/chaining-resources.tf | 2 +- .../chaining-resources.tfplan.json | 20 +- .../chaining-resources.tfstate.json | 17 +- .../conflicting-resources.tf | 2 +- .../conflicting-resources.tfplan.json | 20 +- .../conflicting-resources.tfstate.json | 17 +- .../display-apps-disabled.tf | 2 +- .../display-apps-disabled.tfplan.json | 20 +- .../display-apps-disabled.tfstate.json | 15 +- .../testdata/display-apps/display-apps.tf | 2 +- .../display-apps/display-apps.tfplan.json | 20 +- .../display-apps/display-apps.tfstate.json | 15 +- .../external-auth-providers.tf | 2 +- .../external-auth-providers.tfplan.json | 22 +- .../external-auth-providers.tfstate.json | 15 +- .../git-auth-providers.tfplan.json | 6 +- .../git-auth-providers.tfstate.json | 8 +- .../testdata/instance-id/instance-id.tf | 2 +- .../instance-id/instance-id.tfplan.json | 20 +- .../instance-id/instance-id.tfstate.json | 19 +- .../kubernetes-metadata.tf | 2 +- .../testdata/mapped-apps/mapped-apps.tf | 2 +- .../mapped-apps/mapped-apps.tfplan.json | 42 +- .../mapped-apps/mapped-apps.tfstate.json | 35 +- .../multiple-agents-multiple-apps.tf | 2 +- .../multiple-agents-multiple-apps.tfplan.json | 70 +- ...multiple-agents-multiple-apps.tfstate.json | 58 +- .../multiple-agents-multiple-envs.tf | 2 +- .../multiple-agents-multiple-envs.tfplan.json | 46 +- ...multiple-agents-multiple-envs.tfstate.json | 46 +- .../multiple-agents-multiple-monitors.tf | 67 ++ ...tiple-agents-multiple-monitors.tfplan.json | 625 ++++++++++++++++++ ...iple-agents-multiple-monitors.tfstate.json | 231 +++++++ .../multiple-agents-multiple-scripts.tf | 2 +- ...ltiple-agents-multiple-scripts.tfplan.json | 50 +- ...tiple-agents-multiple-scripts.tfstate.json | 46 +- .../multiple-agents.tfplan.json | 4 +- .../multiple-agents.tfstate.json | 20 +- .../testdata/multiple-apps/multiple-apps.tf | 2 +- .../multiple-apps/multiple-apps.tfplan.json | 56 +- .../multiple-apps/multiple-apps.tfstate.json | 45 +- .../resource-metadata-duplicate.tf | 2 +- .../resource-metadata-duplicate.tfplan.json | 28 +- .../resource-metadata-duplicate.tfstate.json | 27 +- .../resource-metadata/resource-metadata.tf | 2 +- .../resource-metadata.tfplan.json | 24 +- .../resource-metadata.tfstate.json | 21 +- .../rich-parameters-order.tf | 2 +- .../rich-parameters-order.tfplan.json | 26 +- .../rich-parameters-order.tfstate.json | 19 +- .../rich-parameters-validation.tf | 2 +- .../rich-parameters-validation.tfplan.json | 34 +- .../rich-parameters-validation.tfstate.json | 27 +- .../child-external-module/main.tf | 2 +- .../rich-parameters/external-module/main.tf | 2 +- .../rich-parameters/rich-parameters.tf | 2 +- .../rich-parameters.tfplan.json | 42 +- .../rich-parameters.tfstate.json | 35 +- provisioner/terraform/testdata/version.txt | 2 +- scripts/Dockerfile.base | 2 +- 68 files changed, 1398 insertions(+), 655 deletions(-) create mode 100644 provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tf create mode 100644 provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfplan.json create mode 100644 provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfstate.json diff --git a/.github/actions/setup-tf/action.yaml b/.github/actions/setup-tf/action.yaml index c52f1138e03ca..f130bcdb7d028 100644 --- a/.github/actions/setup-tf/action.yaml +++ b/.github/actions/setup-tf/action.yaml @@ -7,5 +7,5 @@ runs: - name: Install Terraform uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 with: - terraform_version: 1.9.8 + terraform_version: 1.10.5 terraform_wrapper: false diff --git a/docs/install/offline.md b/docs/install/offline.md index 6a41bd9437894..0f83ae4077ee4 100644 --- a/docs/install/offline.md +++ b/docs/install/offline.md @@ -54,7 +54,7 @@ RUN mkdir -p /opt/terraform # The below step is optional if you wish to keep the existing version. # See https://github.com/coder/coder/blob/main/provisioner/terraform/install.go#L23-L24 # for supported Terraform versions. -ARG TERRAFORM_VERSION=1.9.8 +ARG TERRAFORM_VERSION=1.10.5 RUN apk update && \ apk del terraform && \ curl -LOs https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip \ diff --git a/dogfood/contents/Dockerfile b/dogfood/contents/Dockerfile index 2de358c5c91e6..8c3613f59d468 100644 --- a/dogfood/contents/Dockerfile +++ b/dogfood/contents/Dockerfile @@ -195,9 +195,9 @@ RUN apt-get update --quiet && apt-get install --yes \ # Configure FIPS-compliant policies update-crypto-policies --set FIPS -# NOTE: In scripts/Dockerfile.base we specifically install Terraform version 1.9.8. +# NOTE: In scripts/Dockerfile.base we specifically install Terraform version 1.10.5. # Installing the same version here to match. -RUN wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.9.8/terraform_1.9.8_linux_amd64.zip" && \ +RUN wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.10.5/terraform_1.10.5_linux_amd64.zip" && \ unzip /tmp/terraform.zip -d /usr/local/bin && \ rm -f /tmp/terraform.zip && \ chmod +x /usr/local/bin/terraform && \ diff --git a/install.sh b/install.sh index 734fd3c44f320..931426c54c5db 100755 --- a/install.sh +++ b/install.sh @@ -273,7 +273,7 @@ EOF main() { MAINLINE=1 STABLE=0 - TERRAFORM_VERSION="1.9.8" + TERRAFORM_VERSION="1.10.5" if [ "${TRACE-}" ]; then set -x diff --git a/provisioner/terraform/install.go b/provisioner/terraform/install.go index 7f6474d022ba1..74229c8539bc0 100644 --- a/provisioner/terraform/install.go +++ b/provisioner/terraform/install.go @@ -20,10 +20,10 @@ var ( // when Terraform is not available on the system. // NOTE: Keep this in sync with the version in scripts/Dockerfile.base. // NOTE: Keep this in sync with the version in install.sh. - TerraformVersion = version.Must(version.NewVersion("1.9.8")) + TerraformVersion = version.Must(version.NewVersion("1.10.5")) minTerraformVersion = version.Must(version.NewVersion("1.1.0")) - maxTerraformVersion = version.Must(version.NewVersion("1.9.9")) // use .9 to automatically allow patch releases + maxTerraformVersion = version.Must(version.NewVersion("1.10.9")) // use .9 to automatically allow patch releases terraformMinorVersionMismatch = xerrors.New("Terraform binary minor version mismatch.") ) diff --git a/provisioner/terraform/testdata/calling-module/calling-module.tf b/provisioner/terraform/testdata/calling-module/calling-module.tf index 14777169d9994..33fcbb3f1984f 100644 --- a/provisioner/terraform/testdata/calling-module/calling-module.tf +++ b/provisioner/terraform/testdata/calling-module/calling-module.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/calling-module/calling-module.tfplan.json b/provisioner/terraform/testdata/calling-module/calling-module.tfplan.json index 30bc360bb1940..31faf235810fa 100644 --- a/provisioner/terraform/testdata/calling-module/calling-module.tfplan.json +++ b/provisioner/terraform/testdata/calling-module/calling-module.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -90,16 +87,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -177,7 +171,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "module.module:null": { "name": "null", @@ -201,7 +195,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 } ], "module_calls": { @@ -260,7 +254,7 @@ ] } ], - "timestamp": "2024-10-28T20:07:49Z", + "timestamp": "2025-03-04T19:25:00Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/calling-module/calling-module.tfstate.json b/provisioner/terraform/testdata/calling-module/calling-module.tfstate.json index 5ead2c6ace0d5..5a6b65b4d08ce 100644 --- a/provisioner/terraform/testdata/calling-module/calling-module.tfstate.json +++ b/provisioner/terraform/testdata/calling-module/calling-module.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "04d66dc4-e25a-4f65-af6f-a9af6b907430", + "id": "8632f695-0881-4df5-999c-ff105e2a62a4", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "10fbd765-b0cc-4d6f-b5de-e5a036b2cb4b", + "startup_script_behavior": "non-blocking", + "token": "18782be6-3080-42a8-bec4-b2e0cb4caf93", "troubleshooting_url": null }, "sensitive_values": { @@ -69,7 +66,7 @@ "outputs": { "script": "" }, - "random": "7917595776755902204" + "random": "735568859568633344" }, "sensitive_values": { "inputs": {}, @@ -84,7 +81,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "2669991968036854745", + "id": "280446487996139212", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/chaining-resources/chaining-resources.tf b/provisioner/terraform/testdata/chaining-resources/chaining-resources.tf index 3f210452dfee0..6ad44a62de986 100644 --- a/provisioner/terraform/testdata/chaining-resources/chaining-resources.tf +++ b/provisioner/terraform/testdata/chaining-resources/chaining-resources.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfplan.json b/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfplan.json index 38af6827019e7..b143b45e90fce 100644 --- a/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfplan.json +++ b/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -80,16 +77,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -155,7 +149,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -178,7 +172,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.a", @@ -205,7 +199,7 @@ ] } }, - "timestamp": "2024-10-28T20:07:50Z", + "timestamp": "2025-03-04T19:25:02Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfstate.json b/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfstate.json index 0cee8567db250..7681bf7d6b50c 100644 --- a/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfstate.json +++ b/provisioner/terraform/testdata/chaining-resources/chaining-resources.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "bcf4bae1-0870-48e9-8bb4-af2f652c4d54", + "id": "c58b518a-428d-44b2-bfd7-1ac17188c528", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "afe98f25-25a2-4892-b921-be04bcd71efc", + "startup_script_behavior": "non-blocking", + "token": "085fd3ad-9462-4f9c-8f0f-05941d6cbc90", "troubleshooting_url": null }, "sensitive_values": { @@ -57,7 +54,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "6598177855275264799", + "id": "2593580341963886034", "triggers": null }, "sensitive_values": {}, @@ -74,7 +71,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "4663187895457986148", + "id": "8775084967398626100", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tf b/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tf index 8c7b200fca7b0..86585b6a85357 100644 --- a/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tf +++ b/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfplan.json b/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfplan.json index 3fe9f6c41fa9b..ba67f290022c0 100644 --- a/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfplan.json +++ b/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -80,16 +77,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -155,7 +149,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -178,7 +172,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.first", @@ -205,7 +199,7 @@ ] } }, - "timestamp": "2024-10-28T20:07:52Z", + "timestamp": "2025-03-04T19:25:04Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfstate.json b/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfstate.json index ffd0690db2263..fdc0f8b1d062a 100644 --- a/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfstate.json +++ b/provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "d047c7b6-b69e-4029-ab82-67468a0364f7", + "id": "bdf2fe69-0a3d-4aac-80c9-0896b0362d81", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "ceff37e3-52b9-4c80-af1b-1f9f99184590", + "startup_script_behavior": "non-blocking", + "token": "1428ac88-6dd9-4520-9c5c-0946fec8466b", "troubleshooting_url": null }, "sensitive_values": { @@ -57,7 +54,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "3120105803817695206", + "id": "3464200430566318947", "triggers": null }, "sensitive_values": {}, @@ -73,7 +70,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "2942451035046396496", + "id": "4854441548409483963", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tf b/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tf index 494e0acafb48f..155b81889540e 100644 --- a/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tf +++ b/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfplan.json b/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfplan.json index 598d6f1735a84..00e14d332bcf7 100644 --- a/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfplan.json +++ b/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,16 +26,13 @@ } ], "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -88,16 +85,13 @@ } ], "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -146,7 +140,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -188,7 +182,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev", @@ -204,7 +198,7 @@ ] } }, - "timestamp": "2024-10-28T20:07:55Z", + "timestamp": "2025-03-04T19:25:06Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfstate.json b/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfstate.json index 7e9bdad7a02bb..b85deea275dae 100644 --- a/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfstate.json +++ b/provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "6ba13739-4a9c-456f-90cf-feba8f194853", + "id": "a443e5e2-d59e-456d-95ff-b15685a37ebd", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "6e348a4c-ef00-40ab-9732-817fb828045c", + "startup_script_behavior": "non-blocking", + "token": "5407b786-d16b-4e64-abfa-75bc641fa6c3", "troubleshooting_url": null }, "sensitive_values": { @@ -57,7 +54,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "3123606937441446452", + "id": "1848001870879012103", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/display-apps/display-apps.tf b/provisioner/terraform/testdata/display-apps/display-apps.tf index a36b68cd3b1cc..3544ab535ad2f 100644 --- a/provisioner/terraform/testdata/display-apps/display-apps.tf +++ b/provisioner/terraform/testdata/display-apps/display-apps.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/display-apps/display-apps.tfplan.json b/provisioner/terraform/testdata/display-apps/display-apps.tfplan.json index 3331a8f282c2b..e79b567562e7c 100644 --- a/provisioner/terraform/testdata/display-apps/display-apps.tfplan.json +++ b/provisioner/terraform/testdata/display-apps/display-apps.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,16 +26,13 @@ } ], "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -88,16 +85,13 @@ } ], "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -146,7 +140,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -188,7 +182,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev", @@ -204,7 +198,7 @@ ] } }, - "timestamp": "2024-10-28T20:07:54Z", + "timestamp": "2025-03-04T19:25:08Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/display-apps/display-apps.tfstate.json b/provisioner/terraform/testdata/display-apps/display-apps.tfstate.json index 2b04222e751f2..6cbccd0b8ea8a 100644 --- a/provisioner/terraform/testdata/display-apps/display-apps.tfstate.json +++ b/provisioner/terraform/testdata/display-apps/display-apps.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "b7e8dd7a-34aa-41e2-977e-e38577ab2476", + "id": "7399a566-8666-4a7b-a916-5043ea8b5a39", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "c6aeeb35-2766-4524-9818-687f7687831d", + "startup_script_behavior": "non-blocking", + "token": "47650163-1c1b-431b-81d6-42991663f53b", "troubleshooting_url": null }, "sensitive_values": { @@ -57,7 +54,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "2407243137316459395", + "id": "1536600762010500828", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tf b/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tf index 0b68bbe5710fe..5f45a88aacb6a 100644 --- a/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tf +++ b/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfplan.json b/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfplan.json index 5ba9e7b6af80f..47f3624b64d70 100644 --- a/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfplan.json +++ b/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -68,16 +65,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -119,7 +113,7 @@ ], "prior_state": { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -160,7 +154,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -183,7 +177,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev", @@ -228,7 +222,7 @@ ] } }, - "timestamp": "2024-10-28T20:07:57Z", + "timestamp": "2025-03-04T19:25:10Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfstate.json b/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfstate.json index 875d8c9aaf439..6d23cab247b9d 100644 --- a/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfstate.json +++ b/provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -38,7 +38,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -54,19 +54,16 @@ } ], "env": null, - "id": "ec5d36c9-8690-4246-8ab3-2d85a3eacee6", + "id": "3af7f86b-3674-4e9d-b92d-d2e8890e5c38", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "78c55fa2-8e3c-4564-950d-e022c76cf05a", + "startup_script_behavior": "non-blocking", + "token": "cf973ff9-17e3-4e08-abc5-7a37d3f74d0f", "troubleshooting_url": null }, "sensitive_values": { @@ -85,7 +82,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "455343782636271645", + "id": "7283290279914631370", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfplan.json b/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfplan.json index fba34f1cb5f4d..adf7f32ffa4d6 100644 --- a/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfplan.json +++ b/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -119,7 +119,7 @@ ], "prior_state": { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -223,7 +223,7 @@ ] } }, - "timestamp": "2024-10-28T20:07:58Z", + "timestamp": "2025-03-04T19:25:12Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfstate.json b/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfstate.json index 3cf905c0a2948..5b7393c568a5a 100644 --- a/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfstate.json +++ b/provisioner/terraform/testdata/git-auth-providers/git-auth-providers.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -52,7 +52,7 @@ } ], "env": null, - "id": "ffa1f524-0350-4891-868d-93cad369318a", + "id": "1023a3a5-f8c1-45f6-a0cc-bf3a1e1f3c63", "init_script": "", "login_before_ready": true, "metadata": [], @@ -64,7 +64,7 @@ "startup_script": null, "startup_script_behavior": null, "startup_script_timeout": 300, - "token": "8ba649af-b498-4f20-8055-b6a0b995837e", + "token": "a59f2270-ac62-47bc-9c68-7bbfe2981c2e", "troubleshooting_url": null }, "sensitive_values": { @@ -83,7 +83,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "7420557451345159984", + "id": "3284204005710492153", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/instance-id/instance-id.tf b/provisioner/terraform/testdata/instance-id/instance-id.tf index 1cd4ab828b4f0..84e010a79d6e9 100644 --- a/provisioner/terraform/testdata/instance-id/instance-id.tf +++ b/provisioner/terraform/testdata/instance-id/instance-id.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/instance-id/instance-id.tfplan.json b/provisioner/terraform/testdata/instance-id/instance-id.tfplan.json index 527a2fa05769d..e287a5b6ab582 100644 --- a/provisioner/terraform/testdata/instance-id/instance-id.tfplan.json +++ b/provisioner/terraform/testdata/instance-id/instance-id.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "google-instance-identity", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -80,16 +77,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -156,7 +150,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -182,7 +176,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_agent_instance.main", @@ -225,7 +219,7 @@ ] } ], - "timestamp": "2024-10-28T20:08:00Z", + "timestamp": "2025-03-04T19:25:13Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/instance-id/instance-id.tfstate.json b/provisioner/terraform/testdata/instance-id/instance-id.tfstate.json index 929d72365502c..843ad66bc0a57 100644 --- a/provisioner/terraform/testdata/instance-id/instance-id.tfstate.json +++ b/provisioner/terraform/testdata/instance-id/instance-id.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "google-instance-identity", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "0389c8a5-cc5c-485d-959c-8738bada65ff", + "id": "9d3d75ba-4c12-42e5-bb49-62c258096d79", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "097b6128-8d60-4849-969b-03f0b463ac2c", + "startup_script_behavior": "non-blocking", + "token": "de14eb76-34b5-4da6-b40c-6c44aaeed2e1", "troubleshooting_url": null }, "sensitive_values": { @@ -57,8 +54,8 @@ "provider_name": "registry.terraform.io/coder/coder", "schema_version": 0, "values": { - "agent_id": "0389c8a5-cc5c-485d-959c-8738bada65ff", - "id": "0ae6bb98-871c-4091-8098-d32f256d8c05", + "agent_id": "9d3d75ba-4c12-42e5-bb49-62c258096d79", + "id": "2561b9a8-27a4-420f-aaf5-7b1641b2f7a6", "instance_id": "example" }, "sensitive_values": {}, @@ -74,7 +71,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "5569763710827889183", + "id": "3284638190727292821", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/kubernetes-metadata/kubernetes-metadata.tf b/provisioner/terraform/testdata/kubernetes-metadata/kubernetes-metadata.tf index 2ae1298904fbb..faa08706de380 100644 --- a/provisioner/terraform/testdata/kubernetes-metadata/kubernetes-metadata.tf +++ b/provisioner/terraform/testdata/kubernetes-metadata/kubernetes-metadata.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/provisioner/terraform/testdata/mapped-apps/mapped-apps.tf b/provisioner/terraform/testdata/mapped-apps/mapped-apps.tf index 1e13495d6ebc7..7664ead2b4962 100644 --- a/provisioner/terraform/testdata/mapped-apps/mapped-apps.tf +++ b/provisioner/terraform/testdata/mapped-apps/mapped-apps.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfplan.json b/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfplan.json index 2151b4631647a..2fe0bf0425712 100644 --- a/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfplan.json +++ b/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -42,16 +39,16 @@ "name": "apps", "index": "app1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": "app1", "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -68,16 +65,16 @@ "name": "apps", "index": "app2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": "app2", "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": null, @@ -120,16 +117,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -164,10 +158,10 @@ "display_name": "app1", "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -201,10 +195,10 @@ "display_name": "app2", "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": null, @@ -248,7 +242,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -271,7 +265,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_app.apps", @@ -298,7 +292,7 @@ ] } }, - "schema_version": 0, + "schema_version": 1, "for_each_expression": { "references": [ "local.apps_map" @@ -327,7 +321,7 @@ ] } ], - "timestamp": "2024-10-28T20:08:02Z", + "timestamp": "2025-03-04T19:25:15Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfstate.json b/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfstate.json index 9aaa7b352f518..1483341440ff5 100644 --- a/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfstate.json +++ b/provisioner/terraform/testdata/mapped-apps/mapped-apps.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "b3d3e1d7-1f1f-4abf-8475-2058f73f3437", + "id": "0faf2a12-1797-43f9-8ad0-46e085d9810e", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "56420fd5-57e5-44e0-a264-53395b74505a", + "startup_script_behavior": "non-blocking", + "token": "5f5cf1c0-37d4-4809-a227-92bd64fcfb64", "troubleshooting_url": null }, "sensitive_values": { @@ -56,18 +53,18 @@ "name": "apps", "index": "app1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "b3d3e1d7-1f1f-4abf-8475-2058f73f3437", + "agent_id": "0faf2a12-1797-43f9-8ad0-46e085d9810e", "command": null, "display_name": "app1", "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "id": "e8163eb0-e56e-46e7-8848-8c6c250ce5b9", - "name": null, + "id": "ac8a8769-9b4d-4028-82b5-cce53b952fb8", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -87,18 +84,18 @@ "name": "apps", "index": "app2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "b3d3e1d7-1f1f-4abf-8475-2058f73f3437", + "agent_id": "0faf2a12-1797-43f9-8ad0-46e085d9810e", "command": null, "display_name": "app2", "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "id": "0971e625-7a23-4108-9765-78f7ad045b38", - "name": null, + "id": "403e8671-2ab1-4a16-b578-6436e4090844", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": null, @@ -119,7 +116,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "60927265551659604", + "id": "198476735862845239", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tf b/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tf index 02c6ff6c1b67f..8ac412b5b3894 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tf +++ b/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfplan.json b/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfplan.json index d8f5a4763518b..94b81267d85b6 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfplan.json +++ b/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -41,23 +38,20 @@ "type": "coder_agent", "name": "dev2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -72,16 +66,16 @@ "type": "coder_app", "name": "app1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -97,7 +91,7 @@ "type": "coder_app", "name": "app2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": null, @@ -109,10 +103,10 @@ "url": "http://localhost:13337/healthz" } ], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": true, @@ -130,16 +124,16 @@ "type": "coder_app", "name": "app3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app3", "subdomain": false, @@ -194,16 +188,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -238,16 +229,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -281,10 +269,10 @@ "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -323,10 +311,10 @@ "url": "http://localhost:13337/healthz" } ], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": true, @@ -363,10 +351,10 @@ "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app3", "subdomain": false, @@ -431,7 +419,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -454,7 +442,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_agent.dev2", @@ -470,7 +458,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_app.app1", @@ -489,7 +477,7 @@ "constant_value": "app1" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_app.app2", @@ -524,7 +512,7 @@ "constant_value": true } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_app.app3", @@ -546,7 +534,7 @@ "constant_value": false } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev1", @@ -587,7 +575,7 @@ ] } ], - "timestamp": "2024-10-28T20:08:05Z", + "timestamp": "2025-03-04T19:25:17Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfstate.json b/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfstate.json index 4a94e05baa29d..12ae6f84b2c08 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfstate.json +++ b/provisioner/terraform/testdata/multiple-agents-multiple-apps/multiple-agents-multiple-apps.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "571523c7-e7a3-420a-b65d-39d15f5f3267", + "id": "9cd3c7d2-75fb-4ad0-acba-40ae78434154", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "c18d762d-062d-43d4-b7c2-98be546b39a6", + "startup_script_behavior": "non-blocking", + "token": "fcf46094-a739-4acc-9d64-7b40b2fbdc5c", "troubleshooting_url": null }, "sensitive_values": { @@ -55,7 +52,7 @@ "type": "coder_agent", "name": "dev2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -71,19 +68,16 @@ } ], "env": null, - "id": "e94994f2-cab5-4288-8ff3-a290c95e4e25", + "id": "37b0b6fd-6f9e-4ad4-a273-6c4334d4bc02", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "c0757e3a-4be4-4643-b3ba-b27234169eb1", + "startup_script_behavior": "non-blocking", + "token": "ed7abd75-cdf7-4b4f-b092-3288cae29f80", "troubleshooting_url": null }, "sensitive_values": { @@ -100,18 +94,18 @@ "type": "coder_app", "name": "app1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "571523c7-e7a3-420a-b65d-39d15f5f3267", + "agent_id": "9cd3c7d2-75fb-4ad0-acba-40ae78434154", "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "id": "bf2b3c44-1b1d-49c5-9149-4f2f18590c60", - "name": null, + "id": "c267f275-9d8b-40da-a78b-cc3ad0cc4e94", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -130,9 +124,9 @@ "type": "coder_app", "name": "app2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "571523c7-e7a3-420a-b65d-39d15f5f3267", + "agent_id": "9cd3c7d2-75fb-4ad0-acba-40ae78434154", "command": null, "display_name": null, "external": false, @@ -143,11 +137,11 @@ "url": "http://localhost:13337/healthz" } ], + "hidden": false, "icon": null, - "id": "580cf864-a64d-4430-98b7-fa37c44083f8", - "name": null, + "id": "dd509891-e05b-4f3c-b860-bd240b4771f8", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": true, @@ -168,18 +162,18 @@ "type": "coder_app", "name": "app3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "e94994f2-cab5-4288-8ff3-a290c95e4e25", + "agent_id": "37b0b6fd-6f9e-4ad4-a273-6c4334d4bc02", "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "id": "182dca7b-12ab-4c58-9424-23b7d61135a9", - "name": null, + "id": "7b2bf8ad-c1ec-445d-acad-cfd046d6b950", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app3", "subdomain": false, @@ -200,7 +194,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "3778543820798621894", + "id": "8605362455735888550", "triggers": null }, "sensitive_values": {}, @@ -216,7 +210,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "1094622314762410115", + "id": "2566554723161358367", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tf b/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tf index d167d44942776..e12a895d14baa 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tf +++ b/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfplan.json b/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfplan.json index 4cb28ae592516..96a20f87f89d9 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfplan.json +++ b/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -41,23 +38,20 @@ "type": "coder_agent", "name": "dev2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -72,7 +66,7 @@ "type": "coder_env", "name": "env1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "name": "ENV_1", "value": "Env 1" @@ -85,7 +79,7 @@ "type": "coder_env", "name": "env2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "name": "ENV_2", "value": "Env 2" @@ -98,7 +92,7 @@ "type": "coder_env", "name": "env3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "name": "ENV_3", "value": "Env 3" @@ -150,16 +144,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -194,16 +185,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -338,7 +326,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -361,7 +349,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_agent.dev2", @@ -377,7 +365,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_env.env1", @@ -399,7 +387,7 @@ "constant_value": "Env 1" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_env.env2", @@ -421,7 +409,7 @@ "constant_value": "Env 2" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_env.env3", @@ -443,7 +431,7 @@ "constant_value": "Env 3" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev1", @@ -484,7 +472,7 @@ ] } ], - "timestamp": "2024-10-28T20:08:06Z", + "timestamp": "2025-03-04T19:25:19Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfstate.json b/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfstate.json index f87b6f0a9eb56..64ed4878e2213 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfstate.json +++ b/provisioner/terraform/testdata/multiple-agents-multiple-envs/multiple-agents-multiple-envs.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "702e7cd2-95a0-46cf-8ef7-c1dfbd3e56b9", + "id": "a1aa25b4-5c7d-44f6-95f8-2f32205f9625", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "1cfd79e3-3f9c-4d66-b7c2-42c385c26012", + "startup_script_behavior": "non-blocking", + "token": "274d380f-9d26-4cc4-8122-0591bef43b4e", "troubleshooting_url": null }, "sensitive_values": { @@ -55,7 +52,7 @@ "type": "coder_agent", "name": "dev2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -71,19 +68,16 @@ } ], "env": null, - "id": "ca137ba9-45ce-44ff-8e30-59a86565fa7d", + "id": "6e515c26-ca96-46ca-a220-83f17b2fcd95", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "0d3aa4f8-025c-4044-8053-d077484355fb", + "startup_script_behavior": "non-blocking", + "token": "794c95b3-3404-4f0e-a7a7-278f8bbfb5f0", "troubleshooting_url": null }, "sensitive_values": { @@ -100,10 +94,10 @@ "type": "coder_env", "name": "env1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "702e7cd2-95a0-46cf-8ef7-c1dfbd3e56b9", - "id": "e3d37294-2407-4286-a519-7551b901ba54", + "agent_id": "a1aa25b4-5c7d-44f6-95f8-2f32205f9625", + "id": "bce78af7-55f1-4868-8d1a-7aac6ea85090", "name": "ENV_1", "value": "Env 1" }, @@ -118,10 +112,10 @@ "type": "coder_env", "name": "env2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "702e7cd2-95a0-46cf-8ef7-c1dfbd3e56b9", - "id": "9451575b-da89-4297-a42d-4aaf0a23775d", + "agent_id": "a1aa25b4-5c7d-44f6-95f8-2f32205f9625", + "id": "33a6c102-c871-46ce-a78b-32c518d0b387", "name": "ENV_2", "value": "Env 2" }, @@ -136,10 +130,10 @@ "type": "coder_env", "name": "env3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "ca137ba9-45ce-44ff-8e30-59a86565fa7d", - "id": "948e3fb5-12a1-454b-b85e-d4dc1f01838f", + "agent_id": "6e515c26-ca96-46ca-a220-83f17b2fcd95", + "id": "3e746cf3-5a3f-446a-9643-4dffb344009c", "name": "ENV_3", "value": "Env 3" }, @@ -156,7 +150,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "7502424400840788651", + "id": "8646180706267246123", "triggers": null }, "sensitive_values": {}, @@ -172,7 +166,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "3916143681500058654", + "id": "3657189128073189353", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tf b/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tf new file mode 100644 index 0000000000000..f86ceb180edb5 --- /dev/null +++ b/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tf @@ -0,0 +1,67 @@ +terraform { + required_providers { + coder = { + source = "coder/coder" + version = "2.2.0-pre0" + } + } +} + +resource "coder_agent" "dev1" { + os = "linux" + arch = "amd64" + resources_monitoring { + memory { + enabled = true + threshold = 80 + } + } +} + +resource "coder_agent" "dev2" { + os = "linux" + arch = "amd64" + resources_monitoring { + memory { + enabled = true + threshold = 99 + } + volume { + path = "/volume1" + enabled = true + threshold = 80 + } + volume { + path = "/volume2" + enabled = false + threshold = 50 + } + } +} + +# app1 is for testing subdomain default. +resource "coder_app" "app1" { + agent_id = coder_agent.dev1.id + slug = "app1" + # subdomain should default to false. + # subdomain = false +} + +# app2 tests that subdomaincan be true, and that healthchecks work. +resource "coder_app" "app2" { + agent_id = coder_agent.dev1.id + slug = "app2" + subdomain = true + healthcheck { + url = "http://localhost:13337/healthz" + interval = 5 + threshold = 6 + } +} + +resource "null_resource" "dev" { + depends_on = [ + coder_agent.dev1, + coder_agent.dev2 + ] +} diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfplan.json b/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfplan.json new file mode 100644 index 0000000000000..5fb45060be911 --- /dev/null +++ b/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfplan.json @@ -0,0 +1,625 @@ +{ + "format_version": "1.2", + "terraform_version": "1.10.5", + "planned_values": { + "root_module": { + "resources": [ + { + "address": "coder_agent.dev1", + "mode": "managed", + "type": "coder_agent", + "name": "dev1", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "arch": "amd64", + "auth": "token", + "connection_timeout": 120, + "dir": null, + "env": null, + "metadata": [], + "motd_file": null, + "order": null, + "os": "linux", + "resources_monitoring": [ + { + "memory": [ + { + "enabled": true, + "threshold": 80 + } + ], + "volume": [] + } + ], + "shutdown_script": null, + "startup_script": null, + "startup_script_behavior": "non-blocking", + "troubleshooting_url": null + }, + "sensitive_values": { + "display_apps": [], + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [] + } + ], + "token": true + } + }, + { + "address": "coder_agent.dev2", + "mode": "managed", + "type": "coder_agent", + "name": "dev2", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "arch": "amd64", + "auth": "token", + "connection_timeout": 120, + "dir": null, + "env": null, + "metadata": [], + "motd_file": null, + "order": null, + "os": "linux", + "resources_monitoring": [ + { + "memory": [ + { + "enabled": true, + "threshold": 99 + } + ], + "volume": [ + { + "enabled": false, + "path": "/volume2", + "threshold": 50 + }, + { + "enabled": true, + "path": "/volume1", + "threshold": 80 + } + ] + } + ], + "shutdown_script": null, + "startup_script": null, + "startup_script_behavior": "non-blocking", + "troubleshooting_url": null + }, + "sensitive_values": { + "display_apps": [], + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [ + {}, + {} + ] + } + ], + "token": true + } + }, + { + "address": "coder_app.app1", + "mode": "managed", + "type": "coder_app", + "name": "app1", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "command": null, + "display_name": null, + "external": false, + "healthcheck": [], + "hidden": false, + "icon": null, + "open_in": "slim-window", + "order": null, + "share": "owner", + "slug": "app1", + "subdomain": null, + "url": null + }, + "sensitive_values": { + "healthcheck": [] + } + }, + { + "address": "coder_app.app2", + "mode": "managed", + "type": "coder_app", + "name": "app2", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "command": null, + "display_name": null, + "external": false, + "healthcheck": [ + { + "interval": 5, + "threshold": 6, + "url": "http://localhost:13337/healthz" + } + ], + "hidden": false, + "icon": null, + "open_in": "slim-window", + "order": null, + "share": "owner", + "slug": "app2", + "subdomain": true, + "url": null + }, + "sensitive_values": { + "healthcheck": [ + {} + ] + } + }, + { + "address": "null_resource.dev", + "mode": "managed", + "type": "null_resource", + "name": "dev", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0, + "values": { + "triggers": null + }, + "sensitive_values": {} + } + ] + } + }, + "resource_changes": [ + { + "address": "coder_agent.dev1", + "mode": "managed", + "type": "coder_agent", + "name": "dev1", + "provider_name": "registry.terraform.io/coder/coder", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "arch": "amd64", + "auth": "token", + "connection_timeout": 120, + "dir": null, + "env": null, + "metadata": [], + "motd_file": null, + "order": null, + "os": "linux", + "resources_monitoring": [ + { + "memory": [ + { + "enabled": true, + "threshold": 80 + } + ], + "volume": [] + } + ], + "shutdown_script": null, + "startup_script": null, + "startup_script_behavior": "non-blocking", + "troubleshooting_url": null + }, + "after_unknown": { + "display_apps": true, + "id": true, + "init_script": true, + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [] + } + ], + "token": true + }, + "before_sensitive": false, + "after_sensitive": { + "display_apps": [], + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [] + } + ], + "token": true + } + } + }, + { + "address": "coder_agent.dev2", + "mode": "managed", + "type": "coder_agent", + "name": "dev2", + "provider_name": "registry.terraform.io/coder/coder", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "arch": "amd64", + "auth": "token", + "connection_timeout": 120, + "dir": null, + "env": null, + "metadata": [], + "motd_file": null, + "order": null, + "os": "linux", + "resources_monitoring": [ + { + "memory": [ + { + "enabled": true, + "threshold": 99 + } + ], + "volume": [ + { + "enabled": false, + "path": "/volume2", + "threshold": 50 + }, + { + "enabled": true, + "path": "/volume1", + "threshold": 80 + } + ] + } + ], + "shutdown_script": null, + "startup_script": null, + "startup_script_behavior": "non-blocking", + "troubleshooting_url": null + }, + "after_unknown": { + "display_apps": true, + "id": true, + "init_script": true, + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [ + {}, + {} + ] + } + ], + "token": true + }, + "before_sensitive": false, + "after_sensitive": { + "display_apps": [], + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [ + {}, + {} + ] + } + ], + "token": true + } + } + }, + { + "address": "coder_app.app1", + "mode": "managed", + "type": "coder_app", + "name": "app1", + "provider_name": "registry.terraform.io/coder/coder", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "command": null, + "display_name": null, + "external": false, + "healthcheck": [], + "hidden": false, + "icon": null, + "open_in": "slim-window", + "order": null, + "share": "owner", + "slug": "app1", + "subdomain": null, + "url": null + }, + "after_unknown": { + "agent_id": true, + "healthcheck": [], + "id": true + }, + "before_sensitive": false, + "after_sensitive": { + "healthcheck": [] + } + } + }, + { + "address": "coder_app.app2", + "mode": "managed", + "type": "coder_app", + "name": "app2", + "provider_name": "registry.terraform.io/coder/coder", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "command": null, + "display_name": null, + "external": false, + "healthcheck": [ + { + "interval": 5, + "threshold": 6, + "url": "http://localhost:13337/healthz" + } + ], + "hidden": false, + "icon": null, + "open_in": "slim-window", + "order": null, + "share": "owner", + "slug": "app2", + "subdomain": true, + "url": null + }, + "after_unknown": { + "agent_id": true, + "healthcheck": [ + {} + ], + "id": true + }, + "before_sensitive": false, + "after_sensitive": { + "healthcheck": [ + {} + ] + } + } + }, + { + "address": "null_resource.dev", + "mode": "managed", + "type": "null_resource", + "name": "dev", + "provider_name": "registry.terraform.io/hashicorp/null", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "triggers": null + }, + "after_unknown": { + "id": true + }, + "before_sensitive": false, + "after_sensitive": {} + } + } + ], + "configuration": { + "provider_config": { + "coder": { + "name": "coder", + "full_name": "registry.terraform.io/coder/coder", + "version_constraint": "2.2.0-pre0" + }, + "null": { + "name": "null", + "full_name": "registry.terraform.io/hashicorp/null" + } + }, + "root_module": { + "resources": [ + { + "address": "coder_agent.dev1", + "mode": "managed", + "type": "coder_agent", + "name": "dev1", + "provider_config_key": "coder", + "expressions": { + "arch": { + "constant_value": "amd64" + }, + "os": { + "constant_value": "linux" + }, + "resources_monitoring": [ + { + "memory": [ + { + "enabled": { + "constant_value": true + }, + "threshold": { + "constant_value": 80 + } + } + ] + } + ] + }, + "schema_version": 1 + }, + { + "address": "coder_agent.dev2", + "mode": "managed", + "type": "coder_agent", + "name": "dev2", + "provider_config_key": "coder", + "expressions": { + "arch": { + "constant_value": "amd64" + }, + "os": { + "constant_value": "linux" + }, + "resources_monitoring": [ + { + "memory": [ + { + "enabled": { + "constant_value": true + }, + "threshold": { + "constant_value": 99 + } + } + ], + "volume": [ + { + "enabled": { + "constant_value": true + }, + "path": { + "constant_value": "/volume1" + }, + "threshold": { + "constant_value": 80 + } + }, + { + "enabled": { + "constant_value": false + }, + "path": { + "constant_value": "/volume2" + }, + "threshold": { + "constant_value": 50 + } + } + ] + } + ] + }, + "schema_version": 1 + }, + { + "address": "coder_app.app1", + "mode": "managed", + "type": "coder_app", + "name": "app1", + "provider_config_key": "coder", + "expressions": { + "agent_id": { + "references": [ + "coder_agent.dev1.id", + "coder_agent.dev1" + ] + }, + "slug": { + "constant_value": "app1" + } + }, + "schema_version": 1 + }, + { + "address": "coder_app.app2", + "mode": "managed", + "type": "coder_app", + "name": "app2", + "provider_config_key": "coder", + "expressions": { + "agent_id": { + "references": [ + "coder_agent.dev1.id", + "coder_agent.dev1" + ] + }, + "healthcheck": [ + { + "interval": { + "constant_value": 5 + }, + "threshold": { + "constant_value": 6 + }, + "url": { + "constant_value": "http://localhost:13337/healthz" + } + } + ], + "slug": { + "constant_value": "app2" + }, + "subdomain": { + "constant_value": true + } + }, + "schema_version": 1 + }, + { + "address": "null_resource.dev", + "mode": "managed", + "type": "null_resource", + "name": "dev", + "provider_config_key": "null", + "schema_version": 0, + "depends_on": [ + "coder_agent.dev1", + "coder_agent.dev2" + ] + } + ] + } + }, + "relevant_attributes": [ + { + "resource": "coder_agent.dev1", + "attribute": [ + "id" + ] + } + ], + "timestamp": "2025-03-04T19:25:21Z", + "applyable": true, + "complete": true, + "errored": false +} diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfstate.json b/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfstate.json new file mode 100644 index 0000000000000..fa19d308dff44 --- /dev/null +++ b/provisioner/terraform/testdata/multiple-agents-multiple-monitors/multiple-agents-multiple-monitors.tfstate.json @@ -0,0 +1,231 @@ +{ + "format_version": "1.0", + "terraform_version": "1.10.5", + "values": { + "root_module": { + "resources": [ + { + "address": "coder_agent.dev1", + "mode": "managed", + "type": "coder_agent", + "name": "dev1", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "arch": "amd64", + "auth": "token", + "connection_timeout": 120, + "dir": null, + "display_apps": [ + { + "port_forwarding_helper": true, + "ssh_helper": true, + "vscode": true, + "vscode_insiders": false, + "web_terminal": true + } + ], + "env": null, + "id": "baa57f58-60fb-4490-9f11-1f7e17ae698a", + "init_script": "", + "metadata": [], + "motd_file": null, + "order": null, + "os": "linux", + "resources_monitoring": [ + { + "memory": [ + { + "enabled": true, + "threshold": 80 + } + ], + "volume": [] + } + ], + "shutdown_script": null, + "startup_script": null, + "startup_script_behavior": "non-blocking", + "token": "6a54f7c6-93b5-4d2f-a194-7b6f968b9293", + "troubleshooting_url": null + }, + "sensitive_values": { + "display_apps": [ + {} + ], + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [] + } + ], + "token": true + } + }, + { + "address": "coder_agent.dev2", + "mode": "managed", + "type": "coder_agent", + "name": "dev2", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "arch": "amd64", + "auth": "token", + "connection_timeout": 120, + "dir": null, + "display_apps": [ + { + "port_forwarding_helper": true, + "ssh_helper": true, + "vscode": true, + "vscode_insiders": false, + "web_terminal": true + } + ], + "env": null, + "id": "60fa4e03-a7b1-47fc-9977-7cf43bb04f1f", + "init_script": "", + "metadata": [], + "motd_file": null, + "order": null, + "os": "linux", + "resources_monitoring": [ + { + "memory": [ + { + "enabled": true, + "threshold": 99 + } + ], + "volume": [ + { + "enabled": false, + "path": "/volume2", + "threshold": 50 + }, + { + "enabled": true, + "path": "/volume1", + "threshold": 80 + } + ] + } + ], + "shutdown_script": null, + "startup_script": null, + "startup_script_behavior": "non-blocking", + "token": "753eb1c8-e032-4d9c-baea-4534040f68d9", + "troubleshooting_url": null + }, + "sensitive_values": { + "display_apps": [ + {} + ], + "metadata": [], + "resources_monitoring": [ + { + "memory": [ + {} + ], + "volume": [ + {}, + {} + ] + } + ], + "token": true + } + }, + { + "address": "coder_app.app1", + "mode": "managed", + "type": "coder_app", + "name": "app1", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "agent_id": "baa57f58-60fb-4490-9f11-1f7e17ae698a", + "command": null, + "display_name": null, + "external": false, + "healthcheck": [], + "hidden": false, + "icon": null, + "id": "9e46f6e5-72c3-4502-b0f8-36bcec12baba", + "open_in": "slim-window", + "order": null, + "share": "owner", + "slug": "app1", + "subdomain": null, + "url": null + }, + "sensitive_values": { + "healthcheck": [] + }, + "depends_on": [ + "coder_agent.dev1" + ] + }, + { + "address": "coder_app.app2", + "mode": "managed", + "type": "coder_app", + "name": "app2", + "provider_name": "registry.terraform.io/coder/coder", + "schema_version": 1, + "values": { + "agent_id": "baa57f58-60fb-4490-9f11-1f7e17ae698a", + "command": null, + "display_name": null, + "external": false, + "healthcheck": [ + { + "interval": 5, + "threshold": 6, + "url": "http://localhost:13337/healthz" + } + ], + "hidden": false, + "icon": null, + "id": "e3591c31-401b-44c6-bbba-df36d02199c8", + "open_in": "slim-window", + "order": null, + "share": "owner", + "slug": "app2", + "subdomain": true, + "url": null + }, + "sensitive_values": { + "healthcheck": [ + {} + ] + }, + "depends_on": [ + "coder_agent.dev1" + ] + }, + { + "address": "null_resource.dev", + "mode": "managed", + "type": "null_resource", + "name": "dev", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0, + "values": { + "id": "4101480329869104281", + "triggers": null + }, + "sensitive_values": {}, + "depends_on": [ + "coder_agent.dev1", + "coder_agent.dev2" + ] + } + ] + } + } +} diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tf b/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tf index af041e2da350d..c0aee0d2d97e5 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tf +++ b/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfplan.json b/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfplan.json index ab14e49f02989..8a6311e03958b 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfplan.json +++ b/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -41,23 +38,20 @@ "type": "coder_agent", "name": "dev2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -72,7 +66,7 @@ "type": "coder_script", "name": "script1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "cron": null, "display_name": "Foobar Script 1", @@ -92,7 +86,7 @@ "type": "coder_script", "name": "script2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "cron": null, "display_name": "Foobar Script 2", @@ -112,7 +106,7 @@ "type": "coder_script", "name": "script3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "cron": null, "display_name": "Foobar Script 3", @@ -171,16 +165,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -215,16 +206,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -380,7 +368,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -403,7 +391,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_agent.dev2", @@ -419,7 +407,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_script.script1", @@ -444,7 +432,7 @@ "constant_value": "echo foobar 1" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_script.script2", @@ -469,7 +457,7 @@ "constant_value": "echo foobar 2" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_script.script3", @@ -494,7 +482,7 @@ "constant_value": "echo foobar 3" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev1", @@ -523,19 +511,19 @@ }, "relevant_attributes": [ { - "resource": "coder_agent.dev1", + "resource": "coder_agent.dev2", "attribute": [ "id" ] }, { - "resource": "coder_agent.dev2", + "resource": "coder_agent.dev1", "attribute": [ "id" ] } ], - "timestamp": "2024-10-28T20:08:08Z", + "timestamp": "2025-03-04T19:25:23Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfstate.json b/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfstate.json index 37c4ef13ee6fb..26c719f7d730a 100644 --- a/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfstate.json +++ b/provisioner/terraform/testdata/multiple-agents-multiple-scripts/multiple-agents-multiple-scripts.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "753eb8c0-e2b7-4cbc-b0ff-1370ce2e4022", + "id": "0ae6e69a-d5ca-4b40-9a79-67e11b317742", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "77b179b6-0e2d-4307-9ba0-98325fc96e37", + "startup_script_behavior": "non-blocking", + "token": "0a20b766-43d1-4074-a445-384257e5de27", "troubleshooting_url": null }, "sensitive_values": { @@ -55,7 +52,7 @@ "type": "coder_agent", "name": "dev2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -71,19 +68,16 @@ } ], "env": null, - "id": "86f7e422-1798-4de5-8209-69b023808241", + "id": "622c6b37-cea1-4f6d-9f01-55e5cdd541a6", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "aa4ae02d-4084-4dff-951c-af10f78a98c2", + "startup_script_behavior": "non-blocking", + "token": "055f173e-755a-4829-b817-1d5ccf054f70", "troubleshooting_url": null }, "sensitive_values": { @@ -100,13 +94,13 @@ "type": "coder_script", "name": "script1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "753eb8c0-e2b7-4cbc-b0ff-1370ce2e4022", + "agent_id": "0ae6e69a-d5ca-4b40-9a79-67e11b317742", "cron": null, "display_name": "Foobar Script 1", "icon": null, - "id": "eb1eb8f4-3a4a-4040-bd6a-0abce01d6330", + "id": "34f6c49b-8c99-4bd1-a40f-24ee011fb490", "log_path": null, "run_on_start": true, "run_on_stop": false, @@ -125,13 +119,13 @@ "type": "coder_script", "name": "script2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "753eb8c0-e2b7-4cbc-b0ff-1370ce2e4022", + "agent_id": "0ae6e69a-d5ca-4b40-9a79-67e11b317742", "cron": null, "display_name": "Foobar Script 2", "icon": null, - "id": "1de43abc-8416-4455-87ca-23fb425b4eeb", + "id": "4c6bc57b-23fc-41c2-86c5-4f3a899e171c", "log_path": null, "run_on_start": true, "run_on_stop": false, @@ -150,13 +144,13 @@ "type": "coder_script", "name": "script3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "86f7e422-1798-4de5-8209-69b023808241", + "agent_id": "622c6b37-cea1-4f6d-9f01-55e5cdd541a6", "cron": null, "display_name": "Foobar Script 3", "icon": null, - "id": "ede835f7-4018-464c-807d-7e07af7de9d3", + "id": "8ff5a1e9-ca8c-442f-89c2-dd7e2d8e74d7", "log_path": null, "run_on_start": true, "run_on_stop": false, @@ -177,7 +171,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "4207133259459553257", + "id": "7783428659239328742", "triggers": null }, "sensitive_values": {}, @@ -193,7 +187,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "5647997484430231619", + "id": "8319259774862919105", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfplan.json b/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfplan.json index 67da167932aa4..2ce46aa6dabff 100644 --- a/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfplan.json +++ b/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -464,7 +464,7 @@ ] } }, - "timestamp": "2024-10-28T20:08:03Z", + "timestamp": "2025-03-04T19:25:25Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfstate.json b/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfstate.json index cd8edc0ae29bc..fbdf9416a3e88 100644 --- a/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfstate.json +++ b/provisioner/terraform/testdata/multiple-agents/multiple-agents.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -26,7 +26,7 @@ } ], "env": null, - "id": "c76ed902-d4cb-4905-9961-4d58dda135f9", + "id": "996be323-1195-4cee-9d00-778a025fbaf9", "init_script": "", "login_before_ready": true, "metadata": [], @@ -38,7 +38,7 @@ "startup_script": null, "startup_script_behavior": null, "startup_script_timeout": 300, - "token": "f1aa99ea-570d-49cf-aef9-a4241e3cb023", + "token": "df89f5a4-3349-40eb-a628-d20f5e8ffb93", "troubleshooting_url": null }, "sensitive_values": { @@ -71,7 +71,7 @@ } ], "env": null, - "id": "1b037439-4eb3-408e-83da-28dc93645944", + "id": "8c9bbbf8-0049-47d6-afef-555f2e4c8f31", "init_script": "", "login_before_ready": true, "metadata": [], @@ -83,7 +83,7 @@ "startup_script": null, "startup_script_behavior": "non-blocking", "startup_script_timeout": 30, - "token": "20d4e89e-d6de-4eb7-8877-f9186d684aa5", + "token": "26d616b2-9df3-43b2-b89b-dc8665dbcff4", "troubleshooting_url": null }, "sensitive_values": { @@ -116,7 +116,7 @@ } ], "env": null, - "id": "453b5404-8ea4-4197-8664-3638e6a012ca", + "id": "33ed3e88-edf5-4bc8-a0bb-1f743ffb169d", "init_script": "", "login_before_ready": true, "metadata": [], @@ -128,7 +128,7 @@ "startup_script": null, "startup_script_behavior": "blocking", "startup_script_timeout": 300, - "token": "0355cb42-9da0-4bad-b2aa-74db1df76fef", + "token": "42292f6c-6fc4-43f4-8de9-219990cc4a93", "troubleshooting_url": "https://coder.com/troubleshoot" }, "sensitive_values": { @@ -161,7 +161,7 @@ } ], "env": null, - "id": "c0a68e9b-5b29-4d95-b664-5ac71dd633cf", + "id": "f1ff7240-3700-494d-a0fd-6a88459d8ab7", "init_script": "", "login_before_ready": false, "metadata": [], @@ -173,7 +173,7 @@ "startup_script": null, "startup_script_behavior": null, "startup_script_timeout": 300, - "token": "34b78439-5d6e-431b-b06c-339f97a1e9cf", + "token": "2d133297-d1b2-486e-8b3e-078df4ed0de7", "troubleshooting_url": null }, "sensitive_values": { @@ -192,7 +192,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "5109814714394194897", + "id": "1432868857711807382", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/multiple-apps/multiple-apps.tf b/provisioner/terraform/testdata/multiple-apps/multiple-apps.tf index c7c4f9968b5c3..c52f4a58b36f4 100644 --- a/provisioner/terraform/testdata/multiple-apps/multiple-apps.tf +++ b/provisioner/terraform/testdata/multiple-apps/multiple-apps.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfplan.json b/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfplan.json index b156c3b5068b6..c0c11ddf7cde7 100644 --- a/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfplan.json +++ b/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -41,16 +38,16 @@ "type": "coder_app", "name": "app1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -66,7 +63,7 @@ "type": "coder_app", "name": "app2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": null, @@ -78,10 +75,10 @@ "url": "http://localhost:13337/healthz" } ], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": true, @@ -99,16 +96,16 @@ "type": "coder_app", "name": "app3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app3", "subdomain": false, @@ -151,16 +148,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -194,10 +188,10 @@ "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -236,10 +230,10 @@ "url": "http://localhost:13337/healthz" } ], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": true, @@ -276,10 +270,10 @@ "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "name": null, + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app3", "subdomain": false, @@ -323,7 +317,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -346,7 +340,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_app.app1", @@ -365,7 +359,7 @@ "constant_value": "app1" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_app.app2", @@ -400,7 +394,7 @@ "constant_value": true } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_app.app3", @@ -422,7 +416,7 @@ "constant_value": false } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev", @@ -446,7 +440,7 @@ ] } ], - "timestamp": "2024-10-28T20:08:10Z", + "timestamp": "2025-03-04T19:25:27Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfstate.json b/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfstate.json index d3fc254bf40b0..d0c33353e4e18 100644 --- a/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfstate.json +++ b/provisioner/terraform/testdata/multiple-apps/multiple-apps.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "dev1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,19 +26,16 @@ } ], "env": null, - "id": "b3ea3cb0-176c-4642-9bf5-cfa72e0782cc", + "id": "d71e5147-0345-4be6-aa12-a90ca441db12", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "30533677-f04a-493b-b6cb-314d9abf7769", + "startup_script_behavior": "non-blocking", + "token": "3a74d687-a18c-4988-9d65-6659577553dd", "troubleshooting_url": null }, "sensitive_values": { @@ -55,18 +52,18 @@ "type": "coder_app", "name": "app1", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "b3ea3cb0-176c-4642-9bf5-cfa72e0782cc", + "agent_id": "d71e5147-0345-4be6-aa12-a90ca441db12", "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "id": "537e9069-492b-4721-96dd-cffba275ecd9", - "name": null, + "id": "3d1b6545-ab67-458d-abb1-7a7f3ef2c8a6", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app1", "subdomain": null, @@ -85,9 +82,9 @@ "type": "coder_app", "name": "app2", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "b3ea3cb0-176c-4642-9bf5-cfa72e0782cc", + "agent_id": "d71e5147-0345-4be6-aa12-a90ca441db12", "command": null, "display_name": null, "external": false, @@ -98,11 +95,11 @@ "url": "http://localhost:13337/healthz" } ], + "hidden": false, "icon": null, - "id": "3a4c78a0-7ea3-44aa-9ea8-4e08e387b4b6", - "name": null, + "id": "0ec8ec9c-67b2-4e1a-8f18-346bda58a06f", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app2", "subdomain": true, @@ -123,18 +120,18 @@ "type": "coder_app", "name": "app3", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { - "agent_id": "b3ea3cb0-176c-4642-9bf5-cfa72e0782cc", + "agent_id": "d71e5147-0345-4be6-aa12-a90ca441db12", "command": null, "display_name": null, "external": false, "healthcheck": [], + "hidden": false, "icon": null, - "id": "23555681-0ecb-4962-8e85-367d3a9d0228", - "name": null, + "id": "97559bb9-cf0f-4b83-9e53-25cd7c785f34", + "open_in": "slim-window", "order": null, - "relative_path": null, "share": "owner", "slug": "app3", "subdomain": false, @@ -155,7 +152,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "2905101599123333983", + "id": "8869597861449516263", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tf b/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tf index b316db7c3cdf1..b88a672f0047a 100644 --- a/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tf +++ b/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfplan.json b/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfplan.json index 3b7881701038c..04f3fe1056037 100644 --- a/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfplan.json +++ b/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,14 +10,13 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [ { "display_name": "Process Count", @@ -32,10 +31,8 @@ "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -52,7 +49,7 @@ "type": "coder_metadata", "name": "about_info", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "daily_cost": 29, "hide": true, @@ -83,7 +80,7 @@ "type": "coder_metadata", "name": "other_info", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "daily_cost": 20, "hide": true, @@ -135,7 +132,6 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [ { "display_name": "Process Count", @@ -150,10 +146,8 @@ "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -291,7 +285,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -333,7 +327,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_metadata.about_info", @@ -373,7 +367,7 @@ ] } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_metadata.other_info", @@ -408,7 +402,7 @@ ] } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.about", @@ -432,7 +426,7 @@ ] } ], - "timestamp": "2024-10-28T20:08:13Z", + "timestamp": "2025-03-04T19:25:29Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfstate.json b/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfstate.json index 170630d0e3103..a13acd6b519b2 100644 --- a/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfstate.json +++ b/provisioner/terraform/testdata/resource-metadata-duplicate/resource-metadata-duplicate.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,9 +26,8 @@ } ], "env": null, - "id": "0cbc2449-fbaa-447a-8487-6c47367af0be", + "id": "3d4f1a36-68cd-4c91-92dd-d07ccb515553", "init_script": "", - "login_before_ready": true, "metadata": [ { "display_name": "Process Count", @@ -43,11 +42,9 @@ "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "b03606cc-1ed3-4187-964d-389cf2ef223f", + "startup_script_behavior": "non-blocking", + "token": "95c49419-c343-4185-9132-4f7b64105e6c", "troubleshooting_url": null }, "sensitive_values": { @@ -66,12 +63,12 @@ "type": "coder_metadata", "name": "about_info", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "daily_cost": 29, "hide": true, "icon": "/icon/server.svg", - "id": "d6c33b98-addd-4d97-8659-405350bc06c1", + "id": "49d732e1-2d98-457d-84f2-088660d6e80b", "item": [ { "is_null": false, @@ -86,7 +83,7 @@ "value": "" } ], - "resource_id": "5673227143105805783" + "resource_id": "771326507239132201" }, "sensitive_values": { "item": [ @@ -105,12 +102,12 @@ "type": "coder_metadata", "name": "other_info", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "daily_cost": 20, "hide": true, "icon": "/icon/server.svg", - "id": "76594f08-2261-4114-a61f-e07107a86f89", + "id": "a2a626bc-7e5b-48cb-919b-449f40d7b145", "item": [ { "is_null": false, @@ -119,7 +116,7 @@ "value": "world" } ], - "resource_id": "5673227143105805783" + "resource_id": "771326507239132201" }, "sensitive_values": { "item": [ @@ -139,7 +136,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "5673227143105805783", + "id": "771326507239132201", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/resource-metadata/resource-metadata.tf b/provisioner/terraform/testdata/resource-metadata/resource-metadata.tf index cd46057ce8526..eb9f2eff89877 100644 --- a/provisioner/terraform/testdata/resource-metadata/resource-metadata.tf +++ b/provisioner/terraform/testdata/resource-metadata/resource-metadata.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfplan.json b/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfplan.json index f9c24830c6ef3..05d87f4fc7c4b 100644 --- a/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfplan.json +++ b/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,14 +10,13 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [ { "display_name": "Process Count", @@ -32,10 +31,8 @@ "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -52,7 +49,7 @@ "type": "coder_metadata", "name": "about_info", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "daily_cost": 29, "hide": true, @@ -122,7 +119,6 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [ { "display_name": "Process Count", @@ -137,10 +133,8 @@ "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -256,7 +250,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -301,7 +295,7 @@ "constant_value": "linux" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "coder_metadata.about_info", @@ -360,7 +354,7 @@ ] } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.about", @@ -384,7 +378,7 @@ ] } ], - "timestamp": "2024-10-28T20:08:11Z", + "timestamp": "2025-03-04T19:25:30Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfstate.json b/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfstate.json index a41aff216b11c..a2b1be2257a3f 100644 --- a/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfstate.json +++ b/provisioner/terraform/testdata/resource-metadata/resource-metadata.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -10,7 +10,7 @@ "type": "coder_agent", "name": "main", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "amd64", "auth": "token", @@ -26,9 +26,8 @@ } ], "env": null, - "id": "3bcbc547-b434-4dbd-b5ed-551edfba1b5c", + "id": "e7fbb3ac-d754-44b5-aa2b-bef6b9f358ff", "init_script": "", - "login_before_ready": true, "metadata": [ { "display_name": "Process Count", @@ -43,11 +42,9 @@ "order": null, "os": "linux", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "2d25fcc3-a355-4e92-98c6-ab780894ffee", + "startup_script_behavior": "non-blocking", + "token": "e82b787b-e97e-4555-8680-cf6a887dfc6a", "troubleshooting_url": null }, "sensitive_values": { @@ -66,12 +63,12 @@ "type": "coder_metadata", "name": "about_info", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "daily_cost": 29, "hide": true, "icon": "/icon/server.svg", - "id": "d9ce721c-dff3-44fd-92d1-155f37c84a56", + "id": "4eed85bc-cefc-487a-b7f4-ef39ada0d3e0", "item": [ { "is_null": false, @@ -98,7 +95,7 @@ "value": "squirrel" } ], - "resource_id": "4099397325680267994" + "resource_id": "4279195833018001043" }, "sensitive_values": { "item": [ @@ -121,7 +118,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "4099397325680267994", + "id": "4279195833018001043", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tf b/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tf index 82e7a6f95694e..fc684a6e583ee 100644 --- a/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tf +++ b/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfplan.json b/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfplan.json index 72120dfaabeec..58e3d054bba5b 100644 --- a/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfplan.json +++ b/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "arm64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -68,16 +65,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -119,7 +113,7 @@ ], "prior_state": { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -136,7 +130,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "e8805d7c-1636-4416-9520-b83234d68ddc", + "id": "965c2bc9-936f-43d5-9287-36603538790a", "mutable": false, "name": "Example", "option": null, @@ -163,7 +157,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "df43829a-49ce-4911-97ef-2fca78456c9f", + "id": "6472f1a0-e75c-45a2-9a49-0bb7adcb3e23", "mutable": false, "name": "Sample", "option": null, @@ -186,7 +180,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -209,7 +203,7 @@ "constant_value": "windows" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev", @@ -269,7 +263,7 @@ ] } }, - "timestamp": "2024-10-28T20:08:17Z", + "timestamp": "2025-03-04T19:25:32Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfstate.json b/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfstate.json index 1d675d685a37c..c2a3fda518070 100644 --- a/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfstate.json +++ b/provisioner/terraform/testdata/rich-parameters-order/rich-parameters-order.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -17,7 +17,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "81ada233-3a30-49d3-a56f-aca92f19c411", + "id": "03899941-4e7d-4e74-bcfb-92dc9619a85d", "mutable": false, "name": "Example", "option": null, @@ -44,7 +44,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "4dc1049f-0d54-408a-a412-95629ae5cd84", + "id": "632aa89d-d903-44c3-b44c-eb131498c579", "mutable": false, "name": "Sample", "option": null, @@ -64,7 +64,7 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "arm64", "auth": "token", @@ -80,19 +80,16 @@ } ], "env": null, - "id": "86cc4d6e-23b3-4632-9bc9-d3a321e8b906", + "id": "f67efb88-ae6d-4f33-8065-50b420c1ce80", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "0c3e7639-bafc-4e62-8e38-cb4e1b44e3f3", + "startup_script_behavior": "non-blocking", + "token": "164cba1c-98ce-4590-8ebb-f966a66a2301", "troubleshooting_url": null }, "sensitive_values": { @@ -111,7 +108,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "2501594036325466407", + "id": "2247834665085956471", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tf b/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tf index c05e8d5d4ae32..8067c0fa9337c 100644 --- a/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tf +++ b/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfplan.json b/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfplan.json index 66153605ee4a0..bd103658ad3d7 100644 --- a/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfplan.json +++ b/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "arm64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -68,16 +65,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -119,7 +113,7 @@ ], "prior_state": { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -136,7 +130,7 @@ "display_name": null, "ephemeral": true, "icon": null, - "id": "df8ad066-047d-434d-baa3-e19517ee7395", + "id": "fd220d2f-a3e7-4f6b-9870-ebe0ccb3e5c9", "mutable": true, "name": "number_example", "option": null, @@ -163,7 +157,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "7d9658aa-ff69-477a-9063-e9fd49fd9a9b", + "id": "b8288523-b649-48d0-928c-ae99069adda2", "mutable": false, "name": "number_example_max", "option": null, @@ -202,7 +196,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "bd6fcaac-db7f-4c4d-a664-fe7f47fad28a", + "id": "07c9e8e7-3dd2-4674-875b-ac6369cf5420", "mutable": false, "name": "number_example_max_zero", "option": null, @@ -241,7 +235,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "8d42942d-5a10-43c9-a31d-d3fe9a7814e8", + "id": "b8f0a3fc-277d-47b2-a7a2-1267430b8cd8", "mutable": false, "name": "number_example_min", "option": null, @@ -280,7 +274,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "695301d0-8325-4685-824d-1ca9591689e3", + "id": "260e9363-5c18-4e22-a1e2-9a28f0a0d14a", "mutable": false, "name": "number_example_min_max", "option": null, @@ -319,7 +313,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "cd921934-d1b1-4370-8a73-2d43658ea877", + "id": "79a04ae2-4098-4482-a83b-2de95174ff22", "mutable": false, "name": "number_example_min_zero", "option": null, @@ -354,7 +348,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "null": { "name": "null", @@ -377,7 +371,7 @@ "constant_value": "windows" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev", @@ -551,7 +545,7 @@ ] } }, - "timestamp": "2024-10-28T20:08:18Z", + "timestamp": "2025-03-04T19:25:34Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfstate.json b/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfstate.json index 35b981c3a9b54..1ba6a2b297eb0 100644 --- a/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfstate.json +++ b/provisioner/terraform/testdata/rich-parameters-validation/rich-parameters-validation.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -17,7 +17,7 @@ "display_name": null, "ephemeral": true, "icon": null, - "id": "e09e9110-2f11-4a45-bc9f-dc7a12834ef0", + "id": "9f9ddc8e-bd35-4fa9-ade3-8f206c96d2e8", "mutable": true, "name": "number_example", "option": null, @@ -44,7 +44,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "7ba6324d-d8fd-43b8-91d2-d970a424db8b", + "id": "1a989e82-d7a9-460f-9d0d-fd3adcbf0aeb", "mutable": false, "name": "number_example_max", "option": null, @@ -83,7 +83,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "64e12007-8479-43bf-956b-86fe7ae73066", + "id": "ded0470e-2a18-4509-a675-adba973eb034", "mutable": false, "name": "number_example_max_zero", "option": null, @@ -122,7 +122,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "32681b2b-682f-4a5f-9aa6-c05be9d41a89", + "id": "1fd9df82-d747-4a35-a717-87e867efff71", "mutable": false, "name": "number_example_min", "option": null, @@ -161,7 +161,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "03b67b89-0d35-449d-8997-f5ce4b7c1518", + "id": "22450c89-855a-43ff-9757-0516c72ab437", "mutable": false, "name": "number_example_min_max", "option": null, @@ -200,7 +200,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "2201fc53-38c6-4a68-b3b9-4f6ef3390962", + "id": "32ffe953-8cf6-4637-bf00-171012629ea5", "mutable": false, "name": "number_example_min_zero", "option": null, @@ -232,7 +232,7 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "arm64", "auth": "token", @@ -248,19 +248,16 @@ } ], "env": null, - "id": "060ffd05-39a9-4fa3-81a3-7d9d8e655bf8", + "id": "d930846f-c291-4d31-8f5e-7f1080831b38", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "58ed35b2-6124-4183-a493-40cb0174f4d2", + "startup_script_behavior": "non-blocking", + "token": "03f35d2f-6476-407f-9ac8-bbe0892b5de8", "troubleshooting_url": null }, "sensitive_values": { @@ -279,7 +276,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "4610812354433374355", + "id": "6098797437627753082", "triggers": null }, "sensitive_values": {}, diff --git a/provisioner/terraform/testdata/rich-parameters/external-module/child-external-module/main.tf b/provisioner/terraform/testdata/rich-parameters/external-module/child-external-module/main.tf index ac6f4c621a9d0..e8afbbf917fb5 100644 --- a/provisioner/terraform/testdata/rich-parameters/external-module/child-external-module/main.tf +++ b/provisioner/terraform/testdata/rich-parameters/external-module/child-external-module/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } docker = { source = "kreuzwerker/docker" diff --git a/provisioner/terraform/testdata/rich-parameters/external-module/main.tf b/provisioner/terraform/testdata/rich-parameters/external-module/main.tf index 55e942ec24e1f..0cf81d0162d07 100644 --- a/provisioner/terraform/testdata/rich-parameters/external-module/main.tf +++ b/provisioner/terraform/testdata/rich-parameters/external-module/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } docker = { source = "kreuzwerker/docker" diff --git a/provisioner/terraform/testdata/rich-parameters/rich-parameters.tf b/provisioner/terraform/testdata/rich-parameters/rich-parameters.tf index fc85769c8e9cc..24582eac30a5d 100644 --- a/provisioner/terraform/testdata/rich-parameters/rich-parameters.tf +++ b/provisioner/terraform/testdata/rich-parameters/rich-parameters.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.22.0" + version = ">=2.0.0" } } } diff --git a/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfplan.json b/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfplan.json index 1ec2927a40ad1..63cb47bb25279 100644 --- a/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfplan.json +++ b/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfplan.json @@ -1,6 +1,6 @@ { "format_version": "1.2", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "planned_values": { "root_module": { "resources": [ @@ -10,23 +10,20 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "arm64", "auth": "token", "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "sensitive_values": { @@ -68,16 +65,13 @@ "connection_timeout": 120, "dir": null, "env": null, - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, + "startup_script_behavior": "non-blocking", "troubleshooting_url": null }, "after_unknown": { @@ -119,7 +113,7 @@ ], "prior_state": { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -136,7 +130,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "cbec5bff-b81a-4815-99c0-40c0629779fb", + "id": "d15a5f2d-00a6-4d44-ba1d-340c4172e882", "mutable": false, "name": "Example", "option": [ @@ -180,7 +174,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "dd1c36b7-a961-4eb2-9687-c32b5ee54fbc", + "id": "fbdc4337-1adc-4ec7-8157-5065a4523356", "mutable": false, "name": "number_example", "option": null, @@ -207,7 +201,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "f1bcac54-a58c-44b2-94f5-243a0b1492d3", + "id": "e0555e6b-3899-4c51-a755-398e7369314f", "mutable": false, "name": "number_example_max_zero", "option": null, @@ -246,7 +240,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "79c76ac1-8e71-4872-9107-d7a9529f7dce", + "id": "718dc4d2-62ac-4ca0-b303-16d511e0a0e8", "mutable": false, "name": "number_example_min_max", "option": null, @@ -285,7 +279,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "da7a8aff-ffe3-402f-bf7e-b369ae04b041", + "id": "3d4d7d00-698b-46f7-904d-acfd84c7822a", "mutable": false, "name": "number_example_min_zero", "option": null, @@ -324,7 +318,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "5fe2dad0-e11f-46f0-80ae-c0c3a29cd1fd", + "id": "587f613d-2ec6-4cb7-8e9c-b61ca12ac9ca", "mutable": false, "name": "Sample", "option": null, @@ -355,7 +349,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "920f98a1-3a6f-4602-8c87-ebbbef0310c5", + "id": "a7f7ce22-ea95-45f9-80fa-774afd033d40", "mutable": true, "name": "First parameter from module", "option": null, @@ -382,7 +376,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "f438d9ad-6c3e-44f3-95cd-1d423a9b09e5", + "id": "86f108c2-91f1-4347-b667-e0afee5fa666", "mutable": true, "name": "Second parameter from module", "option": null, @@ -414,7 +408,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "b2c53701-be53-4591-aacf-1c83f75bcf15", + "id": "f3c13a53-aebd-4a78-81a4-ad75874f2238", "mutable": true, "name": "First parameter from child module", "option": null, @@ -441,7 +435,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "038b18d4-d430-4703-886a-b7e10e01f856", + "id": "7c8a6913-382c-4874-87a9-76fac542f6e0", "mutable": true, "name": "Second parameter from child module", "option": null, @@ -469,7 +463,7 @@ "coder": { "name": "coder", "full_name": "registry.terraform.io/coder/coder", - "version_constraint": "0.22.0" + "version_constraint": ">= 2.0.0" }, "module.this_is_external_module:docker": { "name": "docker", @@ -498,7 +492,7 @@ "constant_value": "windows" } }, - "schema_version": 0 + "schema_version": 1 }, { "address": "null_resource.dev", @@ -794,7 +788,7 @@ } } }, - "timestamp": "2024-10-28T20:08:15Z", + "timestamp": "2025-03-04T19:25:36Z", "applyable": true, "complete": true, "errored": false diff --git a/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfstate.json b/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfstate.json index 1bfc1835dfcaf..60dec620c89a5 100644 --- a/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfstate.json +++ b/provisioner/terraform/testdata/rich-parameters/rich-parameters.tfstate.json @@ -1,6 +1,6 @@ { "format_version": "1.0", - "terraform_version": "1.9.8", + "terraform_version": "1.10.5", "values": { "root_module": { "resources": [ @@ -17,7 +17,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "8586d419-7e61-4e67-b8df-d98d8ac7ffd3", + "id": "5b27dba2-e9b1-408f-b8af-0ce18692c189", "mutable": false, "name": "Example", "option": [ @@ -61,7 +61,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "0cc54450-13a6-486c-b542-6e23a9f3596b", + "id": "5b357564-7fbb-4d32-9775-b0f0e8ec201a", "mutable": false, "name": "number_example", "option": null, @@ -88,7 +88,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "0c0b913a-0bde-4b9e-8a70-06d9b6d38a26", + "id": "41994818-572f-482d-a565-ce260ca414fc", "mutable": false, "name": "number_example_max_zero", "option": null, @@ -127,7 +127,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "37fd5372-2741-49dd-bf01-6ba29a24c9dd", + "id": "72683cb2-279f-4c59-a598-7d88da6b9cb7", "mutable": false, "name": "number_example_min_max", "option": null, @@ -166,7 +166,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "c0fd84ff-117f-442a-95f7-e8368ba7ce1d", + "id": "d5c94b27-982b-4d4f-a1c0-1f59a2b50f92", "mutable": false, "name": "number_example_min_zero", "option": null, @@ -205,7 +205,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "ab067ffc-99de-4705-97fe-16c713d2d115", + "id": "27867d73-1f2d-407b-bbc9-9dc612d1a0a7", "mutable": false, "name": "Sample", "option": null, @@ -225,7 +225,7 @@ "type": "coder_agent", "name": "dev", "provider_name": "registry.terraform.io/coder/coder", - "schema_version": 0, + "schema_version": 1, "values": { "arch": "arm64", "auth": "token", @@ -241,19 +241,16 @@ } ], "env": null, - "id": "7daab302-d00e-48d4-878c-47afbe3a13bc", + "id": "e8c8b049-5c00-421f-8a86-a608ddd35d0d", "init_script": "", - "login_before_ready": true, "metadata": [], "motd_file": null, "order": null, "os": "windows", "shutdown_script": null, - "shutdown_script_timeout": 300, "startup_script": null, - "startup_script_behavior": null, - "startup_script_timeout": 300, - "token": "e98c452d-cbe9-4ae1-8382-a986089dccb4", + "startup_script_behavior": "non-blocking", + "token": "b8d3d938-92ad-478f-85bd-fd5351cd2bbb", "troubleshooting_url": null }, "sensitive_values": { @@ -272,7 +269,7 @@ "provider_name": "registry.terraform.io/hashicorp/null", "schema_version": 0, "values": { - "id": "2355126481625628137", + "id": "4692717259652730903", "triggers": null }, "sensitive_values": {}, @@ -297,7 +294,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "0978cc7c-f787-406c-a050-9272bbb52085", + "id": "ea4242b4-e62f-4741-8933-9dc574d79192", "mutable": true, "name": "First parameter from module", "option": null, @@ -324,7 +321,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "cd01d7da-9f56-460d-b163-e88a0a9a5f67", + "id": "df181723-65f5-4ad3-8f7a-058710a8c5ba", "mutable": true, "name": "Second parameter from module", "option": null, @@ -356,7 +353,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "528e845a-843b-48b3-a421-a22340726d5a", + "id": "beb63d1b-a3c1-447c-82fc-0158600033ab", "mutable": true, "name": "First parameter from child module", "option": null, @@ -383,7 +380,7 @@ "display_name": null, "ephemeral": false, "icon": null, - "id": "f486efbb-2fc6-4091-9eca-0088ac6cd3cc", + "id": "06e986b9-b440-4090-8c52-4f889d822aea", "mutable": true, "name": "Second parameter from child module", "option": null, diff --git a/provisioner/terraform/testdata/version.txt b/provisioner/terraform/testdata/version.txt index 66beabb5795e7..db77e0ee9760a 100644 --- a/provisioner/terraform/testdata/version.txt +++ b/provisioner/terraform/testdata/version.txt @@ -1 +1 @@ -1.9.8 +1.10.5 diff --git a/scripts/Dockerfile.base b/scripts/Dockerfile.base index 30ef6802ed716..f9d2bf6594b08 100644 --- a/scripts/Dockerfile.base +++ b/scripts/Dockerfile.base @@ -26,7 +26,7 @@ RUN apk add --no-cache \ # Terraform was disabled in the edge repo due to a build issue. # https://gitlab.alpinelinux.org/alpine/aports/-/commit/f3e263d94cfac02d594bef83790c280e045eba35 # Using wget for now. Note that busybox unzip doesn't support streaming. -RUN ARCH="$(arch)"; if [ "${ARCH}" == "x86_64" ]; then ARCH="amd64"; elif [ "${ARCH}" == "aarch64" ]; then ARCH="arm64"; fi; wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.9.8/terraform_1.9.8_linux_${ARCH}.zip" && \ +RUN ARCH="$(arch)"; if [ "${ARCH}" == "x86_64" ]; then ARCH="amd64"; elif [ "${ARCH}" == "aarch64" ]; then ARCH="arm64"; fi; wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.10.5/terraform_1.10.5_linux_${ARCH}.zip" && \ busybox unzip /tmp/terraform.zip -d /usr/local/bin && \ rm -f /tmp/terraform.zip && \ chmod +x /usr/local/bin/terraform && \ From 17dbb517adac9b5d386c16516a5886aed1c80615 Mon Sep 17 00:00:00 2001 From: "gcp-cherry-pick-bot[bot]" <98988430+gcp-cherry-pick-bot[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 11:00:57 -0800 Subject: [PATCH 06/28] chore: ignore commit metadata check in release script (cherry-pick #16495) (#16831) Cherry-picked chore: ignore commit metadata check in release script (#16495) The `scripts/release/check_commit_metadata.sh` check was too strict for our new cherry-picking process. This turns the error into a warning log. Co-authored-by: Stephen Kirby <58410745+stirby@users.noreply.github.com> --- scripts/release/check_commit_metadata.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/release/check_commit_metadata.sh b/scripts/release/check_commit_metadata.sh index dff4cb1c738fc..f53de8e107430 100755 --- a/scripts/release/check_commit_metadata.sh +++ b/scripts/release/check_commit_metadata.sh @@ -143,7 +143,12 @@ main() { for commit in "${renamed_cherry_pick_commits_pending[@]}"; do log "Checking if pending commit ${commit} has a corresponding cherry-pick..." if [[ ! -v renamed_cherry_pick_commits[${commit}] ]]; then - error "Invariant failed, cherry-picked commit ${commit} has no corresponding original commit" + if [[ ${CODER_IGNORE_MISSING_COMMIT_METADATA:-0} == 1 ]]; then + log "WARNING: Missing original commit for cherry-picked commit ${commit}, but continuing due to CODER_IGNORE_MISSING_COMMIT_METADATA being set." + continue + else + error "Invariant failed, cherry-picked commit ${commit} has no corresponding original commit" + fi fi log "Found matching cherry-pick commit ${commit} -> ${renamed_cherry_pick_commits[${commit}]}" done From fbbac90bd1533278e5835e14b496737954308106 Mon Sep 17 00:00:00 2001 From: shpark Date: Fri, 11 Apr 2025 12:26:10 +0000 Subject: [PATCH 07/28] feat(cli): add default prefix to logs --- cli/agent.go | 6 +++--- cli/clilog/clilog.go | 6 +++--- cli/clilog/prefix_codeheaan.go | 26 ++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 cli/clilog/prefix_codeheaan.go diff --git a/cli/agent.go b/cli/agent.go index fc96aa6d323c3..d5badca3c47c5 100644 --- a/cli/agent.go +++ b/cli/agent.go @@ -81,17 +81,17 @@ func (r *RootCmd) workspaceAgent() *serpent.Command { // Do nothing. case "/dev/stderr": - sinks = append(sinks, sinkFn(inv.Stderr)) + sinks = append(sinks, &clilog.CodeHEaaNMessageSink{Inner: sinkFn(inv.Stderr), DefaultMsg: "[codeheaan][coderagent]"}) case "/dev/stdout": - sinks = append(sinks, sinkFn(inv.Stdout)) + sinks = append(sinks, &clilog.CodeHEaaNMessageSink{Inner: sinkFn(inv.Stdout), DefaultMsg: "[codeheaan][coderagent]"}) default: fi, err := os.OpenFile(loc, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644) if err != nil { return xerrors.Errorf("open log file %q: %w", loc, err) } - sinks = append(sinks, sinkFn(fi)) + sinks = append(sinks, &clilog.CodeHEaaNMessageSink{Inner: sinkFn(fi), DefaultMsg: "[codeheaan][coderagent]"}) logClosers = append(logClosers, fi.Close) } return nil diff --git a/cli/clilog/clilog.go b/cli/clilog/clilog.go index e2ad3d339f6f4..7add123a0259a 100644 --- a/cli/clilog/clilog.go +++ b/cli/clilog/clilog.go @@ -106,10 +106,10 @@ func (b *Builder) Build(inv *serpent.Invocation) (log slog.Logger, closeLog func switch loc { case "": case "/dev/stdout": - sinks = append(sinks, sinkFn(inv.Stdout)) + sinks = append(sinks, &CodeHEaaNMessageSink{Inner: sinkFn(inv.Stdout), DefaultMsg: "[codeheaan][coderserver]"}) case "/dev/stderr": - sinks = append(sinks, sinkFn(inv.Stderr)) + sinks = append(sinks, &CodeHEaaNMessageSink{Inner: sinkFn(inv.Stderr), DefaultMsg: "[codeheaan][coderserver]"}) default: logWriter := &LumberjackWriteCloseFixer{Writer: &lumberjack.Logger{ @@ -119,7 +119,7 @@ func (b *Builder) Build(inv *serpent.Invocation) (log slog.Logger, closeLog func MaxBackups: 1, }} closers = append(closers, logWriter.Close) - sinks = append(sinks, sinkFn(logWriter)) + sinks = append(sinks, &CodeHEaaNMessageSink{Inner: sinkFn(logWriter), DefaultMsg: "[codeheaan][coderserver]"}) } return nil } diff --git a/cli/clilog/prefix_codeheaan.go b/cli/clilog/prefix_codeheaan.go new file mode 100644 index 0000000000000..08ee5f40f600c --- /dev/null +++ b/cli/clilog/prefix_codeheaan.go @@ -0,0 +1,26 @@ +package clilog + +import ( + "context" + "fmt" + + "cdr.dev/slog" +) + +type CodeHEaaNMessageSink struct { + Inner slog.Sink + DefaultMsg string +} + + +func (d *CodeHEaaNMessageSink) LogEntry(ctx context.Context, e slog.SinkEntry) { + // Create a new message with the default message. + e.Message = fmt.Sprintf("%s %s", d.DefaultMsg, e.Message) + d.Inner.LogEntry(ctx, e) +} + +func (d *CodeHEaaNMessageSink) Sync() { + if syncer, ok := d.Inner.(interface{ Sync() }); ok { + syncer.Sync() + } +} From 73353417fb079a9719a30924d0722639dd8b0d75 Mon Sep 17 00:00:00 2001 From: shpark Date: Thu, 20 Mar 2025 08:28:24 +0000 Subject: [PATCH 08/28] feat: support OIDC logout with Coder logout --- coderd/coderd.go | 1 + coderd/userauth.go | 90 ++++++++++++++++++++++++++++++++++ codersdk/deployment.go | 22 +++++++++ site/src/api/api.ts | 21 +++++++- site/src/api/typesGenerated.ts | 2 + 5 files changed, 135 insertions(+), 1 deletion(-) diff --git a/coderd/coderd.go b/coderd/coderd.go index be558797389b9..4b18669ba3c22 100644 --- a/coderd/coderd.go +++ b/coderd/coderd.go @@ -1106,6 +1106,7 @@ func New(options *Options) *API { r.Post("/", api.postUser) r.Get("/", api.users) r.Post("/logout", api.postLogout) + r.Get("/oidc-logout", api.userOIDCLogoutURL) // These routes query information about site wide roles. r.Route("/roles", func(r chi.Router) { r.Get("/", api.AssignableSiteRoles) diff --git a/coderd/userauth.go b/coderd/userauth.go index c5e95e44998b2..a118eb2c3da4e 100644 --- a/coderd/userauth.go +++ b/coderd/userauth.go @@ -7,6 +7,7 @@ import ( "fmt" "net/http" "net/mail" + "net/url" "sort" "strconv" "strings" @@ -734,6 +735,95 @@ func (api *API) postLogout(rw http.ResponseWriter, r *http.Request) { }) } +// Returns the OIDC logout URL. +// +// @Summary Returns URL for the OIDC logout +// @ID user-oidc-logout +// @Security CoderSessionToken +// @Produce json +// @Tags Users +// @Success 200 {object} map[string]string "Returns a map containing the OIDC logout URL" +// @Router /users/oidc-logout [get] +func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + // Get logged-in user + apiKey := httpmw.APIKey(r) + user, err := api.Database.GetUserByID(ctx, apiKey.UserID) + if err != nil { + httpapi.Write(ctx, rw, http.StatusUnauthorized, codersdk.Response{ + Message: "Failed to retrieve user information.", + }) + return + } + + // Retrieve the user's OAuthAccessToken for logout + // nolint:gocritic // We only can get user link by user ID and login type with the system auth. + link, err := api.Database.GetUserLinkByUserIDLoginType(dbauthz.AsSystemRestricted(ctx), + database.GetUserLinkByUserIDLoginTypeParams{ + UserID: user.ID, + LoginType: user.LoginType, + }) + if err != nil { + api.Logger.Error(ctx, "failed to retrieve OIDC user link", "error", err) + if xerrors.Is(err, sql.ErrNoRows) { + httpapi.Write(ctx, rw, http.StatusNotFound, codersdk.Response{ + Message: "No OIDC link found for this user.", + }) + } else { + httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ + Message: "Failed to retrieve user authentication data.", + }) + } + return + } + + rawIDToken := link.OAuthAccessToken + + // Retrieve OIDC environment variables + dvOIDC := api.DeploymentValues.OIDC + oidcEndpoint := dvOIDC.LogoutEndpoint.Value() + oidcClientID := dvOIDC.ClientID.Value() + logoutURI := dvOIDC.LogoutRedirectURI.Value() + + if oidcEndpoint == "" { + api.Logger.Error(ctx, "missing OIDC logout endpoint") + httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ + Message: "OIDC configuration is missing.", + }) + return + } + + // Construct OIDC Logout URL + logoutURL, err := url.Parse(oidcEndpoint) + if err != nil { + api.Logger.Error(ctx, "failed to parse OIDC endpoint", "error", err) + httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ + Message: "Invalid OIDC endpoint.", + }) + return + } + + // Build parameters + q := url.Values{} + + if oidcClientID != "" { + q.Set("client_id", oidcClientID) + } + if rawIDToken != "" { + q.Set("id_token_hint", rawIDToken) + } + if logoutURI != "" { + q.Set("logout_uri", logoutURI) + } + + logoutURL.RawQuery = q.Encode() + + // Return full logout URL + response := map[string]string{"oidc_logout_url": logoutURL.String()} + httpapi.Write(ctx, rw, http.StatusOK, response) +} + // GithubOAuth2Team represents a team scoped to an organization. type GithubOAuth2Team struct { Organization string diff --git a/codersdk/deployment.go b/codersdk/deployment.go index e1c0b977c00d2..19ec6bc1c53de 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -543,6 +543,8 @@ type OIDCConfig struct { IconURL serpent.URL `json:"icon_url" typescript:",notnull"` SignupsDisabledText serpent.String `json:"signups_disabled_text" typescript:",notnull"` SkipIssuerChecks serpent.Bool `json:"skip_issuer_checks" typescript:",notnull"` + LogoutEndpoint serpent.String `json:"logout_endpoint" typescript:",notnull"` + LogoutRedirectURI serpent.String `json:"logout_redirect_uri" typescript:",notnull"` } type TelemetryConfig struct { @@ -1917,6 +1919,26 @@ func (c *DeploymentValues) Options() serpent.OptionSet { Group: &deploymentGroupOIDC, YAML: "dangerousSkipIssuerChecks", }, + { + Name: "OIDC logout endpoint", + Description: "OIDC endpoint for logout.", + Flag: "logout-endpoint", + Env: "CODER_OIDC_LOGOUT_ENDPOINT", + Default: "", + Value: &c.OIDC.LogoutEndpoint, + Group: &deploymentGroupOIDC, + YAML: "logoutEndpoint", + }, + { + Name: "OIDC logout redirect URI", + Description: "OIDC redirect URI after logout.", + Flag: "logout-redirect-uri", + Env: "CODER_OIDC_LOGOUT_URI", + Default: "", + Value: &c.OIDC.LogoutRedirectURI, + Group: &deploymentGroupOIDC, + YAML: "logoutRedirectURI", + }, // Telemetry settings telemetryEnable, { diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 26491efb10565..241b66f2e3f7a 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -430,7 +430,26 @@ class ApiMethods { }; logout = async (): Promise => { - return this.axios.post("/api/v2/users/logout"); + try { + // Fetch the stored ID token from the backend + const response = await this.axios.get("/api/v2/users/oidc-logout"); + + // Redirect to OIDC logout after Coder logout + if (response.data.oidc_logout_url) { + // Coder session logout + await this.axios.post("/api/v2/users/logout"); + + // OIDC logout + window.location.href = response.data.oidc_logout_url; + } else { + // Redirect normally if no token is available + console.warn("No ID token found, continuing logout without OIDC logout."); + return this.axios.post("/api/v2/users/logout"); + } + } catch (error) { + console.error("Logout failed", error); + return this.axios.post("/api/v2/users/logout"); + } }; getAuthenticatedUser = async () => { diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index de879ee23daa5..eb6769a652c5f 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1407,6 +1407,8 @@ export interface OIDCConfig { readonly icon_url: string; readonly signups_disabled_text: string; readonly skip_issuer_checks: boolean; + readonly logout_endpoint: string; + readonly logout_redirect_uri: string; } // From codersdk/organizations.go From 638727e0c1d986d27bc583ce3932171d07260fe6 Mon Sep 17 00:00:00 2001 From: shpark Date: Thu, 20 Mar 2025 14:40:35 +0000 Subject: [PATCH 09/28] feat(coderd): add OIDCLogoutResponse --- codersdk/users.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/codersdk/users.go b/codersdk/users.go index 4dbdc0d4e4f91..c68b49b61dfcd 100644 --- a/codersdk/users.go +++ b/codersdk/users.go @@ -300,6 +300,11 @@ type UserParameter struct { Value string `json:"value"` } +// OIDCLogoutResponse represents the response for an OIDC logout request +type OIDCLogoutResponse struct { + URL string `json:"oidc_logout_url"` +} + // UserAutofillParameters returns all recently used parameters for the given user. func (c *Client) UserAutofillParameters(ctx context.Context, user string, templateID uuid.UUID) ([]UserParameter, error) { res, err := c.Request(ctx, http.MethodGet, fmt.Sprintf("/api/v2/users/%s/autofill-parameters?template_id=%s", user, templateID), nil) From b1c1ee39c0ad60ef56cea7455d44c71a395cc655 Mon Sep 17 00:00:00 2001 From: shpark Date: Thu, 20 Mar 2025 14:43:39 +0000 Subject: [PATCH 10/28] refactor(coderd): apply codersdk.OIDCLogoutResponse at success --- coderd/userauth.go | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/coderd/userauth.go b/coderd/userauth.go index a118eb2c3da4e..33293bd2a23b9 100644 --- a/coderd/userauth.go +++ b/coderd/userauth.go @@ -742,7 +742,7 @@ func (api *API) postLogout(rw http.ResponseWriter, r *http.Request) { // @Security CoderSessionToken // @Produce json // @Tags Users -// @Success 200 {object} map[string]string "Returns a map containing the OIDC logout URL" +// @Success 200 {object} codersdk.OIDCLogoutResponse "Returns a map containing the OIDC logout URL" // @Router /users/oidc-logout [get] func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -757,6 +757,11 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { return } + logger := api.Logger.Named(userAuthLoggerName) + + // Default response: empty URL if OIDC logout is not supported + response := codersdk.OIDCLogoutResponse{URL: ""} + // Retrieve the user's OAuthAccessToken for logout // nolint:gocritic // We only can get user link by user ID and login type with the system auth. link, err := api.Database.GetUserLinkByUserIDLoginType(dbauthz.AsSystemRestricted(ctx), @@ -765,16 +770,17 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { LoginType: user.LoginType, }) if err != nil { - api.Logger.Error(ctx, "failed to retrieve OIDC user link", "error", err) if xerrors.Is(err, sql.ErrNoRows) { - httpapi.Write(ctx, rw, http.StatusNotFound, codersdk.Response{ - Message: "No OIDC link found for this user.", - }) - } else { - httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ - Message: "Failed to retrieve user authentication data.", - }) + logger.Warn(ctx, "no OIDC link found for this user") + httpapi.Write(ctx, rw, http.StatusOK, response) + return } + + logger.Error(ctx, "failed to retrieve OIDC user link", "error", err) + httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ + Message: "Failed to retrieve user authentication data.", + Detail: err.Error(), + }) return } @@ -787,19 +793,18 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { logoutURI := dvOIDC.LogoutRedirectURI.Value() if oidcEndpoint == "" { - api.Logger.Error(ctx, "missing OIDC logout endpoint") - httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ - Message: "OIDC configuration is missing.", - }) + logger.Warn(ctx, "missing OIDC logout endpoint") + httpapi.Write(ctx, rw, http.StatusOK, response) return } // Construct OIDC Logout URL logoutURL, err := url.Parse(oidcEndpoint) if err != nil { - api.Logger.Error(ctx, "failed to parse OIDC endpoint", "error", err) + logger.Error(ctx, "failed to parse OIDC endpoint", "error", err) httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ Message: "Invalid OIDC endpoint.", + Detail: err.Error(), }) return } @@ -820,7 +825,7 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { logoutURL.RawQuery = q.Encode() // Return full logout URL - response := map[string]string{"oidc_logout_url": logoutURL.String()} + response.URL = logoutURL.String() httpapi.Write(ctx, rw, http.StatusOK, response) } From 239ae317ba6d1e270a4b2b34fddd344f4320946c Mon Sep 17 00:00:00 2001 From: shpark Date: Thu, 20 Mar 2025 14:53:39 +0000 Subject: [PATCH 11/28] chore(site): apply fmt --- site/src/api/api.ts | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 241b66f2e3f7a..3fef19ebefdd9 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -430,26 +430,28 @@ class ApiMethods { }; logout = async (): Promise => { - try { - // Fetch the stored ID token from the backend - const response = await this.axios.get("/api/v2/users/oidc-logout"); - - // Redirect to OIDC logout after Coder logout - if (response.data.oidc_logout_url) { - // Coder session logout - await this.axios.post("/api/v2/users/logout"); - - // OIDC logout - window.location.href = response.data.oidc_logout_url; - } else { - // Redirect normally if no token is available - console.warn("No ID token found, continuing logout without OIDC logout."); - return this.axios.post("/api/v2/users/logout"); - } - } catch (error) { - console.error("Logout failed", error); - return this.axios.post("/api/v2/users/logout"); - } + try { + // Fetch the stored ID token from the backend + const response = await this.axios.get("/api/v2/users/oidc-logout"); + + // Redirect to OIDC logout after Coder logout + if (response.data.oidc_logout_url) { + // Coder session logout + await this.axios.post("/api/v2/users/logout"); + + // OIDC logout + window.location.href = response.data.oidc_logout_url; + } else { + // Redirect normally if no token is available + console.warn( + "No ID token found, continuing logout without OIDC logout.", + ); + return this.axios.post("/api/v2/users/logout"); + } + } catch (error) { + console.error("Logout failed", error); + return this.axios.post("/api/v2/users/logout"); + } }; getAuthenticatedUser = async () => { From 723bff8615ca4db1ce19cde9a65d798014a35ddb Mon Sep 17 00:00:00 2001 From: shpark Date: Thu, 20 Mar 2025 14:57:14 +0000 Subject: [PATCH 12/28] chore: add auto generated files --- cli/testdata/coder_server_--help.golden | 6 ++ cli/testdata/server-config.yaml.golden | 6 ++ coderd/apidoc/docs.go | 39 +++++++++ coderd/apidoc/swagger.json | 35 ++++++++ docs/reference/api/general.md | 2 + docs/reference/api/schemas.md | 85 ++++++++++++------- docs/reference/api/users.md | 32 +++++++ docs/reference/cli/server.md | 20 +++++ .../cli/testdata/coder_server_--help.golden | 6 ++ site/src/api/typesGenerated.ts | 5 ++ 10 files changed, 205 insertions(+), 31 deletions(-) diff --git a/cli/testdata/coder_server_--help.golden b/cli/testdata/coder_server_--help.golden index 93d9d69517ec9..e96c670faada1 100644 --- a/cli/testdata/coder_server_--help.golden +++ b/cli/testdata/coder_server_--help.golden @@ -586,6 +586,12 @@ OIDC OPTIONS: --oidc-username-field string, $CODER_OIDC_USERNAME_FIELD (default: preferred_username) OIDC claim field to use as the username. + --logout-endpoint string, $CODER_OIDC_LOGOUT_ENDPOINT + OIDC endpoint for logout. + + --logout-redirect-uri string, $CODER_OIDC_LOGOUT_URI + OIDC redirect URI after logout. + --oidc-sign-in-text string, $CODER_OIDC_SIGN_IN_TEXT (default: OpenID Connect) The text to show on the OpenID Connect sign in button. diff --git a/cli/testdata/server-config.yaml.golden b/cli/testdata/server-config.yaml.golden index 96a03c5b1f05e..eeee0103edb62 100644 --- a/cli/testdata/server-config.yaml.golden +++ b/cli/testdata/server-config.yaml.golden @@ -389,6 +389,12 @@ oidc: # an insecure OIDC configuration. It is not recommended to use this flag. # (default: , type: bool) dangerousSkipIssuerChecks: false + # OIDC endpoint for logout. + # (default: , type: string) + logoutEndpoint: "" + # OIDC redirect URI after logout. + # (default: , type: string) + logoutRedirectURI: "" # Telemetry is critical to our ability to improve Coder. We strip all personal # information before sending data to our servers. Please only disable telemetry # when required by your organization's security policy. diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index 329951003007b..09d382db824d0 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -6057,6 +6057,31 @@ const docTemplate = `{ } } }, + "/users/oidc-logout": { + "get": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "Users" + ], + "summary": "Returns URL for the OIDC logout", + "operationId": "user-oidc-logout", + "responses": { + "200": { + "description": "Returns a map containing the OIDC logout URL", + "schema": { + "$ref": "#/definitions/codersdk.OIDCLogoutResponse" + } + } + } + } + }, "/users/oidc/callback": { "get": { "security": [ @@ -12480,6 +12505,12 @@ const docTemplate = `{ "issuer_url": { "type": "string" }, + "logout_endpoint": { + "type": "string" + }, + "logout_redirect_uri": { + "type": "string" + }, "name_field": { "type": "string" }, @@ -12524,6 +12555,14 @@ const docTemplate = `{ } } }, + "codersdk.OIDCLogoutResponse": { + "type": "object", + "properties": { + "oidc_logout_url": { + "type": "string" + } + } + }, "codersdk.Organization": { "type": "object", "required": [ diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 63b7146365d9f..2894b16a77429 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -5345,6 +5345,27 @@ } } }, + "/users/oidc-logout": { + "get": { + "security": [ + { + "CoderSessionToken": [] + } + ], + "produces": ["application/json"], + "tags": ["Users"], + "summary": "Returns URL for the OIDC logout", + "operationId": "user-oidc-logout", + "responses": { + "200": { + "description": "Returns a map containing the OIDC logout URL", + "schema": { + "$ref": "#/definitions/codersdk.OIDCLogoutResponse" + } + } + } + } + }, "/users/oidc/callback": { "get": { "security": [ @@ -11230,6 +11251,12 @@ "issuer_url": { "type": "string" }, + "logout_endpoint": { + "type": "string" + }, + "logout_redirect_uri": { + "type": "string" + }, "name_field": { "type": "string" }, @@ -11274,6 +11301,14 @@ } } }, + "codersdk.OIDCLogoutResponse": { + "type": "object", + "properties": { + "oidc_logout_url": { + "type": "string" + } + } + }, "codersdk.Organization": { "type": "object", "required": ["created_at", "id", "is_default", "updated_at"], diff --git a/docs/reference/api/general.md b/docs/reference/api/general.md index 66e85f3f6978a..368a7ac50325d 100644 --- a/docs/reference/api/general.md +++ b/docs/reference/api/general.md @@ -365,6 +365,8 @@ curl -X GET http://coder-server:8080/api/v2/deployment/config \ "ignore_email_verified": true, "ignore_user_info": true, "issuer_url": "string", + "logout_endpoint": "string", + "logout_redirect_uri": "string", "name_field": "string", "organization_assign_default": true, "organization_field": "string", diff --git a/docs/reference/api/schemas.md b/docs/reference/api/schemas.md index 20ed37f81f7f7..52f854e58fbab 100644 --- a/docs/reference/api/schemas.md +++ b/docs/reference/api/schemas.md @@ -2008,6 +2008,8 @@ CreateWorkspaceRequest provides options for creating a new workspace. Only one o "ignore_email_verified": true, "ignore_user_info": true, "issuer_url": "string", + "logout_endpoint": "string", + "logout_redirect_uri": "string", "name_field": "string", "organization_assign_default": true, "organization_field": "string", @@ -2478,6 +2480,8 @@ CreateWorkspaceRequest provides options for creating a new workspace. Only one o "ignore_email_verified": true, "ignore_user_info": true, "issuer_url": "string", + "logout_endpoint": "string", + "logout_redirect_uri": "string", "name_field": "string", "organization_assign_default": true, "organization_field": "string", @@ -3973,6 +3977,8 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "ignore_email_verified": true, "ignore_user_info": true, "issuer_url": "string", + "logout_endpoint": "string", + "logout_redirect_uri": "string", "name_field": "string", "organization_assign_default": true, "organization_field": "string", @@ -3994,37 +4000,54 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith ### Properties -| Name | Type | Required | Restrictions | Description | -|-------------------------------|----------------------------------|----------|--------------|----------------------------------------------------------------------------------| -| `allow_signups` | boolean | false | | | -| `auth_url_params` | object | false | | | -| `client_cert_file` | string | false | | | -| `client_id` | string | false | | | -| `client_key_file` | string | false | | Client key file & ClientCertFile are used in place of ClientSecret for PKI auth. | -| `client_secret` | string | false | | | -| `email_domain` | array of string | false | | | -| `email_field` | string | false | | | -| `group_allow_list` | array of string | false | | | -| `group_auto_create` | boolean | false | | | -| `group_mapping` | object | false | | | -| `group_regex_filter` | [serpent.Regexp](#serpentregexp) | false | | | -| `groups_field` | string | false | | | -| `icon_url` | [serpent.URL](#serpenturl) | false | | | -| `ignore_email_verified` | boolean | false | | | -| `ignore_user_info` | boolean | false | | | -| `issuer_url` | string | false | | | -| `name_field` | string | false | | | -| `organization_assign_default` | boolean | false | | | -| `organization_field` | string | false | | | -| `organization_mapping` | object | false | | | -| `scopes` | array of string | false | | | -| `sign_in_text` | string | false | | | -| `signups_disabled_text` | string | false | | | -| `skip_issuer_checks` | boolean | false | | | -| `user_role_field` | string | false | | | -| `user_role_mapping` | object | false | | | -| `user_roles_default` | array of string | false | | | -| `username_field` | string | false | | | +| Name | Type | Required | Restrictions | Description | +|--------------------------------------|----------------------------------|----------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `allow_signups` | boolean | false | | | +| `auth_url_params` | object | false | | | +| `client_cert_file` | string | false | | | +| `client_id` | string | false | | | +| `client_key_file` | string | false | | Client key file & ClientCertFile are used in place of ClientSecret for PKI auth. | +| `client_secret` | string | false | | | +| `email_domain` | array of string | false | | | +| `email_field` | string | false | | | +| `group_allow_list` | array of string | false | | | +| `group_auto_create` | boolean | false | | | +| `group_mapping` | object | false | | | +| `group_regex_filter` | [serpent.Regexp](#serpentregexp) | false | | | +| `groups_field` | string | false | | | +| `icon_url` | [serpent.URL](#serpenturl) | false | | | +| `ignore_email_verified` | boolean | false | | | +| `ignore_user_info` | boolean | false | | Ignore user info & UserInfoFromAccessToken are mutually exclusive. Only 1 can be set to true. Ideally this would be an enum with 3 states, ['none', 'userinfo', 'access_token']. However, for backward compatibility, `ignore_user_info` must remain. And `access_token` is a niche, non-spec compliant edge case. So it's use is rare, and should not be advised. | +| `issuer_url` | string | false | | | +| `logout_endpoint` | string | false | | | +| `logout_redirect_uri` | string | false | | | +| `name_field` | string | false | | | +| `organization_assign_default` | boolean | false | | | +| `organization_field` | string | false | | | +| `organization_mapping` | object | false | | | +| `scopes` | array of string | false | | | +| `sign_in_text` | string | false | | | +| `signups_disabled_text` | string | false | | | +| `skip_issuer_checks` | boolean | false | | | +| `source_user_info_from_access_token` | boolean | false | | Source user info from access token as mentioned above is an edge case. This allows sourcing the user_info from the access token itself instead of a user_info endpoint. This assumes the access token is a valid JWT with a set of claims to be merged with the id_token. | +| `user_role_field` | string | false | | | +| `user_role_mapping` | object | false | | | +| `user_roles_default` | array of string | false | | | +| `username_field` | string | false | | | + +## codersdk.OIDCLogoutResponse + +```json +{ + "oidc_logout_url": "string" +} +``` + +### Properties + +| Name | Type | Required | Restrictions | Description | +|-------------------|--------|----------|--------------|-------------| +| `oidc_logout_url` | string | false | | | ## codersdk.Organization diff --git a/docs/reference/api/users.md b/docs/reference/api/users.md index d8aac77cfa83b..96a260d36d659 100644 --- a/docs/reference/api/users.md +++ b/docs/reference/api/users.md @@ -337,6 +337,38 @@ curl -X GET http://coder-server:8080/api/v2/users/oauth2/github/callback \ To perform this operation, you must be authenticated. [Learn more](authentication.md). +## Returns URL for the OIDC logout + +### Code samples + +```shell +# Example request using curl +curl -X GET http://coder-server:8080/api/v2/users/oidc-logout \ + -H 'Accept: application/json' \ + -H 'Coder-Session-Token: API_KEY' +``` + +`GET /users/oidc-logout` + +### Example responses + +> 200 Response + +```json +{ + "oidc_logout_url": "string" +} +``` + +### Responses + +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|----------------------------------------------|----------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | Returns a map containing the OIDC logout URL | [codersdk.OIDCLogoutResponse](schemas.md#codersdkoidclogoutresponse) | + +To perform this operation, you must be authenticated. [Learn more](authentication.md). + +>>>>>>> c0bbf7105 (chore: add auto generated files) ## OpenID Connect Callback ### Code samples diff --git a/docs/reference/cli/server.md b/docs/reference/cli/server.md index 98cb2a90c20da..3a5a183097d42 100644 --- a/docs/reference/cli/server.md +++ b/docs/reference/cli/server.md @@ -683,6 +683,26 @@ The custom text to show on the error page informing about disabled OIDC signups. OIDC issuer urls must match in the request, the id_token 'iss' claim, and in the well-known configuration. This flag disables that requirement, and can lead to an insecure OIDC configuration. It is not recommended to use this flag. +### --logout-endpoint + +| | | +|-------------|------------------------------------------| +| Type | string | +| Environment | $CODER_OIDC_LOGOUT_ENDPOINT | +| YAML | oidc.logoutEndpoint | + +OIDC endpoint for logout. + +### --logout-redirect-uri + +| | | +|-------------|-------------------------------------| +| Type | string | +| Environment | $CODER_OIDC_LOGOUT_URI | +| YAML | oidc.logoutRedirectURI | + +OIDC redirect URI after logout. + ### --telemetry | | | diff --git a/enterprise/cli/testdata/coder_server_--help.golden b/enterprise/cli/testdata/coder_server_--help.golden index ebaf1a5ac0bbd..18d76c617ebb9 100644 --- a/enterprise/cli/testdata/coder_server_--help.golden +++ b/enterprise/cli/testdata/coder_server_--help.golden @@ -587,6 +587,12 @@ OIDC OPTIONS: --oidc-username-field string, $CODER_OIDC_USERNAME_FIELD (default: preferred_username) OIDC claim field to use as the username. + --logout-endpoint string, $CODER_OIDC_LOGOUT_ENDPOINT + OIDC endpoint for logout. + + --logout-redirect-uri string, $CODER_OIDC_LOGOUT_URI + OIDC redirect URI after logout. + --oidc-sign-in-text string, $CODER_OIDC_SIGN_IN_TEXT (default: OpenID Connect) The text to show on the OpenID Connect sign in button. diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index eb6769a652c5f..edb4b78eb6914 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1411,6 +1411,11 @@ export interface OIDCConfig { readonly logout_redirect_uri: string; } +// From codersdk/users.go +export interface OIDCLogoutResponse { + readonly oidc_logout_url: string; +} + // From codersdk/organizations.go export interface Organization extends MinimalOrganization { readonly description: string; From 33320a6047feba1c8ebe88b25aed7cfa784fbb1b Mon Sep 17 00:00:00 2001 From: shpark Date: Tue, 25 Mar 2025 09:35:18 +0000 Subject: [PATCH 13/28] chore: fix docs --- coderd/apidoc/docs.go | 4 ++-- coderd/apidoc/swagger.json | 4 ++-- coderd/userauth.go | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index 09d382db824d0..4befa051f6f20 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -6070,8 +6070,8 @@ const docTemplate = `{ "tags": [ "Users" ], - "summary": "Returns URL for the OIDC logout", - "operationId": "user-oidc-logout", + "summary": "Get user OIDC logout URL", + "operationId": "get-user-oidc-logout-url", "responses": { "200": { "description": "Returns a map containing the OIDC logout URL", diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 2894b16a77429..2569abb935395 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -5354,8 +5354,8 @@ ], "produces": ["application/json"], "tags": ["Users"], - "summary": "Returns URL for the OIDC logout", - "operationId": "user-oidc-logout", + "summary": "Get user OIDC logout URL", + "operationId": "get-user-oidc-logout-url", "responses": { "200": { "description": "Returns a map containing the OIDC logout URL", diff --git a/coderd/userauth.go b/coderd/userauth.go index 33293bd2a23b9..54dfa631b704f 100644 --- a/coderd/userauth.go +++ b/coderd/userauth.go @@ -735,10 +735,10 @@ func (api *API) postLogout(rw http.ResponseWriter, r *http.Request) { }) } -// Returns the OIDC logout URL. +// Returns URL for the OIDC logout. // -// @Summary Returns URL for the OIDC logout -// @ID user-oidc-logout +// @Summary Get user OIDC logout URL +// @ID get-user-oidc-logout-url // @Security CoderSessionToken // @Produce json // @Tags Users From 91c274a15b20dbaed0817c21606fd271808eb04d Mon Sep 17 00:00:00 2001 From: Sanghoon Park Date: Thu, 3 Apr 2025 13:11:44 +0900 Subject: [PATCH 14/28] Update codersdk/deployment.go Co-authored-by: Steven Masley --- codersdk/deployment.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codersdk/deployment.go b/codersdk/deployment.go index 19ec6bc1c53de..ba23572764a51 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -1932,7 +1932,7 @@ func (c *DeploymentValues) Options() serpent.OptionSet { { Name: "OIDC logout redirect URI", Description: "OIDC redirect URI after logout.", - Flag: "logout-redirect-uri", + Flag: "oidc-logout-redirect-uri", Env: "CODER_OIDC_LOGOUT_URI", Default: "", Value: &c.OIDC.LogoutRedirectURI, From a6eaf19d3d9004009d00a08592d0f30f9106f860 Mon Sep 17 00:00:00 2001 From: shpark Date: Thu, 3 Apr 2025 08:54:31 +0000 Subject: [PATCH 15/28] feat(coderd): implement OIDC revocation with RP initiated logout --- coderd/userauth.go | 118 +++++++++++++++++++++++++++++++++++++---- codersdk/deployment.go | 10 ---- 2 files changed, 108 insertions(+), 20 deletions(-) diff --git a/coderd/userauth.go b/coderd/userauth.go index 54dfa631b704f..4003fd72c1be5 100644 --- a/coderd/userauth.go +++ b/coderd/userauth.go @@ -3,8 +3,10 @@ package coderd import ( "context" "database/sql" + "encoding/base64" "errors" "fmt" + "io" "net/http" "net/mail" "net/url" @@ -735,7 +737,78 @@ func (api *API) postLogout(rw http.ResponseWriter, r *http.Request) { }) } -// Returns URL for the OIDC logout. +// getDiscoveryEndpoints will return endpoints for end session and revocation +func (api *API) getDiscoveryEndpoints() (endSessionEndpoint string, revocationEndpoint string, err error) { + oidcProvider := api.OIDCConfig.Provider + + var discoveryConfig struct { + EndSessionEndpoint string `json:"end_session_endpoint"` + RevocationEndpoint string `json:"revocation_endpoint"` + } + + // Extract endpoints + if err := oidcProvider.Claims(&discoveryConfig); err != nil { + return "", "", xerrors.Errorf("failed to extract endpoints from OIDC provider discovery claims: %w", err) + } + + return discoveryConfig.EndSessionEndpoint, discoveryConfig.RevocationEndpoint, nil +} + +// revokeOAuthToken will revoke a particular token +func (api *API) revokeOAuthToken(ctx context.Context, token string, revocationEndpoint string) error { + logger := api.Logger.Named(userAuthLoggerName) + + if token == "" || revocationEndpoint == "" { + logger.Warn(ctx, "skip OAuth token revocation") + return nil + } + + dvOIDC := api.DeploymentValues.OIDC + oidcClientID := dvOIDC.ClientID.Value() + oidcClientSecret := dvOIDC.ClientSecret.Value() + + if oidcClientID == "" || oidcClientSecret == "" { + return xerrors.New("missing required configs for revocation (endpoint, client ID, or secret)") + } + + data := url.Values{} + data.Set("token", token) + + revokeReq, err := http.NewRequestWithContext(ctx, http.MethodPost, revocationEndpoint, strings.NewReader(data.Encode())) + if err != nil { + return xerrors.Errorf("failed to create revoke request object: %w", err) + } + + revokeReq.Header.Set("Content-Type", "application/x-www-form-urlencoded") + auth := base64.StdEncoding.EncodeToString([]byte(oidcClientID + ":" + oidcClientSecret)) + revokeReq.Header.Set("Authorization", "Basic "+auth) + + httpClient := &http.Client{} + resp, err := httpClient.Do(revokeReq) + if err != nil { + return xerrors.Errorf("failed to send revoke request to %s: %w", revocationEndpoint, err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + respBodyBytes, _ := io.ReadAll(resp.Body) + respBodyStr := string(respBodyBytes) + + logger.Warn(ctx, "failed to request OAuth token revocation", + slog.F("status_code", resp.StatusCode), + slog.F("response_body", respBodyStr), + slog.F("endpoint", revocationEndpoint), + slog.F("client_id", oidcClientID), + ) + + return xerrors.Errorf("failed to revoke with status %d: %s", resp.StatusCode, respBodyStr) + } + + logger.Info(ctx, "success to revoke OAuth token", slog.F("status_code", resp.StatusCode)) + return nil // Success +} + +// Returns URL for the OIDC logout after token revocation. // // @Summary Get user OIDC logout URL // @ID get-user-oidc-logout-url @@ -745,8 +818,18 @@ func (api *API) postLogout(rw http.ResponseWriter, r *http.Request) { // @Success 200 {object} codersdk.OIDCLogoutResponse "Returns a map containing the OIDC logout URL" // @Router /users/oidc-logout [get] func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { + logger := api.Logger.Named(userAuthLoggerName) ctx := r.Context() + // Check if OIDC is configured + if api.OIDCConfig == nil || api.OIDCConfig.Provider == nil { + logger.Warn(ctx, "unable to support OIDC logout with current configuration") + httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ + Message: "Failed to retrieve OIDC configuration.", + }) + return + } + // Get logged-in user apiKey := httpmw.APIKey(r) user, err := api.Database.GetUserByID(ctx, apiKey.UserID) @@ -757,8 +840,6 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { return } - logger := api.Logger.Named(userAuthLoggerName) - // Default response: empty URL if OIDC logout is not supported response := codersdk.OIDCLogoutResponse{URL: ""} @@ -784,22 +865,39 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { return } - rawIDToken := link.OAuthAccessToken + accessToken := link.OAuthAccessToken + refreshToken := link.OAuthRefreshToken // Retrieve OIDC environment variables dvOIDC := api.DeploymentValues.OIDC - oidcEndpoint := dvOIDC.LogoutEndpoint.Value() oidcClientID := dvOIDC.ClientID.Value() logoutURI := dvOIDC.LogoutRedirectURI.Value() - if oidcEndpoint == "" { + endSessionEndpoint, revocationEndpoint, err := api.getDiscoveryEndpoints() + if err != nil { + logger.Error(ctx, "failed to get OIDC discovery endpoints", slog.Error(err)) + + httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ + Message: "Failed to process OIDC configuration.", + }) + return + } + + // Perform token revocation first + err = api.revokeOAuthToken(ctx, refreshToken, revocationEndpoint) + if err != nil { + // Do not return since this step is optional + logger.Warn(ctx, "failed to revoke OAuth token during logout", slog.Error(err)) + } + + if endSessionEndpoint == "" { logger.Warn(ctx, "missing OIDC logout endpoint") httpapi.Write(ctx, rw, http.StatusOK, response) return } // Construct OIDC Logout URL - logoutURL, err := url.Parse(oidcEndpoint) + logoutURL, err := url.Parse(endSessionEndpoint) if err != nil { logger.Error(ctx, "failed to parse OIDC endpoint", "error", err) httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ @@ -812,12 +910,12 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { // Build parameters q := url.Values{} + if accessToken != "" { + q.Set("id_token_hint", accessToken) + } if oidcClientID != "" { q.Set("client_id", oidcClientID) } - if rawIDToken != "" { - q.Set("id_token_hint", rawIDToken) - } if logoutURI != "" { q.Set("logout_uri", logoutURI) } diff --git a/codersdk/deployment.go b/codersdk/deployment.go index ba23572764a51..f507c8d477f09 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -1919,16 +1919,6 @@ func (c *DeploymentValues) Options() serpent.OptionSet { Group: &deploymentGroupOIDC, YAML: "dangerousSkipIssuerChecks", }, - { - Name: "OIDC logout endpoint", - Description: "OIDC endpoint for logout.", - Flag: "logout-endpoint", - Env: "CODER_OIDC_LOGOUT_ENDPOINT", - Default: "", - Value: &c.OIDC.LogoutEndpoint, - Group: &deploymentGroupOIDC, - YAML: "logoutEndpoint", - }, { Name: "OIDC logout redirect URI", Description: "OIDC redirect URI after logout.", From 2c507c5776f996cbac369cb6f7c8fea2990c861c Mon Sep 17 00:00:00 2001 From: shpark Date: Thu, 3 Apr 2025 10:13:19 +0000 Subject: [PATCH 16/28] chore: add auto generated files --- cli/testdata/coder_server_--help.golden | 5 +---- cli/testdata/server-config.yaml.golden | 3 --- docs/reference/cli/server.md | 12 +----------- enterprise/cli/testdata/coder_server_--help.golden | 5 +---- 4 files changed, 3 insertions(+), 22 deletions(-) diff --git a/cli/testdata/coder_server_--help.golden b/cli/testdata/coder_server_--help.golden index e96c670faada1..621d57812b242 100644 --- a/cli/testdata/coder_server_--help.golden +++ b/cli/testdata/coder_server_--help.golden @@ -586,10 +586,7 @@ OIDC OPTIONS: --oidc-username-field string, $CODER_OIDC_USERNAME_FIELD (default: preferred_username) OIDC claim field to use as the username. - --logout-endpoint string, $CODER_OIDC_LOGOUT_ENDPOINT - OIDC endpoint for logout. - - --logout-redirect-uri string, $CODER_OIDC_LOGOUT_URI + --oidc-logout-redirect-uri string, $CODER_OIDC_LOGOUT_URI OIDC redirect URI after logout. --oidc-sign-in-text string, $CODER_OIDC_SIGN_IN_TEXT (default: OpenID Connect) diff --git a/cli/testdata/server-config.yaml.golden b/cli/testdata/server-config.yaml.golden index eeee0103edb62..38dd2085c0a80 100644 --- a/cli/testdata/server-config.yaml.golden +++ b/cli/testdata/server-config.yaml.golden @@ -389,9 +389,6 @@ oidc: # an insecure OIDC configuration. It is not recommended to use this flag. # (default: , type: bool) dangerousSkipIssuerChecks: false - # OIDC endpoint for logout. - # (default: , type: string) - logoutEndpoint: "" # OIDC redirect URI after logout. # (default: , type: string) logoutRedirectURI: "" diff --git a/docs/reference/cli/server.md b/docs/reference/cli/server.md index 3a5a183097d42..1eb27d03e6e27 100644 --- a/docs/reference/cli/server.md +++ b/docs/reference/cli/server.md @@ -683,17 +683,7 @@ The custom text to show on the error page informing about disabled OIDC signups. OIDC issuer urls must match in the request, the id_token 'iss' claim, and in the well-known configuration. This flag disables that requirement, and can lead to an insecure OIDC configuration. It is not recommended to use this flag. -### --logout-endpoint - -| | | -|-------------|------------------------------------------| -| Type | string | -| Environment | $CODER_OIDC_LOGOUT_ENDPOINT | -| YAML | oidc.logoutEndpoint | - -OIDC endpoint for logout. - -### --logout-redirect-uri +### --oidc-logout-redirect-uri | | | |-------------|-------------------------------------| diff --git a/enterprise/cli/testdata/coder_server_--help.golden b/enterprise/cli/testdata/coder_server_--help.golden index 18d76c617ebb9..4d78d09278b3a 100644 --- a/enterprise/cli/testdata/coder_server_--help.golden +++ b/enterprise/cli/testdata/coder_server_--help.golden @@ -587,10 +587,7 @@ OIDC OPTIONS: --oidc-username-field string, $CODER_OIDC_USERNAME_FIELD (default: preferred_username) OIDC claim field to use as the username. - --logout-endpoint string, $CODER_OIDC_LOGOUT_ENDPOINT - OIDC endpoint for logout. - - --logout-redirect-uri string, $CODER_OIDC_LOGOUT_URI + --oidc-logout-redirect-uri string, $CODER_OIDC_LOGOUT_URI OIDC redirect URI after logout. --oidc-sign-in-text string, $CODER_OIDC_SIGN_IN_TEXT (default: OpenID Connect) From 27ac41cf052f7b4b326f5d33b7058dff98820f29 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Fri, 18 Apr 2025 09:45:50 +0000 Subject: [PATCH 17/28] feat: Added codeheaan ui --- coderd/userauth.go | 1 + site/index.html | 12 +++++----- .../modules/dashboard/Navbar/NavbarView.tsx | 16 +++++++++++-- .../UserDropdown/UserDropdownContent.tsx | 4 ++-- site/src/pages/LoginPage/LoginPage.tsx | 5 +++- .../AccountPage/AccountForm.tsx | 7 +++--- .../WorkspacePage/WorkspaceReadyPage.tsx | 23 ++++++++++--------- site/src/theme/icons.json | 2 ++ site/static/favicons/heaan-dark.svg | 8 +++++++ site/static/favicons/heaan-light.svg | 8 +++++++ site/static/icon/heaan-dark.svg | 8 +++++++ site/static/icon/heaan-light.svg | 8 +++++++ 12 files changed, 77 insertions(+), 25 deletions(-) create mode 100644 site/static/favicons/heaan-dark.svg create mode 100644 site/static/favicons/heaan-light.svg create mode 100644 site/static/icon/heaan-dark.svg create mode 100644 site/static/icon/heaan-light.svg diff --git a/coderd/userauth.go b/coderd/userauth.go index 4003fd72c1be5..fe81170ba1703 100644 --- a/coderd/userauth.go +++ b/coderd/userauth.go @@ -916,6 +916,7 @@ func (api *API) userOIDCLogoutURL(rw http.ResponseWriter, r *http.Request) { if oidcClientID != "" { q.Set("client_id", oidcClientID) } + // post_logout_redirect_uri? if logoutURI != "" { q.Set("logout_uri", logoutURI) } diff --git a/site/index.html b/site/index.html index fff26338b21aa..e7e9ca49b7daa 100644 --- a/site/index.html +++ b/site/index.html @@ -25,31 +25,31 @@ - + />--> - + />--> diff --git a/site/src/modules/dashboard/Navbar/NavbarView.tsx b/site/src/modules/dashboard/Navbar/NavbarView.tsx index d5ee661025f47..e93c7e7218b0f 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.tsx @@ -9,6 +9,7 @@ import { DeploymentDropdown } from "./DeploymentDropdown"; import { MobileMenu } from "./MobileMenu"; import { ProxyMenu } from "./ProxyMenu"; import { UserDropdown } from "./UserDropdown/UserDropdown"; +import { useTheme } from "@emotion/react"; export interface NavbarViewProps { logo_url?: string; @@ -41,14 +42,25 @@ export const NavbarView: FC = ({ canViewAuditLog, proxyContextValue, }) => { + const theme = useTheme(); + + const colorTheme = theme.palette.mode; + const LogoHEaaNDark = "/favicons/heaan-dark.svg"; + const LogoHEaaNLight = "/favicons/heaan-light.svg"; + return (

  • diff --git a/site/src/pages/TemplatePage/TemplateLayout.tsx b/site/src/pages/TemplatePage/TemplateLayout.tsx index cf1c3f84ddd55..6d72a96128df6 100644 --- a/site/src/pages/TemplatePage/TemplateLayout.tsx +++ b/site/src/pages/TemplatePage/TemplateLayout.tsx @@ -125,9 +125,9 @@ export const TemplateLayout: FC = ({ Versions - + {/* Embed - + */} {shouldShowInsights && ( Insights From 7b859f9cae7c18dca70ea434fef1869295fff528 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Mon, 21 Apr 2025 05:00:31 +0000 Subject: [PATCH 20/28] fix: remove ssh connect button --- site/src/modules/resources/AgentRow.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index 9e5caed677ee1..0f9d39a574afc 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -190,13 +190,13 @@ export const AgentRow: FC = ({ {showBuiltinApps && (
    - {!hideSSHButton && agent.display_apps.includes("ssh_helper") && ( + {/*{!hideSSHButton && agent.display_apps.includes("ssh_helper") && ( - )} + )}*/} {proxy.preferredWildcardHostname && proxy.preferredWildcardHostname !== "" && agent.display_apps.includes("port_forwarding_helper") && ( From 9285c18f8a749708a6ac9595031943e9d5d56ffb Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 23 Apr 2025 00:26:19 +0000 Subject: [PATCH 21/28] fix/#98-go-back-to-landing-page Co-authored-by: hyohyeok1 --- site/src/modules/dashboard/Navbar/NavbarView.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/site/src/modules/dashboard/Navbar/NavbarView.tsx b/site/src/modules/dashboard/Navbar/NavbarView.tsx index e93c7e7218b0f..c7c194df5bc25 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.tsx @@ -48,20 +48,24 @@ export const NavbarView: FC = ({ const LogoHEaaNDark = "/favicons/heaan-dark.svg"; const LogoHEaaNLight = "/favicons/heaan-light.svg"; + const landingURL = "https://heaan.io"; + return (
    - + {/**/} + HEaaN-logo + {/*{logo_url ? ( ) : ( )}*/} - + {/**/} From 1a1460cff9d9e2f268b7d5c0c7a132efaae0bb17 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 23 Apr 2025 05:12:42 +0000 Subject: [PATCH 22/28] feat: disabled redirect by env Co-authored-by: hyohyeok1 --- .env.example | 20 ++++++++++++++++++++ .gitignore | 1 + site/src/@types/vite-env.d.ts | 16 ++++++++++++++++ site/src/pages/LoginPage/LoginPage.tsx | 6 +++++- site/vite.config.mts | 1 + 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 .env.example create mode 100644 site/src/@types/vite-env.d.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000000000..be97ef96dca71 --- /dev/null +++ b/.env.example @@ -0,0 +1,20 @@ +export CODER_ACCESS_URL="https://coder.access.url" +export CODER_HTTP_ADDRESS="0.0.0.0:3000" #If using nginx -> 127.0.0.1:3000 +export CODER_PROVISIONER_DAEMONS=5 +export CODER_TLS_ENABLE=false + +export CODER_REDIRECT_TO_ACCESS_URL=false +export CODER_TELEMETRY_ENABLE=false +export CODER_OIDC_ENABLED=true +export CODER_OIDC_ISSUER_URL="https://oidc.issuer.url" +export CODER_OIDC_CLIENT_ID="your-oidc-client-id" +export CODER_OIDC_CLIENT_SECRET="your-oidc-client-secret" +export CODER_OIDC_SCOPES="openid email" +export CODER_OIDC_IGNORE_EMAIL_VERIFIED=true +export CODER_OIDC_REDIRECT_URI="$BASE_URL/api/v2/users/oidc/callback" +export CODER_OIDC_LOGOUT_URI="https://oidc.logout.url" +export CODER_OIDC_TOKEN_PATH="/home/ubuntu/.coder/tokens" + +# if IS_CI_BUILD variable is true, CODER_DISABLE_PASSWORD_AUTH variable must be false +export VITE_IS_CI_BUILD=true +export CODER_DISABLE_PASSWORD_AUTH=false \ No newline at end of file diff --git a/.gitignore b/.gitignore index f98101cd7f920..e1d757a99c4c3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ gotests.json node_modules/ vendor/ yarn-error.log +.env # VSCode settings. **/.vscode/* diff --git a/site/src/@types/vite-env.d.ts b/site/src/@types/vite-env.d.ts new file mode 100644 index 0000000000000..b867ffd74c489 --- /dev/null +++ b/site/src/@types/vite-env.d.ts @@ -0,0 +1,16 @@ +/// + +interface ViteTypeOptions { + // 아래 라인을 추가하면, ImportMetaEnv 타입을 엄격하게 설정해 + // 알 수 없는 키를 허용하지 않게 할 수 있습니다. + strictImportEnv: unknown +} + +interface ImportMetaEnv { + readonly VITE_IS_CI_BUILD: string + // 다른 환경 변수들에 대한 타입 정의... +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} \ No newline at end of file diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index f490086ee9bde..e86304596c1e9 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -69,7 +69,11 @@ export const LoginPage: FC = () => { /> ); } - } else { + } + + const isCI = import.meta.env.VITE_IS_CI_BUILD === "true" + + if (!isSignedIn && !isCI) { window.location.replace(`https://heaan.io`); return null; } diff --git a/site/vite.config.mts b/site/vite.config.mts index 9da0221016cb1..5523edd0cd60c 100644 --- a/site/vite.config.mts +++ b/site/vite.config.mts @@ -29,6 +29,7 @@ export default defineConfig({ // 'hidden' works like true except that the corresponding sourcemap comments in the bundled files are suppressed sourcemap: "hidden", }, + envDir: "../", define: { "process.env": { NODE_ENV: process.env.NODE_ENV, From d4201c110e289e36b67706feea1d1c778cfac8ee Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 23 Apr 2025 05:17:04 +0000 Subject: [PATCH 23/28] fix: fixed typo Co-authored-by: hyohyeok1 --- .env.example | 2 +- site/src/@types/vite-env.d.ts | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.env.example b/.env.example index be97ef96dca71..0ecd16656b899 100644 --- a/.env.example +++ b/.env.example @@ -15,6 +15,6 @@ export CODER_OIDC_REDIRECT_URI="$BASE_URL/api/v2/users/oidc/callback" export CODER_OIDC_LOGOUT_URI="https://oidc.logout.url" export CODER_OIDC_TOKEN_PATH="/home/ubuntu/.coder/tokens" -# if IS_CI_BUILD variable is true, CODER_DISABLE_PASSWORD_AUTH variable must be false +# if VITE_IS_CI_BUILD variable is true, CODER_DISABLE_PASSWORD_AUTH variable must be false export VITE_IS_CI_BUILD=true export CODER_DISABLE_PASSWORD_AUTH=false \ No newline at end of file diff --git a/site/src/@types/vite-env.d.ts b/site/src/@types/vite-env.d.ts index b867ffd74c489..597b1ba3e5f67 100644 --- a/site/src/@types/vite-env.d.ts +++ b/site/src/@types/vite-env.d.ts @@ -1,14 +1,11 @@ /// interface ViteTypeOptions { - // 아래 라인을 추가하면, ImportMetaEnv 타입을 엄격하게 설정해 - // 알 수 없는 키를 허용하지 않게 할 수 있습니다. strictImportEnv: unknown } interface ImportMetaEnv { readonly VITE_IS_CI_BUILD: string - // 다른 환경 변수들에 대한 타입 정의... } interface ImportMeta { From c1fc86c5d7e20d433d975eb14fbf6a701fe2e7bf Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 23 Apr 2025 06:14:23 +0000 Subject: [PATCH 24/28] refactor: Changed variable names Co-authored-by: hyohyeok1 --- .env.example | 4 ++-- site/src/@types/vite-env.d.ts | 2 +- site/src/pages/LoginPage/LoginPage.tsx | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index 0ecd16656b899..d7ed972edc672 100644 --- a/.env.example +++ b/.env.example @@ -15,6 +15,6 @@ export CODER_OIDC_REDIRECT_URI="$BASE_URL/api/v2/users/oidc/callback" export CODER_OIDC_LOGOUT_URI="https://oidc.logout.url" export CODER_OIDC_TOKEN_PATH="/home/ubuntu/.coder/tokens" -# if VITE_IS_CI_BUILD variable is true, CODER_DISABLE_PASSWORD_AUTH variable must be false -export VITE_IS_CI_BUILD=true +# if VITE_DISABLE_EXTERNAL_LOGIN_PAGE variable is true, CODER_DISABLE_PASSWORD_AUTH variable must be false +export VITE_DISABLE_EXTERNAL_LOGIN_PAGE=true export CODER_DISABLE_PASSWORD_AUTH=false \ No newline at end of file diff --git a/site/src/@types/vite-env.d.ts b/site/src/@types/vite-env.d.ts index 597b1ba3e5f67..e9699e6947edb 100644 --- a/site/src/@types/vite-env.d.ts +++ b/site/src/@types/vite-env.d.ts @@ -5,7 +5,7 @@ interface ViteTypeOptions { } interface ImportMetaEnv { - readonly VITE_IS_CI_BUILD: string + readonly VITE_DISABLE_EXTERNAL_LOGIN_PAGE: string } interface ImportMeta { diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index e86304596c1e9..3da1f6da67d03 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -71,9 +71,9 @@ export const LoginPage: FC = () => { } } - const isCI = import.meta.env.VITE_IS_CI_BUILD === "true" + const disableExternalLoginPage = import.meta.env.VITE_DISABLE_EXTERNAL_LOGIN_PAGE === "true"; - if (!isSignedIn && !isCI) { + if (!isSignedIn && !disableExternalLoginPage) { window.location.replace(`https://heaan.io`); return null; } From a48c284ca0876807c82829f21a0316385a3b57ef Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Tue, 29 Apr 2025 07:53:40 +0000 Subject: [PATCH 25/28] feat: add admin-only route access --- .env.example | 10 +++++++--- site/src/@types/vite-env.d.ts | 3 ++- site/src/pages/LoginPage/LoginPage.tsx | 14 +++++++++----- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index d7ed972edc672..5bc013bf84a30 100644 --- a/.env.example +++ b/.env.example @@ -15,6 +15,10 @@ export CODER_OIDC_REDIRECT_URI="$BASE_URL/api/v2/users/oidc/callback" export CODER_OIDC_LOGOUT_URI="https://oidc.logout.url" export CODER_OIDC_TOKEN_PATH="/home/ubuntu/.coder/tokens" -# if VITE_DISABLE_EXTERNAL_LOGIN_PAGE variable is true, CODER_DISABLE_PASSWORD_AUTH variable must be false -export VITE_DISABLE_EXTERNAL_LOGIN_PAGE=true -export CODER_DISABLE_PASSWORD_AUTH=false \ No newline at end of file +export VITE_CLIENT_URL="https://client.url" +export VITE_ADMIN_KEY_HASH="hash" +export CODER_DISABLE_PASSWORD_AUTH=false + +# GPU Manager +export TF_VAR_gpu_manager_endpoint="https://gpu.manager.endpoint" +export APP_TYPE="development" \ No newline at end of file diff --git a/site/src/@types/vite-env.d.ts b/site/src/@types/vite-env.d.ts index e9699e6947edb..413148f849ead 100644 --- a/site/src/@types/vite-env.d.ts +++ b/site/src/@types/vite-env.d.ts @@ -5,7 +5,8 @@ interface ViteTypeOptions { } interface ImportMetaEnv { - readonly VITE_DISABLE_EXTERNAL_LOGIN_PAGE: string + readonly VITE_ADMIN_KEY_HASH: string + readonly VITE_CLIENT_URL: string } interface ImportMeta { diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index 3da1f6da67d03..47c2ac2c64a1b 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -5,11 +5,12 @@ import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useEffect } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; -import { Navigate, useLocation, useNavigate } from "react-router-dom"; +import { Navigate, useLocation, useNavigate, useSearchParams } from "react-router-dom"; import { getApplicationName } from "utils/appearance"; import { retrieveRedirect } from "utils/redirect"; import { sendDeploymentEvent } from "utils/telemetry"; import { LoginPageView } from "./LoginPageView"; +import { paramsUsedToCreateWorkspace } from "utils/workspace"; export const LoginPage: FC = () => { const location = useLocation(); @@ -69,12 +70,15 @@ export const LoginPage: FC = () => { /> ); } - } + } + + const [params] = useSearchParams(); + const adminKey = params.get("adminKey") - const disableExternalLoginPage = import.meta.env.VITE_DISABLE_EXTERNAL_LOGIN_PAGE === "true"; + const isAdmin = adminKey === import.meta.env.VITE_ADMIN_KEY_HASH; - if (!isSignedIn && !disableExternalLoginPage) { - window.location.replace(`https://heaan.io`); + if (!isSignedIn && !isAdmin) { + window.location.replace(import.meta.env.VITE_CLIENT_URL as string); return null; } From fe74df0404c698d13096fece518740473b625faf Mon Sep 17 00:00:00 2001 From: Jeong Hyohyeok <111841421+hyohyeok1@users.noreply.github.com> Date: Tue, 29 Apr 2025 17:04:27 +0900 Subject: [PATCH 26/28] Update site/src/@types/vite-env.d.ts Co-authored-by: jh-lee-cryptolab <167725275+jh-lee-cryptolab@users.noreply.github.com> --- site/src/@types/vite-env.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/@types/vite-env.d.ts b/site/src/@types/vite-env.d.ts index 413148f849ead..e8b256763a5fb 100644 --- a/site/src/@types/vite-env.d.ts +++ b/site/src/@types/vite-env.d.ts @@ -6,7 +6,7 @@ interface ViteTypeOptions { interface ImportMetaEnv { readonly VITE_ADMIN_KEY_HASH: string - readonly VITE_CLIENT_URL: string + readonly VITE_CLIENT_URL: string } interface ImportMeta { From 09e170454c315cd04b57eb44c519cb0308ad18ff Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Tue, 29 Apr 2025 08:07:40 +0000 Subject: [PATCH 27/28] chore: remove unuse import function --- site/src/pages/LoginPage/LoginPage.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index 47c2ac2c64a1b..1ebc8e0a990cf 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -10,7 +10,6 @@ import { getApplicationName } from "utils/appearance"; import { retrieveRedirect } from "utils/redirect"; import { sendDeploymentEvent } from "utils/telemetry"; import { LoginPageView } from "./LoginPageView"; -import { paramsUsedToCreateWorkspace } from "utils/workspace"; export const LoginPage: FC = () => { const location = useLocation(); From c2f8085706c08ad5f48ca3a82c12951e0d9687a0 Mon Sep 17 00:00:00 2001 From: geuna Date: Fri, 4 Jul 2025 15:09:30 +0900 Subject: [PATCH 28/28] fix: hide workspace accordion button --- site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx index b02e4473eb57f..c1f4c51321cb3 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx @@ -128,12 +128,12 @@ export const RestartButton: FC = ({ {loading ? <>Restarting… : <>Restart…} - + /> */}
    ); };