Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 45350bc

Browse files
committed
Merge remote-tracking branch 'origin/main' into stevenmasley/template_dyn_param_toggle
2 parents 6a49f68 + 9093dbc commit 45350bc

19 files changed

+188
-91
lines changed

coderd/coderd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1774,6 +1774,7 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
17741774
logger := api.Logger.Named(fmt.Sprintf("inmem-provisionerd-%s", name))
17751775
srv, err := provisionerdserver.NewServer(
17761776
api.ctx, // use the same ctx as the API
1777+
daemon.APIVersion,
17771778
api.AccessURL,
17781779
daemon.ID,
17791780
defaultOrg.ID,

coderd/database/dbgen/dbgen.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/coder/coder/v2/coderd/rbac"
3030
"github.com/coder/coder/v2/codersdk"
3131
"github.com/coder/coder/v2/cryptorand"
32+
"github.com/coder/coder/v2/provisionerd/proto"
3233
"github.com/coder/coder/v2/testutil"
3334
)
3435

@@ -1000,10 +1001,11 @@ func TemplateVersionTerraformValues(t testing.TB, db database.Store, orig databa
10001001
t.Helper()
10011002

10021003
params := database.InsertTemplateVersionTerraformValuesByJobIDParams{
1003-
JobID: takeFirst(orig.JobID, uuid.New()),
1004-
CachedPlan: takeFirstSlice(orig.CachedPlan, []byte("{}")),
1005-
CachedModuleFiles: orig.CachedModuleFiles,
1006-
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
1004+
JobID: takeFirst(orig.JobID, uuid.New()),
1005+
CachedPlan: takeFirstSlice(orig.CachedPlan, []byte("{}")),
1006+
CachedModuleFiles: orig.CachedModuleFiles,
1007+
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
1008+
ProvisionerdVersion: takeFirst(orig.ProvisionerdVersion, proto.CurrentVersion.String()),
10071009
}
10081010

10091011
err := db.InsertTemplateVersionTerraformValuesByJobID(genCtx, params)

coderd/database/dbmem/dbmem.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9343,10 +9343,11 @@ func (q *FakeQuerier) InsertTemplateVersionTerraformValuesByJobID(_ context.Cont
93439343

93449344
// Insert the new row
93459345
row := database.TemplateVersionTerraformValue{
9346-
TemplateVersionID: templateVersion.ID,
9347-
CachedPlan: arg.CachedPlan,
9348-
CachedModuleFiles: arg.CachedModuleFiles,
9349-
UpdatedAt: arg.UpdatedAt,
9346+
TemplateVersionID: templateVersion.ID,
9347+
UpdatedAt: arg.UpdatedAt,
9348+
CachedPlan: arg.CachedPlan,
9349+
CachedModuleFiles: arg.CachedModuleFiles,
9350+
ProvisionerdVersion: arg.ProvisionerdVersion,
93509351
}
93519352
q.templateVersionTerraformValues = append(q.templateVersionTerraformValues, row)
93529353
return nil

coderd/database/dump.sql

Lines changed: 4 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 template_version_terraform_values DROP COLUMN provisionerd_version;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ALTER TABLE template_version_terraform_values ADD COLUMN IF NOT EXISTS provisionerd_version TEXT NOT NULL DEFAULT '';
2+
3+
COMMENT ON COLUMN template_version_terraform_values.provisionerd_version IS
4+
'What version of the provisioning engine was used to generate the cached plan and module files.';

coderd/database/models.go

Lines changed: 2 additions & 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 & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templateversionterraformvalues.sql

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ INSERT INTO
1212
template_version_id,
1313
cached_plan,
1414
cached_module_files,
15-
updated_at
15+
updated_at,
16+
provisionerd_version
1617
)
1718
VALUES
1819
(
1920
(select id from template_versions where job_id = @job_id),
2021
@cached_plan,
2122
@cached_module_files,
22-
@updated_at
23+
@updated_at,
24+
@provisionerd_version
2325
);

coderd/files/overlay.go

Lines changed: 17 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@ import (
44
"io/fs"
55
"path"
66
"strings"
7-
8-
"golang.org/x/xerrors"
97
)
108

11-
// overlayFS allows you to "join" together the template files tar file fs.FS
12-
// with the Terraform modules tar file fs.FS. We could potentially turn this
13-
// into something more parameterized/configurable, but the requirements here are
14-
// a _bit_ odd, because every file in the modulesFS includes the
15-
// .terraform/modules/ folder at the beginning of it's path.
9+
// overlayFS allows you to "join" together multiple fs.FS. Files in any specific
10+
// overlay will only be accessible if their path starts with the base path
11+
// provided for the overlay. eg. An overlay at the path .terraform/modules
12+
// should contain files with paths inside the .terraform/modules folder.
1613
type overlayFS struct {
1714
baseFS fs.FS
1815
overlays []Overlay
@@ -23,64 +20,32 @@ type Overlay struct {
2320
fs.FS
2421
}
2522

26-
func NewOverlayFS(baseFS fs.FS, overlays []Overlay) (fs.FS, error) {
27-
if err := valid(baseFS); err != nil {
28-
return nil, xerrors.Errorf("baseFS: %w", err)
29-
}
30-
31-
for _, overlay := range overlays {
32-
if err := valid(overlay.FS); err != nil {
33-
return nil, xerrors.Errorf("overlayFS: %w", err)
34-
}
35-
}
36-
23+
func NewOverlayFS(baseFS fs.FS, overlays []Overlay) fs.FS {
3724
return overlayFS{
3825
baseFS: baseFS,
3926
overlays: overlays,
40-
}, nil
27+
}
4128
}
4229

43-
func (f overlayFS) Open(p string) (fs.File, error) {
30+
func (f overlayFS) target(p string) fs.FS {
31+
target := f.baseFS
4432
for _, overlay := range f.overlays {
4533
if strings.HasPrefix(path.Clean(p), overlay.Path) {
46-
return overlay.FS.Open(p)
34+
target = overlay.FS
35+
break
4736
}
4837
}
49-
return f.baseFS.Open(p)
38+
return target
5039
}
5140

52-
func (f overlayFS) ReadDir(p string) ([]fs.DirEntry, error) {
53-
for _, overlay := range f.overlays {
54-
if strings.HasPrefix(path.Clean(p), overlay.Path) {
55-
//nolint:forcetypeassert
56-
return overlay.FS.(fs.ReadDirFS).ReadDir(p)
57-
}
58-
}
59-
//nolint:forcetypeassert
60-
return f.baseFS.(fs.ReadDirFS).ReadDir(p)
41+
func (f overlayFS) Open(p string) (fs.File, error) {
42+
return f.target(p).Open(p)
6143
}
6244

63-
func (f overlayFS) ReadFile(p string) ([]byte, error) {
64-
for _, overlay := range f.overlays {
65-
if strings.HasPrefix(path.Clean(p), overlay.Path) {
66-
//nolint:forcetypeassert
67-
return overlay.FS.(fs.ReadFileFS).ReadFile(p)
68-
}
69-
}
70-
//nolint:forcetypeassert
71-
return f.baseFS.(fs.ReadFileFS).ReadFile(p)
45+
func (f overlayFS) ReadDir(p string) ([]fs.DirEntry, error) {
46+
return fs.ReadDir(f.target(p), p)
7247
}
7348

74-
// valid checks that the fs.FS implements the required interfaces.
75-
// The fs.FS interface is not sufficient.
76-
func valid(fsys fs.FS) error {
77-
_, ok := fsys.(fs.ReadDirFS)
78-
if !ok {
79-
return xerrors.New("overlayFS does not implement ReadDirFS")
80-
}
81-
_, ok = fsys.(fs.ReadFileFS)
82-
if !ok {
83-
return xerrors.New("overlayFS does not implement ReadFileFS")
84-
}
85-
return nil
49+
func (f overlayFS) ReadFile(p string) ([]byte, error) {
50+
return fs.ReadFile(f.target(p), p)
8651
}

0 commit comments

Comments
 (0)