Skip to content

Commit cdd103b

Browse files
committed
clean up
1 parent f0f90fc commit cdd103b

File tree

4 files changed

+109
-92
lines changed

4 files changed

+109
-92
lines changed

coderd/templateversions.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import (
4242
sdkproto "github.com/coder/coder/v2/provisionersdk/proto"
4343
"github.com/coder/preview"
4444
previewtypes "github.com/coder/preview/types"
45-
previewweb "github.com/coder/preview/web"
4645
"github.com/coder/websocket"
4746
)
4847

@@ -347,11 +346,11 @@ func (api *API) templateVersionDynamicParameters(rw http.ResponseWriter, r *http
347346
return
348347
}
349348

350-
stream := wsjson.NewStream[previewweb.Request, previewweb.Response](conn, websocket.MessageText, websocket.MessageText, api.Logger)
349+
stream := wsjson.NewStream[codersdk.DynamicParametersRequest, codersdk.DynamicParametersResponse](conn, websocket.MessageText, websocket.MessageText, api.Logger)
351350

352351
// Send an initial form state, computed without any user input.
353352
result, diagnostics := preview.Preview(ctx, input, fs)
354-
response := previewweb.Response{
353+
response := codersdk.DynamicParametersResponse{
355354
ID: -1,
356355
Diagnostics: previewtypes.Diagnostics(diagnostics),
357356
}
@@ -371,7 +370,7 @@ func (api *API) templateVersionDynamicParameters(rw http.ResponseWriter, r *http
371370
case update := <-updates:
372371
input.ParameterValues = update.Inputs
373372
result, diagnostics := preview.Preview(ctx, input, fs)
374-
response := previewweb.Response{
373+
response := codersdk.DynamicParametersResponse{
375374
ID: update.ID,
376375
Diagnostics: previewtypes.Diagnostics(diagnostics),
377376
}

coderd/templateversions_test.go

Lines changed: 73 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/coder/coder/v2/provisionersdk"
2828
"github.com/coder/coder/v2/provisionersdk/proto"
2929
"github.com/coder/coder/v2/testutil"
30+
"github.com/coder/websocket"
3031
)
3132

3233
func TestTemplateVersion(t *testing.T) {
@@ -2256,75 +2257,75 @@ const dynamicParametersTerraformPlan = `
22562257
}
22572258
`
22582259

2259-
// func TestTemplateVersionDynamicParameters(t *testing.T) {
2260-
// t.Parallel()
2261-
2262-
// ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
2263-
// owner := coderdtest.CreateFirstUser(t, ownerClient)
2264-
// templateAdmin, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
2265-
2266-
// files := echo.WithExtraFiles(map[string][]byte{
2267-
// "main.tf": []byte(dynamicParametersTerraformSource),
2268-
// })
2269-
// files.ProvisionPlan = []*proto.Response{{
2270-
// Type: &proto.Response_Plan{
2271-
// Plan: &proto.PlanComplete{
2272-
// Plan: []byte(dynamicParametersTerraformPlan),
2273-
// },
2274-
// },
2275-
// }}
2276-
2277-
// version := coderdtest.CreateTemplateVersion(t, templateAdmin, owner.OrganizationID, files)
2278-
// coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID)
2279-
// _ = coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID)
2280-
2281-
// ctx := testutil.Context(t, testutil.WaitShort)
2282-
// stream, err := templateAdmin.TemplateVersionDynamicParameters(ctx, version.ID)
2283-
// require.NoError(t, err)
2284-
// defer stream.Close(websocket.StatusGoingAway)
2285-
2286-
// previews := stream.Chan()
2287-
2288-
// // Should automatically send a form state with all defaulted/empty values
2289-
// preview := testutil.RequireRecvCtx(ctx, t, previews)
2290-
// require.Empty(t, preview.Diagnostics)
2291-
// require.Equal(t, "group", preview.Parameters[0].Name)
2292-
// require.True(t, preview.Parameters[0].Value.Valid())
2293-
// require.Equal(t, "Everyone", preview.Parameters[0].Value.Value.AsString())
2294-
2295-
// // Send a new value, and see it reflected
2296-
// stream.Send(codersdk.DynamicParametersRequest{
2297-
// ID: 1,
2298-
// Inputs: map[string]string{"group": "Bloob"},
2299-
// })
2300-
// preview = testutil.RequireRecvCtx(ctx, t, previews)
2301-
// require.Equal(t, 1, preview.ID)
2302-
// require.Empty(t, preview.Diagnostics)
2303-
// require.Equal(t, "group", preview.Parameters[0].Name)
2304-
// require.True(t, preview.Parameters[0].Value.Valid())
2305-
// require.Equal(t, "Bloob", preview.Parameters[0].Value.Value.AsString())
2306-
2307-
// // Send an invalid value, expect a diagnostic
2308-
// stream.Send(codersdk.DynamicParametersRequest{
2309-
// ID: 2,
2310-
// Inputs: map[string]string{"group": "Invalid"},
2311-
// })
2312-
// preview = testutil.RequireRecvCtx(ctx, t, previews)
2313-
// require.Equal(t, 2, preview.ID)
2314-
// // require.NotEmpty(t, preview.Diagnostics)
2315-
// require.Equal(t, "group", preview.Parameters[0].Name)
2316-
// require.True(t, preview.Parameters[0].Value.Valid())
2317-
// require.Equal(t, "Invalid", preview.Parameters[0].Value.Value.AsString())
2318-
2319-
// // Back to default
2320-
// stream.Send(codersdk.DynamicParametersRequest{
2321-
// ID: 3,
2322-
// Inputs: map[string]string{},
2323-
// })
2324-
// preview = testutil.RequireRecvCtx(ctx, t, previews)
2325-
// require.Equal(t, 3, preview.ID)
2326-
// require.Empty(t, preview.Diagnostics)
2327-
// require.Equal(t, "group", preview.Parameters[0].Name)
2328-
// require.True(t, preview.Parameters[0].Value.Valid())
2329-
// require.Equal(t, "Everyone", preview.Parameters[0].Value.Value.AsString())
2330-
// }
2260+
func TestTemplateVersionDynamicParameters(t *testing.T) {
2261+
t.Parallel()
2262+
2263+
ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
2264+
owner := coderdtest.CreateFirstUser(t, ownerClient)
2265+
templateAdmin, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
2266+
2267+
files := echo.WithExtraFiles(map[string][]byte{
2268+
"main.tf": []byte(dynamicParametersTerraformSource),
2269+
})
2270+
files.ProvisionPlan = []*proto.Response{{
2271+
Type: &proto.Response_Plan{
2272+
Plan: &proto.PlanComplete{
2273+
Plan: []byte(dynamicParametersTerraformPlan),
2274+
},
2275+
},
2276+
}}
2277+
2278+
version := coderdtest.CreateTemplateVersion(t, templateAdmin, owner.OrganizationID, files)
2279+
coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID)
2280+
_ = coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID)
2281+
2282+
ctx := testutil.Context(t, testutil.WaitShort)
2283+
stream, err := templateAdmin.TemplateVersionDynamicParameters(ctx, version.ID)
2284+
require.NoError(t, err)
2285+
defer stream.Close(websocket.StatusGoingAway)
2286+
2287+
previews := stream.Chan()
2288+
2289+
// Should automatically send a form state with all defaulted/empty values
2290+
preview := testutil.RequireRecvCtx(ctx, t, previews)
2291+
require.Empty(t, preview.Diagnostics)
2292+
require.Equal(t, "group", preview.Parameters[0].Name)
2293+
require.True(t, preview.Parameters[0].Value.Valid())
2294+
require.Equal(t, "Everyone", preview.Parameters[0].Value.Value.AsString())
2295+
2296+
// Send a new value, and see it reflected
2297+
stream.Send(codersdk.DynamicParametersRequest{
2298+
ID: 1,
2299+
Inputs: map[string]string{"group": "Bloob"},
2300+
})
2301+
preview = testutil.RequireRecvCtx(ctx, t, previews)
2302+
require.Equal(t, 1, preview.ID)
2303+
require.Empty(t, preview.Diagnostics)
2304+
require.Equal(t, "group", preview.Parameters[0].Name)
2305+
require.True(t, preview.Parameters[0].Value.Valid())
2306+
require.Equal(t, "Bloob", preview.Parameters[0].Value.Value.AsString())
2307+
2308+
// Send an invalid value, expect a diagnostic
2309+
stream.Send(codersdk.DynamicParametersRequest{
2310+
ID: 2,
2311+
Inputs: map[string]string{"group": "Invalid"},
2312+
})
2313+
preview = testutil.RequireRecvCtx(ctx, t, previews)
2314+
require.Equal(t, 2, preview.ID)
2315+
// require.NotEmpty(t, preview.Diagnostics)
2316+
require.Equal(t, "group", preview.Parameters[0].Name)
2317+
require.True(t, preview.Parameters[0].Value.Valid())
2318+
require.Equal(t, "Invalid", preview.Parameters[0].Value.Value.AsString())
2319+
2320+
// Back to default
2321+
stream.Send(codersdk.DynamicParametersRequest{
2322+
ID: 3,
2323+
Inputs: map[string]string{},
2324+
})
2325+
preview = testutil.RequireRecvCtx(ctx, t, previews)
2326+
require.Equal(t, 3, preview.ID)
2327+
require.Empty(t, preview.Diagnostics)
2328+
require.Equal(t, "group", preview.Parameters[0].Name)
2329+
require.True(t, preview.Parameters[0].Value.Valid())
2330+
require.Equal(t, "Everyone", preview.Parameters[0].Value.Value.AsString())
2331+
}

codersdk/templateversions.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/google/uuid"
1212

1313
"github.com/coder/coder/v2/codersdk/wsjson"
14+
previewtypes "github.com/coder/preview/types"
1415
"github.com/coder/websocket"
1516
)
1617

