From 3c9c8be9f1b81aa8819af133d3fa86e5accde4a6 Mon Sep 17 00:00:00 2001 From: ayajirob Date: Tue, 7 Apr 2026 20:24:12 +0300 Subject: [PATCH] Migrate github_branch_default to context-aware CRUD and tflog --- github/resource_github_branch_default.go | 56 ++++++++++++------------ 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/github/resource_github_branch_default.go b/github/resource_github_branch_default.go index d1fc50447c..1b9e18c5e2 100644 --- a/github/resource_github_branch_default.go +++ b/github/resource_github_branch_default.go @@ -3,19 +3,20 @@ package github import ( "context" "errors" - "log" "net/http" "github.com/google/go-github/v84/github" + "github.com/hashicorp/terraform-plugin-log/tflog" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceGithubBranchDefault() *schema.Resource { return &schema.Resource{ - Create: resourceGithubBranchDefaultCreate, - Read: resourceGithubBranchDefaultRead, - Delete: resourceGithubBranchDefaultDelete, - Update: resourceGithubBranchDefaultUpdate, + CreateContext: resourceGithubBranchDefaultCreate, + ReadContext: resourceGithubBranchDefaultRead, + DeleteContext: resourceGithubBranchDefaultDelete, + UpdateContext: resourceGithubBranchDefaultUpdate, Importer: &schema.ResourceImporter{ StateContext: schema.ImportStatePassthroughContext, }, @@ -51,24 +52,22 @@ func resourceGithubBranchDefault() *schema.Resource { } } -func resourceGithubBranchDefaultCreate(d *schema.ResourceData, meta any) error { +func resourceGithubBranchDefaultCreate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { client := meta.(*Owner).v3client owner := meta.(*Owner).name repoName := d.Get("repository").(string) defaultBranch := d.Get("branch").(string) rename := d.Get("rename").(bool) - ctx := context.Background() - repository, _, err := client.Repositories.Get(ctx, owner, repoName) if err != nil { - return err + return diag.FromErr(err) } if *repository.DefaultBranch != defaultBranch { if rename { if _, _, err := client.Repositories.RenameBranch(ctx, owner, repoName, *repository.DefaultBranch, defaultBranch); err != nil { - return err + return diag.FromErr(err) } } else { repository := &github.Repository{ @@ -76,22 +75,22 @@ func resourceGithubBranchDefaultCreate(d *schema.ResourceData, meta any) error { } if _, _, err := client.Repositories.Edit(ctx, owner, repoName, repository); err != nil { - return err + return diag.FromErr(err) } } } d.SetId(repoName) - return resourceGithubBranchDefaultRead(d, meta) + return resourceGithubBranchDefaultRead(ctx, d, meta) } -func resourceGithubBranchDefaultRead(d *schema.ResourceData, meta any) error { +func resourceGithubBranchDefaultRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { client := meta.(*Owner).v3client owner := meta.(*Owner).name repoName := d.Id() - ctx := context.WithValue(context.Background(), ctxId, d.Id()) + ctx = context.WithValue(ctx, ctxId, d.Id()) if !d.IsNewResource() { ctx = context.WithValue(ctx, ctxEtag, d.Get("etag").(string)) } @@ -104,13 +103,15 @@ func resourceGithubBranchDefaultRead(d *schema.ResourceData, meta any) error { return nil } if ghErr.Response.StatusCode == http.StatusNotFound { - log.Printf("[INFO] Removing repository %s/%s from state because it no longer exists in GitHub", - owner, repoName) + tflog.Info(ctx, "Removing repository from state because it no longer exists in GitHub", map[string]any{ + "owner": owner, + "repository": repoName, + }) d.SetId("") return nil } } - return err + return diag.FromErr(err) } if repository.DefaultBranch == nil { @@ -124,7 +125,7 @@ func resourceGithubBranchDefaultRead(d *schema.ResourceData, meta any) error { return nil } -func resourceGithubBranchDefaultDelete(d *schema.ResourceData, meta any) error { +func resourceGithubBranchDefaultDelete(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { client := meta.(*Owner).v3client owner := meta.(*Owner).name repoName := d.Id() @@ -133,28 +134,27 @@ func resourceGithubBranchDefaultDelete(d *schema.ResourceData, meta any) error { DefaultBranch: nil, } - ctx := context.Background() - _, _, err := client.Repositories.Edit(ctx, owner, repoName, repository) - return err + if err != nil { + return diag.FromErr(err) + } + return nil } -func resourceGithubBranchDefaultUpdate(d *schema.ResourceData, meta any) error { +func resourceGithubBranchDefaultUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { client := meta.(*Owner).v3client owner := meta.(*Owner).name repoName := d.Id() defaultBranch := d.Get("branch").(string) rename := d.Get("rename").(bool) - ctx := context.Background() - if rename { repository, _, err := client.Repositories.Get(ctx, owner, repoName) if err != nil { - return err + return diag.FromErr(err) } if _, _, err := client.Repositories.RenameBranch(ctx, owner, repoName, *repository.DefaultBranch, defaultBranch); err != nil { - return err + return diag.FromErr(err) } } else { repository := &github.Repository{ @@ -162,9 +162,9 @@ func resourceGithubBranchDefaultUpdate(d *schema.ResourceData, meta any) error { } if _, _, err := client.Repositories.Edit(ctx, owner, repoName, repository); err != nil { - return err + return diag.FromErr(err) } } - return resourceGithubBranchDefaultRead(d, meta) + return resourceGithubBranchDefaultRead(ctx, d, meta) }