Skip to content

Commit a9f1a6b

Browse files
authored
fix: revert fix: persist terraform modules during template import (#17665) (#17734)
This reverts commit ae3d90b.
1 parent ae3d90b commit a9f1a6b

27 files changed

+229
-587
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ site/stats/
5050
*.tfplan
5151
*.lock.hcl
5252
.terraform/
53-
!provisioner/terraform/testdata/modules-source-caching/.terraform/
5453

5554
**/.coderv2/*
5655
**/__debug_bin

cli/testdata/coder_provisioner_list_--output_json.golden

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"last_seen_at": "====[timestamp]=====",
88
"name": "test",
99
"version": "v0.0.0-devel",
10-
"api_version": "1.5",
10+
"api_version": "1.4",
1111
"provisioners": [
1212
"echo"
1313
],

coderd/database/dbauthz/dbauthz.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,21 @@ import (
1212
"time"
1313

1414
"github.com/google/uuid"
15-
"github.com/open-policy-agent/opa/topdown"
1615
"golang.org/x/xerrors"
1716

17+
"github.com/open-policy-agent/opa/topdown"
18+
1819
"cdr.dev/slog"
1920

21+
"github.com/coder/coder/v2/coderd/prebuilds"
22+
"github.com/coder/coder/v2/coderd/rbac/policy"
23+
"github.com/coder/coder/v2/coderd/rbac/rolestore"
24+
2025
"github.com/coder/coder/v2/coderd/database"
2126
"github.com/coder/coder/v2/coderd/database/dbtime"
2227
"github.com/coder/coder/v2/coderd/httpapi/httpapiconstraints"
2328
"github.com/coder/coder/v2/coderd/httpmw/loggermw"
24-
"github.com/coder/coder/v2/coderd/prebuilds"
2529
"github.com/coder/coder/v2/coderd/rbac"
26-
"github.com/coder/coder/v2/coderd/rbac/policy"
27-
"github.com/coder/coder/v2/coderd/rbac/rolestore"
2830
"github.com/coder/coder/v2/coderd/util/slice"
2931
"github.com/coder/coder/v2/provisionersdk"
3032
)
@@ -345,7 +347,6 @@ var (
345347
rbac.ResourceNotificationPreference.Type: {policy.ActionCreate, policy.ActionUpdate, policy.ActionDelete},
346348
rbac.ResourceNotificationTemplate.Type: {policy.ActionCreate, policy.ActionUpdate, policy.ActionDelete},
347349
rbac.ResourceCryptoKey.Type: {policy.ActionCreate, policy.ActionUpdate, policy.ActionDelete},
348-
rbac.ResourceFile.Type: {policy.ActionCreate, policy.ActionRead},
349350
}),
350351
Org: map[string][]rbac.Permission{},
351352
User: []rbac.Permission{},

