Skip to content

Commit c629f07

Browse files
committed
changes endpoint to return all pk details
1 parent 1a019bb commit c629f07

File tree

4 files changed

+56
-39
lines changed

4 files changed

+56
-39
lines changed

codersdk/provisionerdaemons.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -368,21 +368,23 @@ func (c *Client) ListProvisionerKeys(ctx context.Context, organizationID uuid.UU
368368
return resp, json.NewDecoder(res.Body).Decode(&resp)
369369
}
370370

371-
// FetchProvisionerTagsByKey returns the provisioner tags associated with the provisioner key.
372-
func (c *Client) FetchProvisionerTagsByKey(ctx context.Context, organizationID uuid.UUID, provisionerKey string) (ProvisionerKeyTags, error) {
371+
// GetProvisionerKey returns the provisioner key.
372+
func (c *Client) GetProvisionerKey(ctx context.Context, pk string) (ProvisionerKey, error) {
373373
res, err := c.Request(ctx, http.MethodGet,
374-
fmt.Sprintf("/api/v2/organizations/%s/provisionerkeys/%s/tags", organizationID.String(), provisionerKey),
375-
nil,
374+
fmt.Sprintf("/api/v2/provisionerkeys/%s", pk), nil,
375+
func(req *http.Request) {
376+
req.Header.Add(ProvisionerDaemonKey, pk)
377+
},
376378
)
377379
if err != nil {
378-
return nil, xerrors.Errorf("make request: %w", err)
380+
return ProvisionerKey{}, xerrors.Errorf("make request: %w", err)
379381
}
380382
defer res.Body.Close()
381383

382384
if res.StatusCode != http.StatusOK {
383-
return nil, ReadBodyAsError(res)
385+
return ProvisionerKey{}, ReadBodyAsError(res)
384386
}
385-
var resp ProvisionerKeyTags
387+
var resp ProvisionerKey
386388
return resp, json.NewDecoder(res.Body).Decode(&resp)
387389
}
388390

enterprise/coderd/coderd.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,15 @@ func New(ctx context.Context, options *Options) (_ *API, err error) {
339339
r.Get("/", api.groupByOrganization)
340340
})
341341
})
342+
r.Route("/provisionerkeys", func(r chi.Router) {
343+
r.Use(
344+
httpmw.ExtractProvisionerDaemonAuthenticated(httpmw.ExtractProvisionerAuthConfig{
345+
DB: api.Database,
346+
Optional: false,
347+
}),
348+
)
349+
r.Get("/{provisionerkey}", api.getProvisionerKey)
350+
})
342351
r.Route("/organizations/{organization}/provisionerkeys", func(r chi.Router) {
343352
r.Use(
344353
apiKeyMiddleware,
@@ -352,7 +361,6 @@ func New(ctx context.Context, options *Options) (_ *API, err error) {
352361
r.Use(
353362
httpmw.ExtractProvisionerKeyParam(options.Database),
354363
)
355-
r.Get("/tags", api.fetchProvisionerKeyTags)
356364
r.Delete("/", api.deleteProvisionerKey)
357365
})
358366
})

enterprise/coderd/provisionerkeys.go

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -200,35 +200,42 @@ func (api *API) deleteProvisionerKey(rw http.ResponseWriter, r *http.Request) {
200200
httpapi.Write(ctx, rw, http.StatusNoContent, nil)
201201
}
202202

