@@ -8,13 +8,14 @@ import (
88
99 "github.com/shurcooL/githubv4"
1010
11+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1112 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1213 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1314)
1415
1516func dataSourceGithubTeam () * schema.Resource {
1617 return & schema.Resource {
17- Read : dataSourceGithubTeamRead ,
18+ ReadContext : dataSourceGithubTeamRead ,
1819
1920 Schema : map [string ]* schema.Schema {
2021 "slug" : {
@@ -33,10 +34,15 @@ func dataSourceGithubTeam() *schema.Resource {
3334 Type : schema .TypeString ,
3435 Computed : true ,
3536 },
36- "permission " : {
37+ "notification_setting " : {
3738 Type : schema .TypeString ,
3839 Computed : true ,
3940 },
41+ "permission" : {
42+ Type : schema .TypeString ,
43+ Computed : true ,
44+ Deprecated : "Closing down notice." ,
45+ },
4046 "members" : {
4147 Type : schema .TypeList ,
4248 Computed : true ,
@@ -88,30 +94,50 @@ func dataSourceGithubTeam() *schema.Resource {
8894 Optional : true ,
8995 Default : 100 ,
9096 ValidateDiagFunc : toDiagFunc (validation .IntBetween (0 , 100 ), "results_per_page" ),
97+ Deprecated : "This is deprecated and will be removed in a future release." ,
9198 },
9299 },
93100 }
94101}
95102
96- func dataSourceGithubTeamRead (d * schema.ResourceData , meta any ) error {
97- slug := d .Get ("slug" ).(string )
98-
103+ func dataSourceGithubTeamRead (ctx context.Context , d * schema.ResourceData , meta any ) diag.Diagnostics {
99104 client := meta .(* Owner ).v3client
100- orgId := meta .(* Owner ).id
101- ctx := context .Background ()
102- summaryOnly := d .Get ("summary_only" ).(bool )
103- resultsPerPage := d .Get ("results_per_page" ).(int )
105+ owner := meta .(* Owner ).name
106+
107+ slug := d .Get ("slug" ).(string )
104108
105109 team , _ , err := client .Teams .GetTeamBySlug (ctx , meta .(* Owner ).name , slug )
106110 if err != nil {
107- return err
111+ return diag .FromErr (err )
112+ }
113+
114+ d .SetId (strconv .FormatInt (team .GetID (), 10 ))
115+ if err = d .Set ("name" , team .GetName ()); err != nil {
116+ return diag .FromErr (err )
117+ }
118+ if err = d .Set ("description" , team .GetDescription ()); err != nil {
119+ return diag .FromErr (err )
120+ }
121+ if err = d .Set ("privacy" , team .GetPrivacy ()); err != nil {
122+ return diag .FromErr (err )
123+ }
124+ if err = d .Set ("notification_setting" , team .GetNotificationSetting ()); err != nil {
125+ return diag .FromErr (err )
126+ }
127+ if err = d .Set ("permission" , team .GetPermission ()); err != nil {
128+ return diag .FromErr (err )
129+ }
130+ if err = d .Set ("node_id" , team .GetNodeID ()); err != nil {
131+ return diag .FromErr (err )
108132 }
109133
110134 var members []string
111135 var repositories []string
112136 var repositories_detailed []any
113137
138+ summaryOnly := d .Get ("summary_only" ).(bool )
114139 if ! summaryOnly {
140+ resultsPerPage := d .Get ("results_per_page" ).(int )
115141 options := github.TeamListTeamMembersOptions {
116142 ListOptions : github.ListOptions {
117143 PerPage : resultsPerPage ,
@@ -120,9 +146,9 @@ func dataSourceGithubTeamRead(d *schema.ResourceData, meta any) error {
120146
121147 if d .Get ("membership_type" ).(string ) == "all" {
122148 for {
123- member , resp , err := client .Teams .ListTeamMembersByID (ctx , orgId , team .GetID (), & options )
149+ member , resp , err := client .Teams .ListTeamMembersBySlug (ctx , owner , team .GetSlug (), & options )
124150 if err != nil {
125- return err
151+ return diag . FromErr ( err )
126152 }
127153
128154 for _ , v := range member {
@@ -160,7 +186,7 @@ func dataSourceGithubTeamRead(d *schema.ResourceData, meta any) error {
160186 for {
161187 nameErr := client .Query (ctx , & query , variables )
162188 if nameErr != nil {
163- return nameErr
189+ return diag . FromErr ( nameErr )
164190 }
165191 for _ , v := range query .Organization .Team .Members .Nodes {
166192 members = append (members , v .Login )
@@ -173,12 +199,11 @@ func dataSourceGithubTeamRead(d *schema.ResourceData, meta any) error {
173199 }
174200 }
175201
176- repositories_detailed = make ([]any , 0 , resultsPerPage ) // removed this from the loop
177-
202+ repositories_detailed = make ([]any , 0 , resultsPerPage )
178203 for {
179- repository , resp , err := client .Teams .ListTeamReposByID (ctx , orgId , team .GetID (), & options .ListOptions )
204+ repository , resp , err := client .Teams .ListTeamReposBySlug (ctx , owner , team .GetSlug (), & options .ListOptions )
180205 if err != nil {
181- return err
206+ return diag . FromErr ( err )
182207 }
183208
184209 for _ , v := range repository {
@@ -197,30 +222,14 @@ func dataSourceGithubTeamRead(d *schema.ResourceData, meta any) error {
197222 }
198223 }
199224
200- d .SetId (strconv .FormatInt (team .GetID (), 10 ))
201- if err = d .Set ("name" , team .GetName ()); err != nil {
202- return err
203- }
204225 if err = d .Set ("members" , members ); err != nil {
205- return err
226+ return diag . FromErr ( err )
206227 }
207228 if err = d .Set ("repositories" , repositories ); err != nil {
208- return err
229+ return diag . FromErr ( err )
209230 }
210231 if err = d .Set ("repositories_detailed" , repositories_detailed ); err != nil {
211- return err
212- }
213- if err = d .Set ("description" , team .GetDescription ()); err != nil {
214- return err
215- }
216- if err = d .Set ("privacy" , team .GetPrivacy ()); err != nil {
217- return err
218- }
219- if err = d .Set ("permission" , team .GetPermission ()); err != nil {
220- return err
221- }
222- if err = d .Set ("node_id" , team .GetNodeID ()); err != nil {
223- return err
232+ return diag .FromErr (err )
224233 }
225234
226235 return nil
0 commit comments