Skip to content

Commit c773873

Browse files
committed
chore: add template resource trace logging
1 parent 9b0c900 commit c773873

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

internal/provider/template_resource.go

+30
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@ func (r *TemplateResource) Create(ctx context.Context, req resource.CreateReques
352352
return
353353
}
354354
if idx == 0 {
355+
tflog.Trace(ctx, "creating template")
355356
templateResp, err = client.CreateTemplate(ctx, orgID, codersdk.CreateTemplateRequest{
356357
Name: data.Name.ValueString(),
357358
DisplayName: data.DisplayName.ValueString(),
@@ -366,21 +367,31 @@ func (r *TemplateResource) Create(ctx context.Context, req resource.CreateReques
366367
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Failed to create template: %s", err))
367368
return
368369
}
370+
tflog.Trace(ctx, "successfully created template", map[string]any{
371+
"id": templateResp.ID,
372+
})
369373

374+
tflog.Trace(ctx, "updating template ACL")
370375
err = client.UpdateTemplateACL(ctx, templateResp.ID, convertACLToRequest(data.ACL))
371376
if err != nil {
372377
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Failed to update template ACL: %s", err))
373378
return
374379
}
380+
tflog.Trace(ctx, "successfully updated template ACL")
375381
}
376382
if version.Active.ValueBool() {
383+
tflog.Trace(ctx, "marking template version as active", map[string]any{
384+
"version_id": versionResp.ID,
385+
"template_id": templateResp.ID,
386+
})
377387
err := client.UpdateActiveTemplateVersion(ctx, templateResp.ID, codersdk.UpdateActiveTemplateVersion{
378388
ID: versionResp.ID,
379389
})
380390
if err != nil {
381391
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Failed to set active template version: %s", err))
382392
return
383393
}
394+
tflog.Trace(ctx, "marked template version as active")
384395
}
385396
data.Versions[idx].ID = UUIDValue(versionResp.ID)
386397
data.Versions[idx].Name = types.StringValue(versionResp.Name)
@@ -478,6 +489,7 @@ func (r *TemplateResource) Update(ctx context.Context, req resource.UpdateReques
478489
client := r.data.Client
479490

480491
if !planState.EqualTemplateMetadata(curState) {
492+
tflog.Trace(ctx, "change in template metadata detected, updating.")
481493
_, err := client.UpdateTemplateMeta(ctx, templateID, codersdk.UpdateTemplateMeta{
482494
Name: planState.Name.ValueString(),
483495
DisplayName: planState.DisplayName.ValueString(),
@@ -491,11 +503,13 @@ func (r *TemplateResource) Update(ctx context.Context, req resource.UpdateReques
491503
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Failed to update template: %s", err))
492504
return
493505
}
506+
tflog.Trace(ctx, "successfully updated template metadata")
494507
err = client.UpdateTemplateACL(ctx, templateID, convertACLToRequest(planState.ACL))
495508
if err != nil {
496509
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Failed to update template ACL: %s", err))
497510
return
498511
}
512+
tflog.Trace(ctx, "successfully updated template ACL")
499513
}
500514

501515
for idx, plannedVersion := range planState.Versions {
@@ -504,6 +518,7 @@ func (r *TemplateResource) Update(ctx context.Context, req resource.UpdateReques
504518
foundVersion := curState.Versions.ByID(plannedVersion.ID)
505519
// If the version is new, or if the directory hash has changed, create a new version
506520
if foundVersion == nil || foundVersion.DirectoryHash != plannedVersion.DirectoryHash {
521+
tflog.Trace(ctx, "discovered a new or modified template version")
507522
versionResp, err := newVersion(ctx, client, newVersionRequest{
508523
Version: &plannedVersion,
509524
OrganizationID: orgID,
@@ -524,13 +539,18 @@ func (r *TemplateResource) Update(ctx context.Context, req resource.UpdateReques
524539
return
525540
}
526541
if plannedVersion.Active.ValueBool() {
542+
tflog.Trace(ctx, "marking template version as active", map[string]any{
543+
"version_id": versionResp.ID,
544+
"template_id": templateID,
545+
})
527546
err := client.UpdateActiveTemplateVersion(ctx, templateID, codersdk.UpdateActiveTemplateVersion{
528547
ID: versionResp.ID,
529548
})
530549
if err != nil {
531550
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Failed to update active template version: %s", err))
532551
return
533552
}
553+
tflog.Trace(ctx, "marked template version as active")
534554
}
535555
planState.Versions[idx].ID = UUIDValue(versionResp.ID)
536556
}
@@ -553,6 +573,7 @@ func (r *TemplateResource) Delete(ctx context.Context, req resource.DeleteReques
553573

554574
templateID := data.ID.ValueUUID()
555575

576+
tflog.Trace(ctx, "deleting template")
556577
err := client.DeleteTemplate(ctx, templateID)
557578
if err != nil {
558579
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Failed to delete template: %s", err))
@@ -712,11 +733,14 @@ type newVersionRequest struct {
712733

713734
func newVersion(ctx context.Context, client *codersdk.Client, req newVersionRequest) (*codersdk.TemplateVersion, error) {
714735
directory := req.Version.Directory.ValueString()
736+
tflog.Trace(ctx, "uploading directory")
715737
uploadResp, err := uploadDirectory(ctx, client, slog.Make(newTFLogSink(ctx)), directory)
716738
if err != nil {
717739
return nil, fmt.Errorf("failed to upload directory: %s", err)
718740
}
741+
tflog.Trace(ctx, "successfully uploaded directory")
719742
// TODO(ethanndickson): Uncomment when a released `codersdk` exports template variable parsing
743+
// tflog.Trace(ctx,"discovering and parsing vars files")
720744
// varFiles, err := codersdk.DiscoverVarsFiles(directory)
721745
// if err != nil {
722746
// return nil, fmt.Errorf("failed to discover vars files: %s", err)
@@ -725,6 +749,9 @@ func newVersion(ctx context.Context, client *codersdk.Client, req newVersionRequ
725749
// if err != nil {
726750
// return nil, fmt.Errorf("failed to parse user variable values: %s", err)
727751
// }
752+
// tflog.Trace(ctx,"discovered and parsed vars files", map[string]any{
753+
// "vars": vars,
754+
// })
728755
vars := make([]codersdk.VariableValue, 0, len(req.Version.TerraformVariables))
729756
for _, variable := range req.Version.TerraformVariables {
730757
vars = append(vars, codersdk.VariableValue{
@@ -743,14 +770,17 @@ func newVersion(ctx context.Context, client *codersdk.Client, req newVersionRequ
743770
if req.TemplateID != nil {
744771
tmplVerReq.TemplateID = *req.TemplateID
745772
}
773+
tflog.Trace(ctx, "creating template version")
746774
versionResp, err := client.CreateTemplateVersion(ctx, req.OrganizationID, tmplVerReq)
747775
if err != nil {
748776
return nil, fmt.Errorf("failed to create template version: %s", err)
749777
}
778+
tflog.Trace(ctx, "waiting for template version import job.")
750779
err = waitForJob(ctx, client, &versionResp)
751780
if err != nil {
752781
return nil, fmt.Errorf("failed to wait for job: %s", err)
753782
}
783+
tflog.Trace(ctx, "successfully created template version")
754784
return &versionResp, nil
755785
}
756786

internal/provider/template_resource_test.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package provider
22

33
import (
44
"context"
5+
"os"
56
"regexp"
67
"slices"
78
"strings"
@@ -15,6 +16,9 @@ import (
1516
)
1617

1718
func TestAccTemplateResource(t *testing.T) {
19+
if os.Getenv("TF_ACC") == "" {
20+
t.Skip("Acceptance tests are disabled.")
21+
}
1822
ctx := context.Background()
1923
client := integration.StartCoder(ctx, t, "template_acc", true)
2024
firstUser, err := client.User(ctx, codersdk.Me)
@@ -84,7 +88,6 @@ func TestAccTemplateResource(t *testing.T) {
8488
cfg6.Versions = slices.Clone(cfg6.Versions[1:])
8589

8690
resource.Test(t, resource.TestCase{
87-
IsUnitTest: true,
8891
PreCheck: func() { testAccPreCheck(t) },
8992
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
9093
Steps: []resource.TestStep{

0 commit comments

Comments
 (0)