1
1
package codefresh
2
2
3
3
import (
4
- "fmt"
4
+ "fmt"
5
+ "log"
5
6
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
6
7
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
7
8
@@ -26,17 +27,12 @@ func resourcePermission() *schema.Resource {
26
27
Type : schema .TypeString ,
27
28
Required : true ,
28
29
},
29
- "account" : {
30
- Type : schema .TypeString ,
31
- Optional : true ,
32
- Computed : true ,
33
- },
34
30
"resource" : {
35
31
Type : schema .TypeString ,
36
32
Required : true ,
37
33
ValidateFunc : func (val interface {}, key string ) (warns []string , errs []error ) {
38
34
v := val .(string )
39
- if v != "cluster" || v != "pipeline" {
35
+ if v != "cluster" && v != "pipeline" {
40
36
errs = append (errs , fmt .Errorf ("%q must be between \" pipeline\" or \" cluster\" , got: %s" , key , v ))
41
37
}
42
38
return
@@ -47,7 +43,7 @@ func resourcePermission() *schema.Resource {
47
43
Required : true ,
48
44
ValidateFunc : func (val interface {}, key string ) (warns []string , errs []error ) {
49
45
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" {
51
47
errs = append (errs , fmt .Errorf ("%q must be between one of create,read,update,delete,approve, got: %s" , key , v ))
52
48
}
53
49
return
@@ -59,7 +55,6 @@ func resourcePermission() *schema.Resource {
59
55
Elem : & schema.Schema {
60
56
Type : schema .TypeString ,
61
57
},
62
- Default : []string {"*" , "untagged" },
63
58
},
64
59
},
65
60
}
@@ -70,12 +65,15 @@ func resourcePermissionCreate(d *schema.ResourceData, meta interface{}) error {
70
65
71
66
permission := * mapResourceToPermission (d )
72
67
73
- resp , err := client .CreatePermission (& permission )
68
+ newPermission , err := client .CreatePermission (& permission )
74
69
if err != nil {
75
70
return err
76
71
}
72
+ if newPermission == nil {
73
+ return fmt .Errorf ("resourcePermissionCreate - failed to create permission, empty responce" )
74
+ }
77
75
78
- d .SetId (resp .ID )
76
+ d .SetId (newPermission .ID )
79
77
80
78
return resourcePermissionRead (d , meta )
81
79
}
@@ -107,17 +105,16 @@ func resourcePermissionUpdate(d *schema.ResourceData, meta interface{}) error {
107
105
client := meta .(* cfClient.Client )
108
106
109
107
permission := * mapResourceToPermission (d )
110
-
111
-
112
- // existingPermission, err := client.GetPermissionByID(permission.ID)
113
- // if err != nil {
114
- // return nil
115
- // }
116
-
108
+ permission .ID = ""
117
109
resp , err := client .CreatePermission (& permission )
118
110
if err != nil {
119
111
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
+ }
121
118
d .SetId (resp .ID )
122
119
123
120
return resourcePermissionRead (d , meta )
@@ -146,11 +143,6 @@ func mapPermissionToResource(permission *cfClient.Permission, d *schema.Resource
146
143
return err
147
144
}
148
145
149
- err = d .Set ("account" , permission .Account )
150
- if err != nil {
151
- return err
152
- }
153
-
154
146
err = d .Set ("action" , permission .Action )
155
147
if err != nil {
156
148
return err
@@ -171,14 +163,19 @@ func mapPermissionToResource(permission *cfClient.Permission, d *schema.Resource
171
163
172
164
func mapResourceToPermission (d * schema.ResourceData ) * cfClient.Permission {
173
165
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
+ }
175
173
permission := & cfClient.Permission {
176
174
ID : d .Id (),
177
175
Team : d .Get ("team" ).(string ),
178
176
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 ,
182
179
}
183
180
184
181
return permission
0 commit comments