Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions coderd/templateversions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,7 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
user := coderdtest.CreateFirstUser(t, client)
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
Parse: echo.ParseComplete,
ProvisionApply: []*proto.Response{{
ProvisionPlan: []*proto.Response{{
Type: &proto.Response_Log{
Log: &proto.Log{},
},
Expand Down Expand Up @@ -793,7 +793,7 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
user := coderdtest.CreateFirstUser(t, client)
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
Parse: echo.ParseComplete,
ProvisionApply: []*proto.Response{{
ProvisionPlan: []*proto.Response{{
Type: &proto.Response_Log{
Log: &proto.Log{},
},
Expand Down
10 changes: 5 additions & 5 deletions coderd/workspacebuilds_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1500,18 +1500,18 @@ func TestPostWorkspaceBuild(t *testing.T) {
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
user := coderdtest.CreateFirstUser(t, client)
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
ProvisionApply: []*proto.Response{
ProvisionPlan: []*proto.Response{
{
Type: &proto.Response_Apply{
Apply: &proto.ApplyComplete{
Error: "failed to import",
Type: &proto.Response_Plan{
Plan: &proto.PlanComplete{
Error: "failed to plan",
},
},
},
},
})
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
version = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)

ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
defer cancel()
Expand Down
84 changes: 31 additions & 53 deletions provisioner/echo/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -403,69 +403,47 @@ func TarWithOptions(ctx context.Context, logger slog.Logger, responses *Response
ExtraFiles: nil,
}
}
// source apply from the graph if graph exists
if responses.ProvisionApply == nil && len(responses.ProvisionGraph) > 0 {
for _, resp := range responses.ProvisionGraph {
if resp.GetLog() != nil {
responses.ProvisionApply = append(responses.ProvisionApply, resp)
continue
}
responses.ProvisionApply = append(responses.ProvisionApply, &proto.Response{
Type: &proto.Response_Apply{Apply: &proto.ApplyComplete{
Error: resp.GetGraph().GetError(),
}},
})
}
}
if responses.ProvisionGraph == nil {
for _, resp := range responses.ProvisionApply {
if resp.GetLog() != nil {
responses.ProvisionGraph = append(responses.ProvisionGraph, resp)
continue
}
responses.ProvisionGraph = append(responses.ProvisionGraph, &proto.Response{
Type: &proto.Response_Graph{Graph: &proto.GraphComplete{
Error: resp.GetApply().GetError(),
}},
})
}

// Apply sane defaults for missing responses.
if responses.Parse == nil {
responses.Parse = ParseComplete
}
if responses.ProvisionInit == nil {
for _, resp := range responses.ProvisionGraph {
if resp.GetLog() != nil {
responses.ProvisionInit = append(responses.ProvisionInit, resp)
continue
}
responses.ProvisionInit = append(responses.ProvisionInit, &proto.Response{
Type: &proto.Response_Init{
Init: &proto.InitComplete{
Error: resp.GetGraph().GetError(),
Timings: nil,
Modules: nil,
ModuleFiles: nil,
ModuleFilesHash: nil,
},
},
},
)
}
responses.ProvisionInit = InitComplete
}
if responses.ProvisionPlan == nil {
responses.ProvisionPlan = PlanComplete

// If a graph response exists, make sure it matches the plan.
for _, resp := range responses.ProvisionGraph {
if resp.GetLog() != nil {
responses.ProvisionPlan = append(responses.ProvisionPlan, resp)
continue
}
responses.ProvisionPlan = append(responses.ProvisionPlan, &proto.Response{
Type: &proto.Response_Plan{Plan: &proto.PlanComplete{
Error: resp.GetGraph().GetError(),
Plan: []byte("{}"),
//nolint:gosec // the number of resources will not exceed int32
AiTaskCount: int32(len(resp.GetGraph().GetAiTasks())),
}},
})
if g := resp.GetGraph(); g != nil {
dailycost := int32(0)
for _, r := range g.GetResources() {
dailycost += r.DailyCost
}
responses.ProvisionPlan = []*proto.Response{{
Type: &proto.Response_Plan{
Plan: &proto.PlanComplete{
Plan: []byte("{}"),
//nolint:gosec // the number of resources will not exceed int32
AiTaskCount: int32(len(g.GetAiTasks())),
DailyCost: dailycost,
},
},
}}
break
}
}
}
if responses.ProvisionApply == nil {
responses.ProvisionApply = ApplyComplete
}
if responses.ProvisionGraph == nil {
responses.ProvisionGraph = GraphComplete
}

for _, resp := range responses.ProvisionPlan {
plan := resp.GetPlan()
Expand Down