203-
// @Summary Get provisioner key tags by ID
204-
// @ID get-provisioner-key-tags-by-id
205-
// @Security CoderSessionToken
203+
// @Summary Get provisioner key details
204+
// @ID get-provisioner-key
205+
// @Security CoderProvisionerDaemonKey
206206
// @Produce json
207207
// @Tags Enterprise
208-
// @Param organization path string true "Organization ID"
209208
// @Param provisionerkey path string true "Provisioner Key"
210-
// @Success 200 {object} codersdk.ProvisionerKeyTags
211-
// @Router /organizations/{organization}/provisionerkeys/{provisionerkey}/tags [get]
212-
func (*API) fetchProvisionerKeyTags(rw http.ResponseWriter, r *http.Request) {
213-
var (
214-
ctx = r.Context()
215-
pk = httpmw.ProvisionerKeyParam(r)
216-
)
217-
218-
httpapi.Write(ctx, rw, http.StatusOK, codersdk.ProvisionerKeyTags(pk.Tags))
209+
// @Success 200 {object} codersdk.ProvisionerKey
210+
// @Router provisionerkeys/{provisionerkey} [get]
211+
func (*API) getProvisionerKey(rw http.ResponseWriter, r *http.Request) {
212+
ctx := r.Context()
213+
214+
pk, ok := httpmw.ProvisionerKeyAuthOptional(r)
215+
// extra check but this one should never happen as it is covered by the auth middleware
216+
if !ok {
217+
httpapi.Forbidden(rw)
218+
return
219+
}
220+
221+
httpapi.Write(ctx, rw, http.StatusOK, convertProvisionerKey(pk))
222+
}
223+
224+
func convertProvisionerKey(dbKey database.ProvisionerKey) codersdk.ProvisionerKey {
225+
return codersdk.ProvisionerKey{
226+
ID: dbKey.ID,
227+
CreatedAt: dbKey.CreatedAt,
228+
OrganizationID: dbKey.OrganizationID,
229+
Name: dbKey.Name,
230+
Tags: codersdk.ProvisionerKeyTags(dbKey.Tags),
231+
// HashedSecret - never include the access token in the API response
232+
}
219233
}
220234

221235
func convertProvisionerKeys(dbKeys []database.ProvisionerKey) []codersdk.ProvisionerKey {
222236
keys := make([]codersdk.ProvisionerKey, 0, len(dbKeys))
223237
for _, dbKey := range dbKeys {
224-
keys = append(keys, codersdk.ProvisionerKey{
225-
ID: dbKey.ID,
226-
CreatedAt: dbKey.CreatedAt,
227-
OrganizationID: dbKey.OrganizationID,
228-
Name: dbKey.Name,
229-
Tags: codersdk.ProvisionerKeyTags(dbKey.Tags),
230-
// HashedSecret - never include the access token in the API response
231-
})
238+
keys = append(keys, convertProvisionerKey(dbKey))
232239
}
233240

234241
slices.SortFunc(keys, func(key1, key2 codersdk.ProvisionerKey) int {

enterprise/coderd/provisionerkeys_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@ func TestProvisionerKeys(t *testing.T) {
134134
require.ErrorContains(t, err, "reserved")
135135
}
136136

137-
func TestProvisionerKeyTags(t *testing.T) {
137+
func TestProvisionerKey(t *testing.T) {
138138
t.Parallel()
139-
t.Run("GetTags", func(t *testing.T) {
139+
t.Run("GetKey", func(t *testing.T) {
140140
t.Parallel()
141141

142-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong*10)
142+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
143143
t.Cleanup(cancel)
144144
dv := coderdtest.DeploymentValues(t)
145145
client, owner := coderdenttest.New(t, &coderdenttest.Options{
@@ -153,18 +153,18 @@ func TestProvisionerKeyTags(t *testing.T) {
153153
},
154154
})
155155

156-
//nolint:gocritic // Not the purpose of this test
157-
_, err := client.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
158-
Name: "key",
156+
key, err := client.CreateProvisionerKey(ctx, owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
157+
Name: "my-test-key",
159158
Tags: map[string]string{"key1": "value1", "key2": "value2"},
160159
})
161160
require.NoError(t, err)
162161

163-
tags, err := client.FetchProvisionerTagsByKey(ctx, owner.OrganizationID, "key")
162+
_, err = client.GetProvisionerKey(ctx, key.Key)
164163
require.NoError(t, err)
165-
require.Equal(t, tags, codersdk.ProvisionerKeyTags{"key1": "value1", "key2": "value2"})
164+
// require.Equal(t, tags, codersdk.ProvisionerKeyTags{"key1": "value1", "key2": "value2"})
166165

167-
_, err = client.FetchProvisionerTagsByKey(ctx, owner.OrganizationID, "invalid_key")
168-
require.ErrorContains(t, err, "Resource not found")
166+
erroneousPK, err := client.GetProvisionerKey(ctx, "abcdefghijklmnopqrstuvwxyz01234567890123456")
167+
require.Empty(t, erroneousPK)
168+
require.Error(t, err)
169169
})
170170
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

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

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


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy