diff --git a/cli/provisioners_test.go b/cli/provisioners_test.go index 760c7f5a6ccce..ec528cfeda7cc 100644 --- a/cli/provisioners_test.go +++ b/cli/provisioners_test.go @@ -95,7 +95,7 @@ func TestProvisioners_Golden(t *testing.T) { Name: "provisioner-1", CreatedAt: dbtime.Now().Add(1 * time.Second), LastSeenAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(time.Hour), Valid: true}, // Stale interval can't be adjusted, keep online. - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, Tags: database.StringMap{"owner": "", "scope": "organization", "foo": "bar"}, }) w1 := dbgen.Workspace(t, coderdAPI.Database, database.WorkspaceTable{ @@ -122,7 +122,7 @@ func TestProvisioners_Golden(t *testing.T) { Name: "provisioner-2", CreatedAt: dbtime.Now().Add(2 * time.Second), LastSeenAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(-time.Hour), Valid: true}, - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, Tags: database.StringMap{"owner": "", "scope": "organization"}, }) w2 := dbgen.Workspace(t, coderdAPI.Database, database.WorkspaceTable{ @@ -168,7 +168,7 @@ func TestProvisioners_Golden(t *testing.T) { Name: "provisioner-3", CreatedAt: dbtime.Now().Add(3 * time.Second), LastSeenAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(time.Hour), Valid: true}, // Stale interval can't be adjusted, keep online. - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, Tags: database.StringMap{"owner": "", "scope": "organization"}, }) diff --git a/coderd/database/dbmem/dbmem.go b/coderd/database/dbmem/dbmem.go index 6b518c7696369..e66d25068e199 100644 --- a/coderd/database/dbmem/dbmem.go +++ b/coderd/database/dbmem/dbmem.go @@ -114,7 +114,7 @@ func New() database.Store { q.defaultProxyIconURL = "/emojis/1f3e1.png" _, err = q.InsertProvisionerKey(context.Background(), database.InsertProvisionerKeyParams{ - ID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + ID: codersdk.ProvisionerKeyUUIDBuiltIn, OrganizationID: defaultOrg.ID, CreatedAt: dbtime.Now(), HashedSecret: []byte{}, @@ -125,7 +125,7 @@ func New() database.Store { panic(xerrors.Errorf("failed to create built-in provisioner key: %w", err)) } _, err = q.InsertProvisionerKey(context.Background(), database.InsertProvisionerKeyParams{ - ID: uuid.MustParse(codersdk.ProvisionerKeyIDUserAuth), + ID: codersdk.ProvisionerKeyUUIDUserAuth, OrganizationID: defaultOrg.ID, CreatedAt: dbtime.Now(), HashedSecret: []byte{}, @@ -136,7 +136,7 @@ func New() database.Store { panic(xerrors.Errorf("failed to create user-auth provisioner key: %w", err)) } _, err = q.InsertProvisionerKey(context.Background(), database.InsertProvisionerKeyParams{ - ID: uuid.MustParse(codersdk.ProvisionerKeyIDPSK), + ID: codersdk.ProvisionerKeyUUIDPSK, OrganizationID: defaultOrg.ID, CreatedAt: dbtime.Now(), HashedSecret: []byte{}, diff --git a/coderd/database/dbpurge/dbpurge_test.go b/coderd/database/dbpurge/dbpurge_test.go index afef78bda3d4a..3b21b1076cceb 100644 --- a/coderd/database/dbpurge/dbpurge_test.go +++ b/coderd/database/dbpurge/dbpurge_test.go @@ -413,7 +413,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, }) require.NoError(t, err) _, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ @@ -426,7 +426,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, }) require.NoError(t, err) _, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ @@ -441,7 +441,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, }) require.NoError(t, err) _, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{ @@ -457,7 +457,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) { Version: "1.0.0", APIVersion: proto.CurrentVersion.String(), OrganizationID: defaultOrg.ID, - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, }) require.NoError(t, err) diff --git a/coderd/provisionerdserver/provisionerdserver_test.go b/coderd/provisionerdserver/provisionerdserver_test.go index 6164b8ae22705..aa9129a20c6e2 100644 --- a/coderd/provisionerdserver/provisionerdserver_test.go +++ b/coderd/provisionerdserver/provisionerdserver_test.go @@ -2272,7 +2272,7 @@ func setup(t *testing.T, ignoreLogErrors bool, ov *overrides) (proto.DRPCProvisi Version: buildinfo.Version(), APIVersion: proto.CurrentVersion.String(), OrganizationID: defOrg.ID, - KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn), + KeyID: codersdk.ProvisionerKeyUUIDBuiltIn, }) require.NoError(t, err) diff --git a/codersdk/provisionerdaemons.go b/codersdk/provisionerdaemons.go index 33177c52bcf6b..98c3252dc859a 100644 --- a/codersdk/provisionerdaemons.go +++ b/codersdk/provisionerdaemons.go @@ -352,6 +352,12 @@ const ( ProvisionerKeyIDPSK = "00000000-0000-0000-0000-000000000003" ) +var ( + ProvisionerKeyUUIDBuiltIn = uuid.MustParse(ProvisionerKeyIDBuiltIn) + ProvisionerKeyUUIDUserAuth = uuid.MustParse(ProvisionerKeyIDUserAuth) + ProvisionerKeyUUIDPSK = uuid.MustParse(ProvisionerKeyIDPSK) +) + const ( ProvisionerKeyNameBuiltIn = "built-in" ProvisionerKeyNameUserAuth = "user-auth" diff --git a/enterprise/coderd/provisionerdaemons_test.go b/enterprise/coderd/provisionerdaemons_test.go index ff3ce625707ee..bcdb75c6a50fc 100644 --- a/enterprise/coderd/provisionerdaemons_test.go +++ b/enterprise/coderd/provisionerdaemons_test.go @@ -782,10 +782,14 @@ func TestGetProvisionerDaemons(t *testing.T) { pkDaemons, err := orgAdmin.ListProvisionerKeyDaemons(ctx, org.ID) require.NoError(t, err) - require.Len(t, pkDaemons, 1) + require.Len(t, pkDaemons, 2) require.Len(t, pkDaemons[0].Daemons, 1) assert.Equal(t, keys[0].ID, pkDaemons[0].Key.ID) assert.Equal(t, keys[0].Name, pkDaemons[0].Key.Name) + // user-auth provisioners + require.Len(t, pkDaemons[1].Daemons, 0) + assert.Equal(t, codersdk.ProvisionerKeyUUIDUserAuth, pkDaemons[1].Key.ID) + assert.Equal(t, codersdk.ProvisionerKeyNameUserAuth, pkDaemons[1].Key.Name) assert.Equal(t, daemonName, pkDaemons[0].Daemons[0].Name) assert.Equal(t, buildinfo.Version(), pkDaemons[0].Daemons[0].Version) diff --git a/enterprise/coderd/provisionerkeys.go b/enterprise/coderd/provisionerkeys.go index 279b9c567e353..d615819ec3510 100644 --- a/enterprise/coderd/provisionerkeys.go +++ b/enterprise/coderd/provisionerkeys.go @@ -137,6 +137,20 @@ func (api *API) provisionerKeyDaemons(rw http.ResponseWriter, r *http.Request) { } sdkKeys := convertProvisionerKeys(pks) + // For the default organization, we insert three rows for the special + // provisioner key types (built-in, user-auth, and psk). We _don't_ insert + // those into the database for any other org, but we still need to include the + // user-auth key in this list, so we just insert it manually. + if !slices.ContainsFunc(sdkKeys, func(key codersdk.ProvisionerKey) bool { + return key.ID == codersdk.ProvisionerKeyUUIDUserAuth + }) { + sdkKeys = append(sdkKeys, codersdk.ProvisionerKey{ + ID: codersdk.ProvisionerKeyUUIDUserAuth, + Name: codersdk.ProvisionerKeyNameUserAuth, + Tags: map[string]string{}, + }) + } + daemons, err := api.Database.GetProvisionerDaemonsByOrganization(ctx, database.GetProvisionerDaemonsByOrganizationParams{OrganizationID: organization.ID}) if err != nil { httpapi.InternalServerError(rw, err)
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: