@@ -2,19 +2,20 @@ package aquasec
22
33import (
44 "fmt"
5- "log"
65 "github.com/aquasecurity/terraform-provider-aquasec/client"
76 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
87 "strings"
8+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9+ "context"
910)
1011
1112func resourcePermissionSet () * schema.Resource {
1213 return & schema.Resource {
1314 Description : "The `aquasec_permissions_sets` resource manages your Permission Set within Aqua." ,
14- Create : resourcePermissionSetCreate ,
15- Read : resourcePermissionSetRead ,
16- Update : resourcePermissionSetUpdate ,
17- Delete : resourcePermissionSetDelete ,
15+ CreateContext : resourcePermissionSetCreate ,
16+ ReadContext : resourcePermissionSetRead ,
17+ UpdateContext : resourcePermissionSetUpdate ,
18+ DeleteContext : resourcePermissionSetDelete ,
1819 Importer : & schema.ResourceImporter {
1920 StateContext : schema .ImportStatePassthroughContext ,
2021 },
@@ -67,87 +68,93 @@ func resourcePermissionSet() *schema.Resource {
6768 }
6869}
6970
70- func logPermissionSetWarning () {
71+ func addSaasPermissionSetWarning ( diags diag. Diagnostics ) diag. Diagnostics {
7172 if isSaasEnv () {
72- log .Printf ("[WARN] You are using aquasec_permissions_sets with an Aqua SaaS instance. " +
73- "Please migrate to aquasec_permissions_sets_saas, designed specifically for Aqua SaaS customers " +
74- "and supporting the entire SaaS platform beyond workload protection." )
73+ return append (diags , diag.Diagnostic {
74+ Severity : diag .Warning ,
75+ Summary : "Legacy Resource Usage" ,
76+ Detail : "You are using aquasec_permissions_sets with an Aqua SaaS instance. Please migrate to aquasec_permissions_sets_saas, designed specifically for Aqua SaaS customers and supporting the entire SaaS platform beyond workload protection." ,
77+ })
7578 }
79+ return diags
7680}
7781
78- func resourcePermissionSetCreate (d * schema.ResourceData , m interface {}) error {
79- logPermissionSetWarning ()
82+ func resourcePermissionSetCreate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
83+ var diags diag.Diagnostics
84+ diags = addSaasPermissionSetWarning (diags )
8085
81- ac := m .(* client.Client )
82- name := d .Get ("name" ).(string )
86+ ac := m .(* client.Client )
87+ name := d .Get ("name" ).(string )
8388
84- iap := expandPermissionSet (d )
85- err := ac .CreatePermissionsSet (iap )
86-
87- if err != nil {
88- return err
89- }
90- d .SetId (name )
91- return resourcePermissionSetRead (d , m )
89+ iap := expandPermissionSet (d )
90+ if err := ac .CreatePermissionsSet (iap ); err != nil {
91+ return diag .FromErr (err )
92+ }
93+
94+ d .SetId (name )
95+ readDiags := resourcePermissionSetRead (ctx , d , m )
96+ if readDiags .HasError () {
97+ return readDiags
98+ }
99+
100+ return diags
92101}
93102
94- func resourcePermissionSetUpdate (d * schema.ResourceData , m interface {}) error {
95- logPermissionSetWarning ()
96-
97- ac := m .( * client. Client )
98- name := d . Get ( "name" ).( string )
99-
100- if d . HasChanges ( "description" , "ui_access" , "is_super" , "actions" ) {
101- iap := expandPermissionSet ( d )
102- err := ac . UpdatePermissionsSet ( iap )
103- if err = = nil {
104- err1 := resourcePermissionSetRead ( d , m )
105- if err1 == nil {
106- d . SetId ( name )
107- } else {
108- return err1
109- }
110- } else {
111- return err
112- }
113- }
114- return nil
103+ func resourcePermissionSetUpdate (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
104+ var diags diag. Diagnostics
105+ diags = addSaasPermissionSetWarning ( diags )
106+
107+ ac := m .( * client. Client )
108+ name := d . Get ( "name" ).( string )
109+
110+ if d . HasChanges ( "description" , "ui_access" , "is_super" , "actions" ) {
111+ iap := expandPermissionSet ( d )
112+ if err := ac . UpdatePermissionsSet ( iap ); err ! = nil {
113+ return diag . FromErr ( err )
114+ }
115+
116+ readDiags := resourcePermissionSetRead ( ctx , d , m )
117+ if readDiags . HasError () {
118+ return readDiags
119+ }
120+
121+ d . SetId ( name )
122+ }
123+ return diags
115124}
116125
117- func resourcePermissionSetRead (d * schema.ResourceData , m interface {}) error {
118- ac := m .(* client.Client )
126+ func resourcePermissionSetRead (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
127+ ac := m .(* client.Client )
128+ iap , err := ac .GetPermissionsSet (d .Id ())
119129
120- iap , err := ac .GetPermissionsSet (d .Id ())
121-
122- if err != nil {
123- if strings .Contains (fmt .Sprintf ("%s" , err ), "404" ) {
124- d .SetId ("" )
125- return nil
126- }
127- return err
128- }
130+ if err != nil {
131+ if strings .Contains (fmt .Sprintf ("%s" , err ), "404" ) {
132+ d .SetId ("" )
133+ return nil
134+ }
135+ return diag .FromErr (err )
136+ }
129137
130- d .Set ("name" , iap .Name )
131- d .Set ("description" , iap .Description )
132- d .Set ("author" , iap .Author )
133- d .Set ("ui_access" , iap .UiAccess )
134- d .Set ("is_super" , iap .IsSuper )
135- d .Set ("actions" , iap .Actions )
138+ d .Set ("name" , iap .Name )
139+ d .Set ("description" , iap .Description )
140+ d .Set ("author" , iap .Author )
141+ d .Set ("ui_access" , iap .UiAccess )
142+ d .Set ("is_super" , iap .IsSuper )
143+ d .Set ("actions" , iap .Actions )
136144
137- return nil
145+ return nil
138146}
139147
140- func resourcePermissionSetDelete (d * schema.ResourceData , m interface {}) error {
141- ac := m .(* client.Client )
142- name := d .Get ("name" ).(string )
143- err := ac .DeletePermissionsSet (name )
144-
145- if err == nil {
146- d .SetId ("" )
147- } else {
148- return err
149- }
150- return nil
148+ func resourcePermissionSetDelete (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
149+ ac := m .(* client.Client )
150+ name := d .Get ("name" ).(string )
151+
152+ if err := ac .DeletePermissionsSet (name ); err != nil {
153+ return diag .FromErr (err )
154+ }
155+
156+ d .SetId ("" )
157+ return nil
151158}
152159
153160func expandPermissionSet (d * schema.ResourceData ) * client.PermissionsSet {
0 commit comments