coderd/database/dbgen/dbgen.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -999,10 +999,9 @@ func TemplateVersionTerraformValues(t testing.TB, db database.Store, orig databa
999999
t.Helper()
10001000

10011001
params := database.InsertTemplateVersionTerraformValuesByJobIDParams{
1002-
JobID: takeFirst(orig.JobID, uuid.New()),
1003-
CachedPlan: takeFirstSlice(orig.CachedPlan, []byte("{}")),
1004-
CachedModuleFiles: orig.CachedModuleFiles,
1005-
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
1002+
JobID: takeFirst(orig.JobID, uuid.New()),
1003+
CachedPlan: takeFirstSlice(orig.CachedPlan, []byte("{}")),
1004+
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
10061005
}
10071006

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

coderd/database/dbmem/dbmem.go

-1
Original file line numberDiff line numberDiff line change
@@ -9315,7 +9315,6 @@ func (q *FakeQuerier) InsertTemplateVersionTerraformValuesByJobID(_ context.Cont
93159315
row := database.TemplateVersionTerraformValue{
93169316
TemplateVersionID: templateVersion.ID,
93179317
CachedPlan: arg.CachedPlan,
9318-
CachedModuleFiles: arg.CachedModuleFiles,
93199318
UpdatedAt: arg.UpdatedAt,
93209319
}
93219320
q.templateVersionTerraformValues = append(q.templateVersionTerraformValues, row)

coderd/database/dump.sql

+1-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/foreign_key_constraint.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/migrations/000320_terraform_cached_modules.down.sql

-1
This file was deleted.

coderd/database/migrations/000320_terraform_cached_modules.up.sql

-1
This file was deleted.

coderd/database/models.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

+7-20
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templateversionterraformvalues.sql

-2
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,11 @@ INSERT INTO
1111
template_version_terraform_values (
1212
template_version_id,
1313
cached_plan,
14-
cached_module_files,
1514
updated_at
1615
)
1716
VALUES
1817
(
1918
(select id from template_versions where job_id = @job_id),
2019
@cached_plan,
21-
@cached_module_files,
2220
@updated_at
2321
);

coderd/provisionerdserver/provisionerdserver.go

+5-59
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ package provisionerdserver
22

33
import (
44
"context"
5-
"crypto/sha256"
65
"database/sql"
7-
"encoding/hex"
86
"encoding/json"
97
"errors"
108
"fmt"
@@ -52,10 +50,6 @@ import (
5250
sdkproto "github.com/coder/coder/v2/provisionersdk/proto"
5351
)
5452

55-
const (
56-
tarMimeType = "application/x-tar"
57-
)
58-
5953
const (
6054
// DefaultAcquireJobLongPollDur is the time the (deprecated) AcquireJob rpc waits to try to obtain a job before
6155
// canceling and returning an empty job.
@@ -1432,59 +1426,11 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
14321426
return nil, xerrors.Errorf("update template version external auth providers: %w", err)
14331427
}
14341428

1435-
plan := jobType.TemplateImport.Plan
1436-
moduleFiles := jobType.TemplateImport.ModuleFiles
1437-
// If there is a plan, or a module files archive we need to insert a
1438-
// template_version_terraform_values row.
1439-
if len(plan) > 0 || len(moduleFiles) > 0 {
1440-
// ...but the plan and the module files archive are both optional! So
1441-
// we need to fallback to a valid JSON object if the plan was omitted.
1442-
if len(plan) == 0 {
1443-
plan = []byte("{}")
1444-
}
1445-
1446-
// ...and we only want to insert a files row if an archive was provided.
1447-
var fileID uuid.NullUUID
1448-
if len(moduleFiles) > 0 {
1449-
hashBytes := sha256.Sum256(moduleFiles)
1450-
hash := hex.EncodeToString(hashBytes[:])
1451-
1452-
// nolint:gocritic // Requires reading "system" files
1453-
file, err := s.Database.GetFileByHashAndCreator(dbauthz.AsSystemRestricted(ctx), database.GetFileByHashAndCreatorParams{Hash: hash, CreatedBy: uuid.Nil})
1454-
switch {
1455-
case err == nil:
1456-
// This set of modules is already cached, which means we can reuse them
1457-
fileID = uuid.NullUUID{
1458-
Valid: true,
1459-
UUID: file.ID,
1460-
}
1461-
case !xerrors.Is(err, sql.ErrNoRows):
1462-
return nil, xerrors.Errorf("check for cached modules: %w", err)
1463-
default:
1464-
// nolint:gocritic // Requires creating a "system" file
1465-
file, err = s.Database.InsertFile(dbauthz.AsSystemRestricted(ctx), database.InsertFileParams{
1466-
ID: uuid.New(),
1467-
Hash: hash,
1468-
CreatedBy: uuid.Nil,
1469-
CreatedAt: dbtime.Now(),
1470-
Mimetype: tarMimeType,
1471-
Data: moduleFiles,
1472-
})
1473-
if err != nil {
1474-
return nil, xerrors.Errorf("insert template version terraform modules: %w", err)
1475-
}
1476-
fileID = uuid.NullUUID{
1477-
Valid: true,
1478-
UUID: file.ID,
1479-
}
1480-
}
1481-
}
1482-
1483-
err = s.Database.InsertTemplateVersionTerraformValuesByJobID(ctx, database.InsertTemplateVersionTerraformValuesByJobIDParams{
1484-
JobID: jobID,
1485-
UpdatedAt: now,
1486-
CachedPlan: plan,
1487-
CachedModuleFiles: fileID,
1429+
if len(jobType.TemplateImport.Plan) > 0 {
1430+
err := s.Database.InsertTemplateVersionTerraformValuesByJobID(ctx, database.InsertTemplateVersionTerraformValuesByJobIDParams{
1431+
JobID: jobID,
1432+
CachedPlan: jobType.TemplateImport.Plan,
1433+
UpdatedAt: now,
14881434
})
14891435
if err != nil {
14901436
return nil, xerrors.Errorf("insert template version terraform data: %w", err)

provisioner/echo/serve.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ var (
5252
PlanComplete = []*proto.Response{{
5353
Type: &proto.Response_Plan{
5454
Plan: &proto.PlanComplete{
55-
Plan: []byte("{}"),
56-
ModuleFiles: []byte{},
55+
Plan: []byte("{}"),
5756
},
5857
},
5958
}}
@@ -250,7 +249,6 @@ func TarWithOptions(ctx context.Context, logger slog.Logger, responses *Response
250249
Parameters: resp.GetApply().GetParameters(),
251250
ExternalAuthProviders: resp.GetApply().GetExternalAuthProviders(),
252251
Plan: []byte("{}"),
253-
ModuleFiles: []byte{},
254252
}},
255253
})
256254
}

provisioner/terraform/executor.go

-7
Original file line numberDiff line numberDiff line change
@@ -307,20 +307,13 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
307307

308308
graphTimings.ingest(createGraphTimingsEvent(timingGraphComplete))
309309

310-
moduleFiles, err := getModulesArchive(e.workdir)
311-
if err != nil {
312-
// TODO: we probably want to persist this error or make it louder eventually
313-
e.logger.Warn(ctx, "failed to archive terraform modules", slog.Error(err))
314-
}
315-
316310
return &proto.PlanComplete{
317311
Parameters: state.Parameters,
318312
Resources: state.Resources,
319313
ExternalAuthProviders: state.ExternalAuthProviders,
320314
Timings: append(e.timings.aggregate(), graphTimings.aggregate()...),
321315
Presets: state.Presets,
322316
Plan: plan,
323-
ModuleFiles: moduleFiles,
324317
}, nil
325318
}
326319

0 commit comments

Comments
 (0)