@@ -4,91 +4,91 @@ import (
44 "context"
55
66 "github.com/google/go-github/v82/github"
7+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
78 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
89)
910
1011func resourceGithubActionsOrganizationSecretRepositories () * schema.Resource {
1112 return & schema.Resource {
12- Create : resourceGithubActionsOrganizationSecretRepositoriesCreateOrUpdate ,
13- Read : resourceGithubActionsOrganizationSecretRepositoriesRead ,
14- Update : resourceGithubActionsOrganizationSecretRepositoriesCreateOrUpdate ,
15- Delete : resourceGithubActionsOrganizationSecretRepositoriesDelete ,
16- Importer : & schema.ResourceImporter {
17- StateContext : schema .ImportStatePassthroughContext ,
18- },
19-
2013 Schema : map [string ]* schema.Schema {
2114 "secret_name" : {
2215 Type : schema .TypeString ,
2316 Required : true ,
2417 ForceNew : true ,
25- Description : "Name of the existing secret." ,
2618 ValidateDiagFunc : validateSecretNameFunc ,
19+ Description : "Name of the existing secret." ,
2720 },
2821 "selected_repository_ids" : {
2922 Type : schema .TypeSet ,
23+ Set : schema .HashInt ,
3024 Elem : & schema.Schema {
3125 Type : schema .TypeInt ,
3226 },
33- Set : schema .HashInt ,
3427 Required : true ,
3528 Description : "An array of repository ids that can access the organization secret." ,
3629 },
3730 },
31+
32+ CreateContext : resourceGithubActionsOrganizationSecretRepositoriesCreateOrUpdate ,
33+ ReadContext : resourceGithubActionsOrganizationSecretRepositoriesRead ,
34+ UpdateContext : resourceGithubActionsOrganizationSecretRepositoriesCreateOrUpdate ,
35+ DeleteContext : resourceGithubActionsOrganizationSecretRepositoriesDelete ,
36+ Importer : & schema.ResourceImporter {
37+ StateContext : resourceGithubActionsOrganizationSecretRepositoriesImport ,
38+ },
3839 }
3940}
4041
41- func resourceGithubActionsOrganizationSecretRepositoriesCreateOrUpdate (d * schema.ResourceData , meta any ) error {
42- client := meta .(* Owner ).v3client
43- owner := meta .(* Owner ).name
44- ctx := context .Background ()
45-
46- err := checkOrganization (meta )
47- if err != nil {
48- return err
42+ func resourceGithubActionsOrganizationSecretRepositoriesCreateOrUpdate (ctx context.Context , d * schema.ResourceData , m any ) diag.Diagnostics {
43+ if err := checkOrganization (m ); err != nil {
44+ return diag .FromErr (err )
4945 }
5046
51- secretName := d .Get ("secret_name" ).(string )
52- selectedRepositories := d .Get ("selected_repository_ids" )
47+ meta := m .(* Owner )
48+ client := meta .v3client
49+ owner := meta .name
5350
54- selectedRepositoryIDs := []int64 {}
51+ secretName := d .Get ("secret_name" ).(string )
52+ repoIDs := []int64 {}
5553
56- ids := selectedRepositories .(* schema.Set ).List ()
54+ ids := d . Get ( "selected_repository_ids" ) .(* schema.Set ).List ()
5755 for _ , id := range ids {
58- selectedRepositoryIDs = append (selectedRepositoryIDs , int64 (id .(int )))
56+ repoIDs = append (repoIDs , int64 (id .(int )))
5957 }
6058
61- _ , err = client .Actions .SetSelectedReposForOrgSecret (ctx , owner , secretName , selectedRepositoryIDs )
59+ _ , err : = client .Actions .SetSelectedReposForOrgSecret (ctx , owner , secretName , repoIDs )
6260 if err != nil {
63- return err
61+ return diag . FromErr ( err )
6462 }
6563
6664 d .SetId (secretName )
67- return resourceGithubActionsOrganizationSecretRepositoriesRead (d , meta )
68- }
6965
70- func resourceGithubActionsOrganizationSecretRepositoriesRead (d * schema.ResourceData , meta any ) error {
71- client := meta .(* Owner ).v3client
72- owner := meta .(* Owner ).name
73- ctx := context .Background ()
66+ return nil
67+ }
7468
75- err := checkOrganization ( meta )
76- if err != nil {
77- return err
69+ func resourceGithubActionsOrganizationSecretRepositoriesRead ( ctx context. Context , d * schema. ResourceData , m any ) diag. Diagnostics {
70+ if err := checkOrganization ( m ); err != nil {
71+ return diag . FromErr ( err )
7872 }
7973
80- selectedRepositoryIDs := []int64 {}
74+ meta := m .(* Owner )
75+ client := meta .v3client
76+ owner := meta .name
77+
78+ secretName := d .Get ("secret_name" ).(string )
79+
80+ repoIDs := []int64 {}
8181 opt := & github.ListOptions {
8282 PerPage : maxPerPage ,
8383 }
8484 for {
85- results , resp , err := client .Actions .ListSelectedReposForOrgSecret (ctx , owner , d . Id () , opt )
85+ results , resp , err := client .Actions .ListSelectedReposForOrgSecret (ctx , owner , secretName , opt )
8686 if err != nil {
87- return err
87+ return diag . FromErr ( err )
8888 }
8989
9090 for _ , repo := range results .Repositories {
91- selectedRepositoryIDs = append (selectedRepositoryIDs , repo .GetID ())
91+ repoIDs = append (repoIDs , repo .GetID ())
9292 }
9393
9494 if resp .NextPage == 0 {
@@ -97,28 +97,64 @@ func resourceGithubActionsOrganizationSecretRepositoriesRead(d *schema.ResourceD
9797 opt .Page = resp .NextPage
9898 }
9999
100- if err = d .Set ("selected_repository_ids" , selectedRepositoryIDs ); err != nil {
101- return err
100+ if err : = d .Set ("selected_repository_ids" , repoIDs ); err != nil {
101+ return diag . FromErr ( err )
102102 }
103103
104104 return nil
105105}
106106
107- func resourceGithubActionsOrganizationSecretRepositoriesDelete (d * schema.ResourceData , meta any ) error {
108- client := meta .(* Owner ).v3client
109- owner := meta .(* Owner ).name
110- ctx := context .WithValue (context .Background (), ctxId , d .Id ())
111-
112- err := checkOrganization (meta )
113- if err != nil {
114- return err
107+ func resourceGithubActionsOrganizationSecretRepositoriesDelete (ctx context.Context , d * schema.ResourceData , m any ) diag.Diagnostics {
108+ if err := checkOrganization (m ); err != nil {
109+ return diag .FromErr (err )
115110 }
116111
117- selectedRepositoryIDs := []int64 {}
118- _ , err = client .Actions .SetSelectedReposForOrgSecret (ctx , owner , d .Id (), selectedRepositoryIDs )
112+ meta := m .(* Owner )
113+ client := meta .v3client
114+ owner := meta .name
115+
116+ _ , err := client .Actions .SetSelectedReposForOrgSecret (ctx , owner , d .Id (), []int64 {})
119117 if err != nil {
120- return err
118+ return diag . FromErr ( err )
121119 }
122120
123121 return nil
124122}
123+
124+ func resourceGithubActionsOrganizationSecretRepositoriesImport (ctx context.Context , d * schema.ResourceData , m any ) ([]* schema.ResourceData , error ) {
125+ meta := m .(* Owner )
126+ client := meta .v3client
127+ owner := meta .name
128+
129+ secretName := d .Id ()
130+
131+ if err := d .Set ("secret_name" , secretName ); err != nil {
132+ return nil , err
133+ }
134+
135+ repoIDs := []int64 {}
136+ opt := & github.ListOptions {
137+ PerPage : maxPerPage ,
138+ }
139+ for {
140+ results , resp , err := client .Actions .ListSelectedReposForOrgSecret (ctx , owner , secretName , opt )
141+ if err != nil {
142+ return nil , err
143+ }
144+
145+ for _ , repo := range results .Repositories {
146+ repoIDs = append (repoIDs , repo .GetID ())
147+ }
148+
149+ if resp .NextPage == 0 {
150+ break
151+ }
152+ opt .Page = resp .NextPage
153+ }
154+
155+ if err := d .Set ("selected_repository_ids" , repoIDs ); err != nil {
156+ return nil , err
157+ }
158+
159+ return []* schema.ResourceData {d }, nil
160+ }
0 commit comments