@@ -25,6 +25,11 @@ func resourceGithubEnterpriseActionsHostedRunner() *schema.Resource {
2525 Importer : & schema.ResourceImporter {
2626 StateContext : schema .ImportStatePassthroughContext ,
2727 },
28+
29+ Timeouts : & schema.ResourceTimeout {
30+ Delete : schema .DefaultTimeout (15 * time .Minute ),
31+ },
32+
2833 Schema : map [string ]* schema.Schema {
2934 "enterprise_slug" : {
3035 Type : schema .TypeString ,
@@ -228,48 +233,46 @@ func resourceGithubEnterpriseActionsHostedRunnerCreate(ctx context.Context, d *s
228233 }
229234
230235 // Set the ID in the format enterprise_slug/runner_id
231- d .SetId (fmt .Sprintf ("%s/%d" , enterpriseSlug , * runner .ID ))
236+ id , err := buildID (enterpriseSlug , strconv .FormatInt (runner .GetID (), 10 ))
237+ if err != nil {
238+ return diag .FromErr (err )
239+ }
240+ d .SetId (id )
232241
233242 // Populate computed fields directly from API response
234243 if err := d .Set ("enterprise_slug" , enterpriseSlug ); err != nil {
235244 return diag .FromErr (err )
236245 }
237246
238247 // runner.ID is guaranteed non-nil due to check above
239- if err := d .Set ("runner_id" , int (* runner .ID )); err != nil {
248+ if err := d .Set ("runner_id" , int (runner .GetID () )); err != nil {
240249 return diag .FromErr (err )
241250 }
242251
243- if runner .Name != nil {
244- if err := d .Set ("name" , * runner .Name ); err != nil {
245- return diag .FromErr (err )
246- }
252+ if err := d .Set ("name" , runner .GetName ()); err != nil {
253+ return diag .FromErr (err )
247254 }
248- if runner .Status != nil {
249- if err := d .Set ("status" , * runner .Status ); err != nil {
250- return diag .FromErr (err )
251- }
255+
256+ if err := d .Set ("status" , runner .GetStatus ()); err != nil {
257+ return diag .FromErr (err )
252258 }
253- if runner .Platform != nil {
254- if err := d .Set ("platform" , * runner .Platform ); err != nil {
255- return diag .FromErr (err )
256- }
259+
260+ if err := d .Set ("platform" , runner .GetPlatform ()); err != nil {
261+ return diag .FromErr (err )
257262 }
263+
258264 if runner .LastActiveOn != nil {
259265 if err := d .Set ("last_active_on" , runner .LastActiveOn .Format (time .RFC3339 )); err != nil {
260266 return diag .FromErr (err )
261267 }
262268 }
263- if runner .PublicIPEnabled != nil {
264- if err := d .Set ("public_ip_enabled" , * runner .PublicIPEnabled ); err != nil {
265- return diag .FromErr (err )
266- }
269+
270+ if err := d .Set ("public_ip_enabled" , runner .GetPublicIPEnabled ()); err != nil {
271+ return diag .FromErr (err )
267272 }
268273
269- if runner .ImageDetails != nil {
270- if err := d .Set ("image" , flattenHostedRunnerImage (runner .ImageDetails )); err != nil {
271- return diag .FromErr (err )
272- }
274+ if err := d .Set ("image" , flattenHostedRunnerImage (runner .ImageDetails )); err != nil {
275+ return diag .FromErr (err )
273276 }
274277
275278 if runner .MachineSizeDetails != nil {
@@ -333,42 +336,34 @@ func resourceGithubEnterpriseActionsHostedRunnerRead(ctx context.Context, d *sch
333336 return diag .FromErr (err )
334337 }
335338
336- if runner .ID != nil {
337- if err := d .Set ("runner_id" , int (* runner .ID )); err != nil {
338- return diag .FromErr (err )
339- }
339+ if err := d .Set ("runner_id" , int (runner .GetID ())); err != nil {
340+ return diag .FromErr (err )
340341 }
341342
342- if runner .Name != nil {
343- if err := d .Set ("name" , * runner .Name ); err != nil {
344- return diag .FromErr (err )
345- }
343+ if err := d .Set ("name" , runner .GetName ()); err != nil {
344+ return diag .FromErr (err )
346345 }
347- if runner .Status != nil {
348- if err := d .Set ("status" , * runner .Status ); err != nil {
349- return diag .FromErr (err )
350- }
346+
347+ if err := d .Set ("status" , runner .GetStatus ()); err != nil {
348+ return diag .FromErr (err )
351349 }
352- if runner .Platform != nil {
353- if err := d .Set ("platform" , * runner .Platform ); err != nil {
354- return diag .FromErr (err )
355- }
350+
351+ if err := d .Set ("platform" , runner .GetPlatform ()); err != nil {
352+ return diag .FromErr (err )
356353 }
354+
357355 if runner .LastActiveOn != nil {
358356 if err := d .Set ("last_active_on" , runner .LastActiveOn .Format (time .RFC3339 )); err != nil {
359357 return diag .FromErr (err )
360358 }
361359 }
362- if runner .PublicIPEnabled != nil {
363- if err := d .Set ("public_ip_enabled" , * runner .PublicIPEnabled ); err != nil {
364- return diag .FromErr (err )
365- }
360+
361+ if err := d .Set ("public_ip_enabled" , runner .GetPublicIPEnabled ()); err != nil {
362+ return diag .FromErr (err )
366363 }
367364
368- if runner .ImageDetails != nil {
369- if err := d .Set ("image" , flattenHostedRunnerImage (runner .ImageDetails )); err != nil {
370- return diag .FromErr (err )
371- }
365+ if err := d .Set ("image" , flattenHostedRunnerImage (runner .ImageDetails )); err != nil {
366+ return diag .FromErr (err )
372367 }
373368
374369 if runner .MachineSizeDetails != nil {
@@ -380,16 +375,12 @@ func resourceGithubEnterpriseActionsHostedRunnerRead(ctx context.Context, d *sch
380375 }
381376 }
382377
383- if runner .RunnerGroupID != nil {
384- if err := d .Set ("runner_group_id" , int (* runner .RunnerGroupID )); err != nil {
385- return diag .FromErr (err )
386- }
378+ if err := d .Set ("runner_group_id" , int (runner .GetRunnerGroupID ())); err != nil {
379+ return diag .FromErr (err )
387380 }
388381
389- if runner .MaximumRunners != nil {
390- if err := d .Set ("maximum_runners" , int (* runner .MaximumRunners )); err != nil {
391- return diag .FromErr (err )
392- }
382+ if err := d .Set ("maximum_runners" , int (runner .GetMaximumRunners ())); err != nil {
383+ return diag .FromErr (err )
393384 }
394385
395386 if runner .PublicIPs != nil {
@@ -415,33 +406,21 @@ func resourceGithubEnterpriseActionsHostedRunnerUpdate(ctx context.Context, d *s
415406 }
416407
417408 request := & github.HostedRunnerRequest {}
418- hasChanges := false
419409
420410 if d .HasChange ("name" ) {
421411 request .Name = d .Get ("name" ).(string )
422- hasChanges = true
423412 }
424413 if d .HasChange ("size" ) {
425414 request .Size = d .Get ("size" ).(string )
426- hasChanges = true
427415 }
428416 if d .HasChange ("runner_group_id" ) {
429417 request .RunnerGroupID = int64 (d .Get ("runner_group_id" ).(int ))
430- hasChanges = true
431418 }
432419 if d .HasChange ("maximum_runners" ) {
433420 request .MaximumRunners = int64 (d .Get ("maximum_runners" ).(int ))
434- hasChanges = true
435421 }
436422 if d .HasChange ("public_ip_enabled" ) {
437423 request .EnableStaticIP = d .Get ("public_ip_enabled" ).(bool )
438- hasChanges = true
439- }
440-
441- // This should rarely happen as Terraform only calls Update when there are changes in the plan.
442- // However, computed fields or external changes could trigger Update without actual user-configurable changes.
443- if ! hasChanges {
444- return nil
445424 }
446425
447426 _ , _ , err = client .Enterprise .UpdateHostedRunner (ctx , enterpriseSlug , runnerID , * request )
0 commit comments