@@ -126,26 +127,26 @@ func (c *Client) CancelTemplateVersion(ctx context.Context, version uuid.UUID) e
126127
return nil
127128
}
128129

129-
// type DynamicParametersRequest struct {
130-
// // ID identifies the request. The response contains the same
131-
// // ID so that the client can match it to the request.
132-
// ID int `json:"id"`
133-
// // Inputs map[string]string `json:"inputs"`
134-
// }
135-
136-
// type DynamicParametersResponse struct {
137-
// ID int `json:"id"`
138-
// // Diagnostics previewtypes.Diagnostics `json:"diagnostics"`
139-
// // Parameters []previewtypes.Parameter `json:"parameters"`
140-
// // TODO: Workspace tags
141-
// }
142-
143-
func (c *Client) TemplateVersionDynamicParameters(ctx context.Context, version uuid.UUID) (*wsjson.Stream[interface{}, interface{}], error) {
130+
type DynamicParametersRequest struct {
131+
// ID identifies the request. The response contains the same
132+
// ID so that the client can match it to the request.
133+
ID int `json:"id"`
134+
Inputs map[string]string `json:"inputs"`
135+
}
136+
137+
type DynamicParametersResponse struct {
138+
ID int `json:"id"`
139+
Diagnostics previewtypes.Diagnostics `json:"diagnostics"`
140+
Parameters []previewtypes.Parameter `json:"parameters"`
141+
// TODO: Workspace tags
142+
}
143+
144+
func (c *Client) TemplateVersionDynamicParameters(ctx context.Context, version uuid.UUID) (*wsjson.Stream[DynamicParametersResponse, DynamicParametersRequest], error) {
144145
conn, err := c.Dial(ctx, fmt.Sprintf("/api/v2/templateversions/%s/dynamic-parameters", version), nil)
145146
if err != nil {
146147
return nil, err
147148
}
148-
return wsjson.NewStream[interface{}, interface{}](conn, websocket.MessageText, websocket.MessageText, c.Logger()), nil
149+
return wsjson.NewStream[DynamicParametersResponse, DynamicParametersRequest](conn, websocket.MessageText, websocket.MessageText, c.Logger()), nil
149150
}
150151

151152
// TemplateVersionParameters returns parameters a template version exposes.

site/src/api/typesGenerated.ts

Lines changed: 16 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)