11package codefresh
22
33import (
4- "fmt"
4+ "fmt"
5+ "log"
56 cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
67 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
78
@@ -26,17 +27,12 @@ func resourcePermission() *schema.Resource {
2627 Type : schema .TypeString ,
2728 Required : true ,
2829 },
29- "account" : {
30- Type : schema .TypeString ,
31- Optional : true ,
32- Computed : true ,
33- },
3430 "resource" : {
3531 Type : schema .TypeString ,
3632 Required : true ,
3733 ValidateFunc : func (val interface {}, key string ) (warns []string , errs []error ) {
3834 v := val .(string )
39- if v != "cluster" || v != "pipeline" {
35+ if v != "cluster" && v != "pipeline" {
4036 errs = append (errs , fmt .Errorf ("%q must be between \" pipeline\" or \" cluster\" , got: %s" , key , v ))
4137 }
4238 return
@@ -47,7 +43,7 @@ func resourcePermission() *schema.Resource {
4743 Required : true ,
4844 ValidateFunc : func (val interface {}, key string ) (warns []string , errs []error ) {
4945 v := val .(string )
50- if v != "create" || v != "read" || v != "update" || v != "delete" || v != "approve" {
46+ if v != "create" && v != "read" && v != "update" && v != "delete" && v != "run" && v != "approve" {
5147 errs = append (errs , fmt .Errorf ("%q must be between one of create,read,update,delete,approve, got: %s" , key , v ))
5248 }
5349 return
@@ -59,7 +55,6 @@ func resourcePermission() *schema.Resource {
5955 Elem : & schema.Schema {
6056 Type : schema .TypeString ,
6157 },
62- Default : []string {"*" , "untagged" },
6358 },
6459 },
6560 }
@@ -70,12 +65,15 @@ func resourcePermissionCreate(d *schema.ResourceData, meta interface{}) error {
7065
7166 permission := * mapResourceToPermission (d )
7267
73- resp , err := client .CreatePermission (& permission )
68+ newPermission , err := client .CreatePermission (& permission )
7469 if err != nil {
7570 return err
7671 }
72+ if newPermission == nil {
73+ return fmt .Errorf ("resourcePermissionCreate - failed to create permission, empty responce" )
74+ }
7775
78- d .SetId (resp .ID )
76+ d .SetId (newPermission .ID )
7977
8078 return resourcePermissionRead (d , meta )
8179}
@@ -107,17 +105,16 @@ func resourcePermissionUpdate(d *schema.ResourceData, meta interface{}) error {
107105 client := meta .(* cfClient.Client )
108106
109107 permission := * mapResourceToPermission (d )
110-
111-
112- // existingPermission, err := client.GetPermissionByID(permission.ID)
113- // if err != nil {
114- // return nil
115- // }
116-
108+ permission .ID = ""
117109 resp , err := client .CreatePermission (& permission )
118110 if err != nil {
119111 return err
120- }
112+ }
113+
114+ deleteErr := resourcePermissionDelete (d , meta )
115+ if deleteErr != nil {
116+ log .Printf ("[WARN] failed to delete permission %v: %v" ,permission , deleteErr )
117+ }
121118 d .SetId (resp .ID )
122119
123120 return resourcePermissionRead (d , meta )
@@ -146,11 +143,6 @@ func mapPermissionToResource(permission *cfClient.Permission, d *schema.Resource
146143 return err
147144 }
148145
149- err = d .Set ("account" , permission .Account )
150- if err != nil {
151- return err
152- }
153-
154146 err = d .Set ("action" , permission .Action )
155147 if err != nil {
156148 return err
@@ -171,14 +163,19 @@ func mapPermissionToResource(permission *cfClient.Permission, d *schema.Resource
171163
172164func mapResourceToPermission (d * schema.ResourceData ) * cfClient.Permission {
173165
174- tags := d .Get ("tags" ).(* schema.Set ).List ()
166+ tagsI := d .Get ("tags" ).(* schema.Set ).List ()
167+ var tags []string
168+ if len (tagsI ) > 0 {
169+ tags = convertStringArr (tagsI )
170+ } else {
171+ tags = []string {"*" , "untagged" }
172+ }
175173 permission := & cfClient.Permission {
176174 ID : d .Id (),
177175 Team : d .Get ("team" ).(string ),
178176 Action : d .Get ("action" ).(string ),
179- Resource : d .Get ("string" ).(string ),
180- //Account: d.Get("account_id").(string),
181- Tags : convertStringArr (tags ),
177+ Resource : d .Get ("resource" ).(string ),
178+ Tags : tags ,
182179 }
183180
184181 return permission
0 commit comments