@@ -3,19 +3,20 @@ package github
33import (
44 "context"
55 "errors"
6- "log"
76 "net/http"
87
98 "github.com/google/go-github/v84/github"
9+ "github.com/hashicorp/terraform-plugin-log/tflog"
10+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1011 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1112)
1213
1314func resourceGithubIssueLabel () * schema.Resource {
1415 return & schema.Resource {
15- Create : resourceGithubIssueLabelCreateOrUpdate ,
16- Read : resourceGithubIssueLabelRead ,
17- Update : resourceGithubIssueLabelCreateOrUpdate ,
18- Delete : resourceGithubIssueLabelDelete ,
16+ CreateContext : resourceGithubIssueLabelCreateOrUpdate ,
17+ ReadContext : resourceGithubIssueLabelRead ,
18+ UpdateContext : resourceGithubIssueLabelCreateOrUpdate ,
19+ DeleteContext : resourceGithubIssueLabelDelete ,
1920 Importer : & schema.ResourceImporter {
2021 StateContext : schema .ImportStatePassthroughContext ,
2122 },
@@ -70,7 +71,7 @@ func resourceGithubIssueLabel() *schema.Resource {
7071// otherwise it will create. This is also advantageous in that we get to use the
7172// same function for two schema funcs.
7273
73- func resourceGithubIssueLabelCreateOrUpdate (d * schema.ResourceData , meta any ) error {
74+ func resourceGithubIssueLabelCreateOrUpdate (ctx context. Context , d * schema.ResourceData , meta any ) diag. Diagnostics {
7475 client := meta .(* Owner ).v3client
7576 orgName := meta .(* Owner ).name
7677 repoName := d .Get ("repository" ).(string )
@@ -81,7 +82,6 @@ func resourceGithubIssueLabelCreateOrUpdate(d *schema.ResourceData, meta any) er
8182 Name : new (name ),
8283 Color : new (color ),
8384 }
84- ctx := context .Background ()
8585 if ! d .IsNewResource () {
8686 ctx = context .WithValue (ctx , ctxId , d .Id ())
8787 }
@@ -95,14 +95,14 @@ func resourceGithubIssueLabelCreateOrUpdate(d *schema.ResourceData, meta any) er
9595 var err error
9696 _ , originalName , err = parseTwoPartID (d .Id (), "repository" , "name" )
9797 if err != nil {
98- return err
98+ return diag . FromErr ( err )
9999 }
100100 }
101101
102102 existing , resp , err := client .Issues .GetLabel (ctx ,
103103 orgName , repoName , originalName )
104104 if err != nil && resp .StatusCode != http .StatusNotFound {
105- return err
105+ return diag . FromErr ( err )
106106 }
107107
108108 if existing != nil {
@@ -117,14 +117,14 @@ func resourceGithubIssueLabelCreateOrUpdate(d *schema.ResourceData, meta any) er
117117 var err error
118118 _ , originalName , err = parseTwoPartID (d .Id (), "repository" , "name" )
119119 if err != nil {
120- return err
120+ return diag . FromErr ( err )
121121 }
122122 }
123123
124124 _ , _ , err := client .Issues .EditLabel (ctx ,
125125 orgName , repoName , originalName , label )
126126 if err != nil {
127- return err
127+ return diag . FromErr ( err )
128128 }
129129 } else {
130130 if v , ok := d .GetOk ("description" ); ok {
@@ -134,24 +134,23 @@ func resourceGithubIssueLabelCreateOrUpdate(d *schema.ResourceData, meta any) er
134134 _ , _ , err := client .Issues .CreateLabel (ctx ,
135135 orgName , repoName , label )
136136 if err != nil {
137- return err
137+ return diag . FromErr ( err )
138138 }
139139 }
140140
141141 d .SetId (buildTwoPartID (repoName , name ))
142142
143- return resourceGithubIssueLabelRead (d , meta )
143+ return resourceGithubIssueLabelRead (ctx , d , meta )
144144}
145145
146- func resourceGithubIssueLabelRead (d * schema.ResourceData , meta any ) error {
146+ func resourceGithubIssueLabelRead (ctx context. Context , d * schema.ResourceData , meta any ) diag. Diagnostics {
147147 client := meta .(* Owner ).v3client
148148 repoName , name , err := parseTwoPartID (d .Id (), "repository" , "name" )
149149 if err != nil {
150- return err
150+ return diag . FromErr ( err )
151151 }
152152
153153 orgName := meta .(* Owner ).name
154- ctx := context .WithValue (context .Background (), ctxId , d .Id ())
155154 if ! d .IsNewResource () {
156155 ctx = context .WithValue (ctx , ctxEtag , d .Get ("etag" ).(string ))
157156 }
@@ -165,45 +164,48 @@ func resourceGithubIssueLabelRead(d *schema.ResourceData, meta any) error {
165164 return nil
166165 }
167166 if ghErr .Response .StatusCode == http .StatusNotFound {
168- log .Printf ("[INFO] Removing label %s (%s/%s) from state because it no longer exists in GitHub" ,
169- name , orgName , repoName )
167+ tflog .Info (ctx , "Removing label from state because it no longer exists in GitHub" , map [string ]any {
168+ "name" : name ,
169+ "org_name" : orgName ,
170+ "repo_name" : repoName ,
171+ })
170172 d .SetId ("" )
171173 return nil
172174 }
173175 }
174- return err
176+ return diag . FromErr ( err )
175177 }
176178
177179 if err = d .Set ("etag" , resp .Header .Get ("ETag" )); err != nil {
178- return err
180+ return diag . FromErr ( err )
179181 }
180182 if err = d .Set ("repository" , repoName ); err != nil {
181- return err
183+ return diag . FromErr ( err )
182184 }
183185 if err = d .Set ("name" , name ); err != nil {
184- return err
186+ return diag . FromErr ( err )
185187 }
186188 if err = d .Set ("color" , githubLabel .GetColor ()); err != nil {
187- return err
189+ return diag . FromErr ( err )
188190 }
189191 if err = d .Set ("description" , githubLabel .GetDescription ()); err != nil {
190- return err
192+ return diag . FromErr ( err )
191193 }
192194 if err = d .Set ("url" , githubLabel .GetURL ()); err != nil {
193- return err
195+ return diag . FromErr ( err )
194196 }
195197
196198 return nil
197199}
198200
199- func resourceGithubIssueLabelDelete (d * schema.ResourceData , meta any ) error {
201+ func resourceGithubIssueLabelDelete (ctx context. Context , d * schema.ResourceData , meta any ) diag. Diagnostics {
200202 client := meta .(* Owner ).v3client
201203
202204 orgName := meta .(* Owner ).name
203205 repoName := d .Get ("repository" ).(string )
204206 name := d .Get ("name" ).(string )
205- ctx : = context .WithValue (context . Background () , ctxId , d .Id ())
207+ ctx = context .WithValue (ctx , ctxId , d .Id ())
206208
207209 _ , err := client .Issues .DeleteLabel (ctx , orgName , repoName , name )
208- return handleArchivedRepoDelete (err , "issue label" , name , orgName , repoName )
210+ return diag . FromErr ( handleArchivedRepoDelete (err , "issue label" , name , orgName , repoName ) )
209211}
0 commit comments