3
3
package gitlab
4
4
5
5
import (
6
+ "context"
6
7
"fmt"
7
8
"log"
8
9
10
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9
11
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10
12
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
11
13
"github.com/mitchellh/hashstructure"
@@ -172,7 +174,7 @@ func flattenProjects(projects []*gitlab.Project) (values []map[string]interface{
172
174
func dataSourceGitlabProjects () * schema.Resource {
173
175
// lintignore: S024 // TODO: Resolve this tfproviderlint issue
174
176
return & schema.Resource {
175
- Read : dataSourceGitlabProjectsRead ,
177
+ ReadContext : dataSourceGitlabProjectsRead ,
176
178
177
179
// lintignore: S006 // TODO: Resolve this tfproviderlint issue
178
180
Schema : map [string ]* schema.Schema {
@@ -673,7 +675,7 @@ func dataSourceGitlabProjects() *schema.Resource {
673
675
674
676
// CRUD methods
675
677
676
- func dataSourceGitlabProjectsRead (d * schema.ResourceData , meta interface {}) ( err error ) {
678
+ func dataSourceGitlabProjectsRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
677
679
client := meta .(* gitlab.Client )
678
680
var projectList []* gitlab.Project
679
681
@@ -797,9 +799,9 @@ func dataSourceGitlabProjectsRead(d *schema.ResourceData, meta interface{}) (err
797
799
}
798
800
799
801
for {
800
- projects , response , err := client .Groups .ListGroupProjects (groupId .(int ), opts , nil )
802
+ projects , response , err := client .Groups .ListGroupProjects (groupId .(int ), opts , gitlab . WithContext ( ctx ) )
801
803
if err != nil {
802
- return err
804
+ return diag . FromErr ( err )
803
805
}
804
806
projectList = append (projectList , projects ... )
805
807
opts .ListOptions .Page ++
@@ -811,11 +813,11 @@ func dataSourceGitlabProjectsRead(d *schema.ResourceData, meta interface{}) (err
811
813
}
812
814
h , err := hashstructure .Hash (* opts , nil )
813
815
if err != nil {
814
- return err
816
+ return diag . FromErr ( err )
815
817
}
816
818
d .SetId (fmt .Sprintf ("%d-%d" , groupId .(int ), h ))
817
819
if err := d .Set ("projects" , flattenProjects (projectList )); err != nil {
818
- return err
820
+ return diag . FromErr ( err )
819
821
}
820
822
821
823
// Project case
@@ -843,9 +845,9 @@ func dataSourceGitlabProjectsRead(d *schema.ResourceData, meta interface{}) (err
843
845
}
844
846
845
847
for {
846
- projects , response , err := client .Projects .ListProjects (opts , nil )
848
+ projects , response , err := client .Projects .ListProjects (opts , nil , gitlab . WithContext ( ctx ) )
847
849
if err != nil {
848
- return err
850
+ return diag . FromErr ( err )
849
851
}
850
852
projectList = append (projectList , projects ... )
851
853
opts .ListOptions .Page ++
@@ -857,14 +859,15 @@ func dataSourceGitlabProjectsRead(d *schema.ResourceData, meta interface{}) (err
857
859
}
858
860
h , err := hashstructure .Hash (* opts , nil )
859
861
if err != nil {
860
- return err
862
+ return diag . FromErr ( err )
861
863
}
862
864
d .SetId (fmt .Sprintf ("%d" , h ))
863
865
if err := d .Set ("projects" , flattenProjects (projectList )); err != nil {
864
- return err
866
+ return diag . FromErr ( err )
865
867
}
866
868
}
867
- return err
869
+
870
+ return nil
868
871
}
869
872
870
873
func flattenSharedWithGroupsOptions (project * gitlab.Project ) []interface {} {
0 commit comments