Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcefa48c

Browse files
committed
refactor to include internal module
1 parent9de8ce1 commitcefa48c

File tree

6 files changed

+114
-16
lines changed

6 files changed

+114
-16
lines changed

‎coderd/coderdtest/dynamicparameters.go‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ type DynamicParameterTemplateParams struct {
2020
Plan json.RawMessage
2121
ModulesArchive []byte
2222

23+
// ExtraFiles are additional files to include in the template, beyond the MainTF.
24+
ExtraFilesmap[string][]byte
25+
2326
// Uses a zip archive instead of a tar
2427
Zipbool
2528

@@ -36,9 +39,17 @@ type DynamicParameterTemplateParams struct {
3639
funcDynamicParameterTemplate(t*testing.T,client*codersdk.Client,org uuid.UUID,argsDynamicParameterTemplateParams) (codersdk.Template, codersdk.TemplateVersion) {
3740
t.Helper()
3841

39-
files:=echo.WithExtraFiles(map[string][]byte{
42+
// Start with main.tf
43+
extraFiles:=map[string][]byte{
4044
"main.tf": []byte(args.MainTF),
41-
})
45+
}
46+
47+
// Add any additional files
48+
forname,content:=rangeargs.ExtraFiles {
49+
extraFiles[name]=content
50+
}
51+
52+
files:=echo.WithExtraFiles(extraFiles)
4253
files.ProvisionPlan= []*proto.Response{{
4354
Type:&proto.Response_Plan{
4455
Plan:&proto.PlanComplete{

‎provisioner/echo/serve.go‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"os"
99
"path/filepath"
10+
"slices"
1011
"strings"
1112
"text/template"
1213

@@ -359,9 +360,26 @@ func TarWithOptions(ctx context.Context, logger slog.Logger, responses *Response
359360
}
360361
}
361362
}
363+
dirs:= []string{}
362364
forname,content:=rangeresponses.ExtraFiles {
363365
logger.Debug(ctx,"extra file",slog.F("name",name))
364366

367+
// We need to add directories before any files that use them. But, we only need to do this
368+
// once.
369+
dir:=filepath.Dir(name)
370+
ifdir!="."&&!slices.Contains(dirs,dir) {
371+
logger.Debug(ctx,"adding extra file directory",slog.F("dir",dir))
372+
dirs=append(dirs,dir)
373+
err:=writer.WriteHeader(&tar.Header{
374+
Name:dir,
375+
Mode:0o755,
376+
Typeflag:tar.TypeDir,
377+
})
378+
iferr!=nil {
379+
returnnil,err
380+
}
381+
}
382+
365383
err:=writer.WriteHeader(&tar.Header{
366384
Name:name,
367385
Size:int64(len(content)),

‎scaletest/dynamicparameters/run_test.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/prometheus/client_golang/prometheus"
88
"github.com/stretchr/testify/require"
99

10+
"cdr.dev/slog"
1011
"github.com/coder/coder/v2/coderd/coderdtest"
1112
"github.com/coder/coder/v2/scaletest/dynamicparameters"
1213
"github.com/coder/coder/v2/testutil"
@@ -17,6 +18,7 @@ func TestRun(t *testing.T) {
1718
ctx:=testutil.Context(t,testutil.WaitLong)
1819

1920
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
21+
client.SetLogger(testutil.Logger(t).Leveled(slog.LevelDebug))
2022
first:=coderdtest.CreateFirstUser(t,client)
2123
userClient,_:=coderdtest.CreateAnotherUser(t,client,first.OrganizationID)
2224
orgID:=first.OrganizationID
@@ -29,6 +31,7 @@ func TestRun(t *testing.T) {
2931
Plan:nil,
3032
ModulesArchive:nil,
3133
StaticParams:nil,
34+
ExtraFiles:dynamicparameters.GetModuleFiles(),
3235
})
3336

3437
reg:=prometheus.NewRegistry()

‎scaletest/dynamicparameters/template.go‎

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package dynamicparameters
22

33
import (
44
_"embed"
5+
"encoding/json"
56
"strings"
67
"text/template"
78

89
"github.com/coder/coder/v2/cryptorand"
910
)
1011

11-
//go:embedworkspace-template.tf
12+
//go:embedtf/main.tf
1213
vartemplateContentstring
1314

1415
funcTemplateContent() (string,error) {
@@ -29,3 +30,45 @@ func TemplateContent() (string, error) {
2930
}
3031
returnresult.String(),nil
3132
}
33+
34+
//go:embed tf/modules/two/main.tf
35+
varmoduleTwoMainTFstring
36+
37+
// GetModuleFiles returns a map of module files to be used with ExtraFiles
38+
funcGetModuleFiles()map[string][]byte {
39+
// Create the modules.json that Terraform needs to see the module
40+
modulesJSON:=struct {
41+
Modules []struct {
42+
Keystring`json:"Key"`
43+
Sourcestring`json:"Source"`
44+
Dirstring`json:"Dir"`
45+
}`json:"Modules"`
46+
}{
47+
Modules: []struct {
48+
Keystring`json:"Key"`
49+
Sourcestring`json:"Source"`
50+
Dirstring`json:"Dir"`
51+
}{
52+
{
53+
Key:"",
54+
Source:"",
55+
Dir:".",
56+
},
57+
{
58+
Key:"two",
59+
Source:"./modules/two",
60+
Dir:"modules/two",
61+
},
62+
},
63+
}
64+
65+
modulesJSONBytes,err:=json.Marshal(modulesJSON)
66+
iferr!=nil {
67+
panic(err)// This should never happen with static data
68+
}
69+
70+
returnmap[string][]byte{
71+
"modules/two/main.tf": []byte(moduleTwoMainTF),
72+
".terraform/modules/modules.json":modulesJSONBytes,
73+
}
74+
}

‎scaletest/dynamicparameters/workspace-template.tf‎renamed to ‎scaletest/dynamicparameters/tf/main.tf‎

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,10 @@ data "coder_parameter" "one" {
6666
}
6767
}
6868

69-
data"coder_parameter""two" {
69+
module"two" {
70+
source="./modules/two"
7071

71-
name="Two"
72-
display_name="Level Two"
73-
description="This is the second level."
74-
75-
type="string"
76-
form_type="textarea"
77-
order=3
78-
mutable=true
79-
80-
default=trim(data.coder_parameter.one.value,"[\"]")
72+
one_value=data.coder_parameter.one.value
8173
}
8274

8375
data"coder_parameter""three" {
@@ -90,10 +82,10 @@ data "coder_parameter" "three" {
9082
form_type="radio"
9183
order=4
9284
mutable=true
93-
default=local.three_options[data.coder_parameter.two.value][0]
85+
default=local.three_options[module.two.two_value][0]
9486

9587
dynamic"option" {
96-
for_each=local.three_options[data.coder_parameter.two.value]
88+
for_each=local.three_options[module.two.two_value]
9789
content {
9890
name=option.value
9991
value=option.value
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
terraform {
2+
required_providers {
3+
coder={
4+
source="coder/coder"
5+
version="2.5.3"
6+
}
7+
}
8+
}
9+
10+
variable"one_value" {
11+
description="The value from the 'one' parameter"
12+
type=string
13+
}
14+
15+
data"coder_parameter""two" {
16+
name="Two"
17+
display_name="Level Two"
18+
description="This is the second level."
19+
20+
type="string"
21+
form_type="textarea"
22+
order=3
23+
mutable=true
24+
25+
default=trim(var.one_value,"[\"]")
26+
}
27+
28+
output"two_value" {
29+
description="The value of the 'two' parameter"
30+
value=data.coder_parameter.two.value
31+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp