Skip to content

Commit 1fbc196

Browse files
committed
feat: add tags to provisioner keys api
1 parent 15fda23 commit 1fbc196

17 files changed

+86
-33
lines changed

coderd/apidoc/docs.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmem/dbmem.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6585,6 +6585,7 @@ func (q *FakeQuerier) InsertProvisionerKey(_ context.Context, arg database.Inser
65856585
OrganizationID: arg.OrganizationID,
65866586
Name: strings.ToLower(arg.Name),
65876587
HashedSecret: arg.HashedSecret,
6588+
Tags: arg.Tags,
65886589
}
65896590
q.provisionerKeys = append(q.provisionerKeys, provisionerKey)
65906591

@@ -7275,13 +7276,7 @@ func (q *FakeQuerier) ListProvisionerKeysByOrganization(_ context.Context, organ
72757276
keys := make([]database.ProvisionerKey, 0)
72767277
for _, key := range q.provisionerKeys {
72777278
if key.OrganizationID == organizationID {
7278-
keys = append(keys, database.ProvisionerKey{
7279-
ID: key.ID,
7280-
CreatedAt: key.CreatedAt,
7281-
OrganizationID: key.OrganizationID,
7282-
Name: key.Name,
7283-
HashedSecret: key.HashedSecret,
7284-
})
7279+
keys = append(keys, key)
72857280
}
72867281
}
72877282

coderd/database/dump.sql

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE provisioner_keys DROP COLUMN tags;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE provisioner_keys ADD COLUMN tags jsonb DEFAULT '{}'::jsonb NOT NULL;
2+
ALTER TABLE provisioner_keys ALTER COLUMN tags DROP DEFAULT;

coderd/database/models.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 12 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/provisionerkeys.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ INSERT INTO
55
created_at,
66
organization_id,
77
name,
8-
hashed_secret
8+
hashed_secret,
9+
tags
910
)
1011
VALUES
11-
($1, $2, $3, lower(@name), $4) RETURNING *;
12+
($1, $2, $3, lower(@name), $4, $5) RETURNING *;
1213

1314
-- name: GetProvisionerKeyByID :one
1415
SELECT

coderd/database/sqlc.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ sql:
4444
- column: "provisioner_daemons.tags"
4545
go_type:
4646
type: "StringMap"
47+
- column: "provisioner_keys.tags"
48+
go_type:
49+
type: "StringMap"
4750
- column: "provisioner_jobs.tags"
4851
go_type:
4952
type: "StringMap"

coderd/provisionerkey/provisionerkey.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/coder/coder/v2/cryptorand"
1313
)
1414

15-
func New(organizationID uuid.UUID, name string) (database.InsertProvisionerKeyParams, string, error) {
15+
func New(organizationID uuid.UUID, name string, tags map[string]string) (database.InsertProvisionerKeyParams, string, error) {
1616
id := uuid.New()
1717
secret, err := cryptorand.HexString(64)
1818
if err != nil {
@@ -21,11 +21,16 @@ func New(organizationID uuid.UUID, name string) (database.InsertProvisionerKeyPa
2121
hashedSecret := sha256.Sum256([]byte(secret))
2222
token := fmt.Sprintf("%s:%s", id, secret)
2323

24+
if tags == nil {
25+
tags = map[string]string{}
26+
}
27+
2428
return database.InsertProvisionerKeyParams{
2529
ID: id,
2630
CreatedAt: dbtime.Now(),
2731
OrganizationID: organizationID,
2832
Name: name,
2933
HashedSecret: hashedSecret[:],
34+
Tags: tags,
3035
}, token, nil
3136
}

codersdk/provisionerdaemons.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,10 +272,12 @@ type ProvisionerKey struct {
272272
OrganizationID uuid.UUID `json:"organization" table:"organization_id" format:"uuid"`
273273
Name string `json:"name" table:"name,default_sort"`
274274
// HashedSecret - never include the access token in the API response
275+
Tags map[string]string `json:"tags" table:"tags"`
275276
}
276277

277278
type CreateProvisionerKeyRequest struct {
278-
Name string `json:"name"`
279+
Name string `json:"name"`
280+
Tags map[string]string `json:"tags"`
279281
}
280282

281283
type CreateProvisionerKeyResponse struct {

docs/api/enterprise.md

Lines changed: 14 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/api/schemas.md

Lines changed: 13 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

enterprise/coderd/provisionerkeys.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func (api *API) postProvisionerKey(rw http.ResponseWriter, r *http.Request) {
5454
return
5555
}
5656

57-
params, token, err := provisionerkey.New(organization.ID, req.Name)
57+
params, token, err := provisionerkey.New(organization.ID, req.Name, req.Tags)
5858
if err != nil {
5959
httpapi.InternalServerError(rw, err)
6060
return
@@ -143,6 +143,7 @@ func convertProvisionerKeys(dbKeys []database.ProvisionerKey) []codersdk.Provisi
143143
OrganizationID: dbKey.OrganizationID,
144144
Name: dbKey.Name,
145145
// HashedSecret - never include the access token in the API response
146+
Tags: dbKey.Tags,
146147
})
147148
}
148149
return keys

enterprise/coderd/provisionerkeys_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,13 @@ func TestProvisionerKeys(t *testing.T) {
6969
require.NoError(t, err, "org admin list provisioner keys")
7070
require.Len(t, keys, 0, "org admin list provisioner keys")
7171

72+
tags := map[string]string{
73+
"my": "way",
74+
}
7275
// org admin can create a provisioner key
7376
_, err = orgAdmin.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
7477
Name: "Key", // case insensitive
78+
Tags: tags,
7579
})
7680
require.NoError(t, err, "org admin create provisioner key")
7781

@@ -97,6 +101,8 @@ func TestProvisionerKeys(t *testing.T) {
97101
keys, err = orgAdmin.ListProvisionerKeys(ctx, owner.OrganizationID)
98102
require.NoError(t, err, "org admin list provisioner keys")
99103
require.Len(t, keys, 1, "org admin list provisioner keys")
104+
require.Equal(t, "key", keys[0].Name, "org admin list provisioner keys name matches")
105+
require.EqualValues(t, tags, keys[0].Tags, "org admin list provisioner keys tags match")
100106

101107
// org admin can delete a provisioner key
102108
err = orgAdmin.DeleteProvisionerKey(ctx, owner.OrganizationID, "key") // using lowercase here works

site/src/api/typesGenerated.ts

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)