Skip to content

Commit a586037

Browse files
feat: migrate enterprise teams to context-aware CRUD
1 parent 4e58ce9 commit a586037

7 files changed

Lines changed: 171 additions & 129 deletions

github/data_source_github_enterprise_team.go

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ import (
66
"strconv"
77
"strings"
88

9+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1011
)
1112

1213
func dataSourceGithubEnterpriseTeam() *schema.Resource {
1314
return &schema.Resource{
14-
Read: dataSourceGithubEnterpriseTeamRead,
15+
ReadContext: dataSourceGithubEnterpriseTeamRead,
1516

1617
Schema: map[string]*schema.Schema{
1718
"enterprise_slug": {
@@ -57,25 +58,23 @@ func dataSourceGithubEnterpriseTeam() *schema.Resource {
5758
}
5859
}
5960

60-
func dataSourceGithubEnterpriseTeamRead(d *schema.ResourceData, meta any) error {
61+
func dataSourceGithubEnterpriseTeamRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
6162
client := meta.(*Owner).v3client
6263
enterpriseSlug := strings.TrimSpace(d.Get("enterprise_slug").(string))
6364
if enterpriseSlug == "" {
64-
return fmt.Errorf("enterprise_slug must not be empty")
65+
return diag.FromErr(fmt.Errorf("enterprise_slug must not be empty"))
6566
}
6667

67-
ctx := context.Background()
68-
6968
var te *enterpriseTeam
7069
if v, ok := d.GetOk("team_id"); ok {
7170
teamID := int64(v.(int))
7271
if teamID != 0 {
7372
found, err := findEnterpriseTeamByID(ctx, client, enterpriseSlug, teamID)
7473
if err != nil {
75-
return err
74+
return diag.FromErr(err)
7675
}
7776
if found == nil {
78-
return fmt.Errorf("could not find enterprise team %d in enterprise %s", teamID, enterpriseSlug)
77+
return diag.FromErr(fmt.Errorf("could not find enterprise team %d in enterprise %s", teamID, enterpriseSlug))
7978
}
8079
te = found
8180
}
@@ -84,34 +83,52 @@ func dataSourceGithubEnterpriseTeamRead(d *schema.ResourceData, meta any) error
8483
if te == nil {
8584
teamSlug := strings.TrimSpace(d.Get("slug").(string))
8685
if teamSlug == "" {
87-
return fmt.Errorf("one of slug or team_id must be set")
86+
return diag.FromErr(fmt.Errorf("one of slug or team_id must be set"))
8887
}
8988
found, _, err := getEnterpriseTeamBySlug(ctx, client, enterpriseSlug, teamSlug)
9089
if err != nil {
91-
return err
90+
return diag.FromErr(err)
9291
}
9392
te = found
9493
}
9594

9695
d.SetId(buildSlashTwoPartID(enterpriseSlug, strconv.FormatInt(te.ID, 10)))
97-
_ = d.Set("enterprise_slug", enterpriseSlug)
98-
_ = d.Set("slug", te.Slug)
99-
_ = d.Set("team_id", int(te.ID))
100-
_ = d.Set("name", te.Name)
96+
if err := d.Set("enterprise_slug", enterpriseSlug); err != nil {
97+
return diag.FromErr(err)
98+
}
99+
if err := d.Set("slug", te.Slug); err != nil {
100+
return diag.FromErr(err)
101+
}
102+
if err := d.Set("team_id", int(te.ID)); err != nil {
103+
return diag.FromErr(err)
104+
}
105+
if err := d.Set("name", te.Name); err != nil {
106+
return diag.FromErr(err)
107+
}
101108
if te.Description != nil {
102-
_ = d.Set("description", *te.Description)
109+
if err := d.Set("description", *te.Description); err != nil {
110+
return diag.FromErr(err)
111+
}
103112
} else {
104-
_ = d.Set("description", "")
113+
if err := d.Set("description", ""); err != nil {
114+
return diag.FromErr(err)
115+
}
105116
}
106117
orgSel := te.OrganizationSelectionType
107118
if orgSel == "" {
108119
orgSel = "disabled"
109120
}
110-
_ = d.Set("organization_selection_type", orgSel)
121+
if err := d.Set("organization_selection_type", orgSel); err != nil {
122+
return diag.FromErr(err)
123+
}
111124
if te.GroupID != nil {
112-
_ = d.Set("group_id", *te.GroupID)
125+
if err := d.Set("group_id", *te.GroupID); err != nil {
126+
return diag.FromErr(err)
127+
}
113128
} else {
114-
_ = d.Set("group_id", "")
129+
if err := d.Set("group_id", ""); err != nil {
130+
return diag.FromErr(err)
131+
}
115132
}
116133

117134
return nil

github/data_source_github_enterprise_team_membership.go

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import (
55
"fmt"
66
"strings"
77

8+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
89
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
910
)
1011

1112
func dataSourceGithubEnterpriseTeamMembership() *schema.Resource {
1213
return &schema.Resource{
13-
Read: dataSourceGithubEnterpriseTeamMembershipRead,
14+
ReadContext: dataSourceGithubEnterpriseTeamMembershipRead,
1415

1516
Schema: map[string]*schema.Schema{
1617
"enterprise_slug": {
@@ -47,37 +48,47 @@ func dataSourceGithubEnterpriseTeamMembership() *schema.Resource {
4748
}
4849
}
4950

50-
func dataSourceGithubEnterpriseTeamMembershipRead(d *schema.ResourceData, meta any) error {
51+
func dataSourceGithubEnterpriseTeamMembershipRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
5152
client := meta.(*Owner).v3client
5253
enterpriseSlug := strings.TrimSpace(d.Get("enterprise_slug").(string))
5354
enterpriseTeam := strings.TrimSpace(d.Get("enterprise_team").(string))
5455
username := strings.TrimSpace(d.Get("username").(string))
5556
if enterpriseSlug == "" {
56-
return fmt.Errorf("enterprise_slug must not be empty")
57+
return diag.FromErr(fmt.Errorf("enterprise_slug must not be empty"))
5758
}
5859
if enterpriseTeam == "" {
59-
return fmt.Errorf("enterprise_team must not be empty")
60+
return diag.FromErr(fmt.Errorf("enterprise_team must not be empty"))
6061
}
6162
if username == "" {
62-
return fmt.Errorf("username must not be empty")
63+
return diag.FromErr(fmt.Errorf("username must not be empty"))
6364
}
64-
65-
ctx := context.Background()
6665
m, resp, err := getEnterpriseTeamMembershipDetails(ctx, client, enterpriseSlug, enterpriseTeam, username)
6766
if err != nil {
68-
return err
67+
return diag.FromErr(err)
6968
}
7069

7170
d.SetId(buildSlashThreePartID(enterpriseSlug, enterpriseTeam, username))
72-
_ = d.Set("enterprise_slug", enterpriseSlug)
73-
_ = d.Set("enterprise_team", enterpriseTeam)
74-
_ = d.Set("username", username)
71+
if err := d.Set("enterprise_slug", enterpriseSlug); err != nil {
72+
return diag.FromErr(err)
73+
}
74+
if err := d.Set("enterprise_team", enterpriseTeam); err != nil {
75+
return diag.FromErr(err)
76+
}
77+
if err := d.Set("username", username); err != nil {
78+
return diag.FromErr(err)
79+
}
7580
if m != nil {
76-
_ = d.Set("role", m.Role)
77-
_ = d.Set("state", m.State)
81+
if err := d.Set("role", m.Role); err != nil {
82+
return diag.FromErr(err)
83+
}
84+
if err := d.Set("state", m.State); err != nil {
85+
return diag.FromErr(err)
86+
}
7887
}
7988
if resp != nil {
80-
_ = d.Set("etag", resp.Header.Get("ETag"))
89+
if err := d.Set("etag", resp.Header.Get("ETag")); err != nil {
90+
return diag.FromErr(err)
91+
}
8192
}
8293
return nil
8394
}

github/data_source_github_enterprise_team_organizations.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import (
55
"fmt"
66
"strings"
77

8+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
89
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
910
)
1011

1112
func dataSourceGithubEnterpriseTeamOrganizations() *schema.Resource {
1213
return &schema.Resource{
13-
Read: dataSourceGithubEnterpriseTeamOrganizationsRead,
14+
ReadContext: dataSourceGithubEnterpriseTeamOrganizationsRead,
1415

1516
Schema: map[string]*schema.Schema{
1617
"enterprise_slug": {
@@ -34,21 +35,19 @@ func dataSourceGithubEnterpriseTeamOrganizations() *schema.Resource {
3435
}
3536
}
3637

37-
func dataSourceGithubEnterpriseTeamOrganizationsRead(d *schema.ResourceData, meta any) error {
38+
func dataSourceGithubEnterpriseTeamOrganizationsRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
3839
client := meta.(*Owner).v3client
3940
enterpriseSlug := strings.TrimSpace(d.Get("enterprise_slug").(string))
4041
enterpriseTeam := strings.TrimSpace(d.Get("enterprise_team").(string))
4142
if enterpriseSlug == "" {
42-
return fmt.Errorf("enterprise_slug must not be empty")
43+
return diag.FromErr(fmt.Errorf("enterprise_slug must not be empty"))
4344
}
4445
if enterpriseTeam == "" {
45-
return fmt.Errorf("enterprise_team must not be empty")
46+
return diag.FromErr(fmt.Errorf("enterprise_team must not be empty"))
4647
}
47-
48-
ctx := context.Background()
4948
orgs, err := listEnterpriseTeamOrganizations(ctx, client, enterpriseSlug, enterpriseTeam)
5049
if err != nil {
51-
return err
50+
return diag.FromErr(err)
5251
}
5352

5453
slugs := make([]string, 0, len(orgs))
@@ -59,8 +58,14 @@ func dataSourceGithubEnterpriseTeamOrganizationsRead(d *schema.ResourceData, met
5958
}
6059

6160
d.SetId(buildSlashTwoPartID(enterpriseSlug, enterpriseTeam))
62-
_ = d.Set("enterprise_slug", enterpriseSlug)
63-
_ = d.Set("enterprise_team", enterpriseTeam)
64-
_ = d.Set("organization_slugs", slugs)
61+
if err := d.Set("enterprise_slug", enterpriseSlug); err != nil {
62+
return diag.FromErr(err)
63+
}
64+
if err := d.Set("enterprise_team", enterpriseTeam); err != nil {
65+
return diag.FromErr(err)
66+
}
67+
if err := d.Set("organization_slugs", slugs); err != nil {
68+
return diag.FromErr(err)
69+
}
6570
return nil
6671
}

github/data_source_github_enterprise_teams.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import (
55
"fmt"
66
"strings"
77

8+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
89
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
910
)
1011

1112
func dataSourceGithubEnterpriseTeams() *schema.Resource {
1213
return &schema.Resource{
13-
Read: dataSourceGithubEnterpriseTeamsRead,
14+
ReadContext: dataSourceGithubEnterpriseTeamsRead,
1415

1516
Schema: map[string]*schema.Schema{
1617
"enterprise_slug": {
@@ -61,17 +62,15 @@ func dataSourceGithubEnterpriseTeams() *schema.Resource {
6162
}
6263
}
6364

64-
func dataSourceGithubEnterpriseTeamsRead(d *schema.ResourceData, meta any) error {
65+
func dataSourceGithubEnterpriseTeamsRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
6566
client := meta.(*Owner).v3client
6667
enterpriseSlug := strings.TrimSpace(d.Get("enterprise_slug").(string))
6768
if enterpriseSlug == "" {
68-
return fmt.Errorf("enterprise_slug must not be empty")
69+
return diag.FromErr(fmt.Errorf("enterprise_slug must not be empty"))
6970
}
70-
71-
ctx := context.Background()
7271
teams, err := listEnterpriseTeams(ctx, client, enterpriseSlug)
7372
if err != nil {
74-
return err
73+
return diag.FromErr(err)
7574
}
7675

7776
flat := make([]any, 0, len(teams))
@@ -100,7 +99,11 @@ func dataSourceGithubEnterpriseTeamsRead(d *schema.ResourceData, meta any) error
10099
}
101100

102101
d.SetId(enterpriseSlug)
103-
_ = d.Set("enterprise_slug", enterpriseSlug)
104-
_ = d.Set("teams", flat)
102+
if err := d.Set("enterprise_slug", enterpriseSlug); err != nil {
103+
return diag.FromErr(err)
104+
}
105+
if err := d.Set("teams", flat); err != nil {
106+
return diag.FromErr(err)
107+
}
105108
return nil
106109
}

0 commit comments

Comments
 (0)