Skip to content

Commit 34cd61e

Browse files
Shani ErmanShani Erman
authored andcommitted
d
1 parent d4215b2 commit 34cd61e

File tree

2 files changed

+78
-71
lines changed

2 files changed

+78
-71
lines changed

aquasec/resource_permission_set.go

Lines changed: 78 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,20 @@ package aquasec
22

33
import (
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

1112
func 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

153160
func expandPermissionSet(d *schema.ResourceData) *client.PermissionsSet {

terraform-provider-aquasec

23.5 MB
Binary file not shown.

0 commit comments

Comments
 (0)