@@ -16,6 +16,7 @@ func ResourceUser() *schema.Resource {
16
16
return & schema.Resource {
17
17
CreateContext : resourceIamUserCreate ,
18
18
ReadContext : resourceIamUserRead ,
19
+ UpdateContext : resourceIamUserUpdate ,
19
20
DeleteContext : resourceIamUserDelete ,
20
21
Importer : & schema.ResourceImporter {
21
22
StateContext : schema .ImportStatePassthroughContext ,
@@ -28,6 +29,14 @@ func ResourceUser() *schema.Resource {
28
29
ForceNew : true ,
29
30
Description : "The description of the iam user" ,
30
31
},
32
+ "tags" : {
33
+ Type : schema .TypeList ,
34
+ Elem : & schema.Schema {
35
+ Type : schema .TypeString ,
36
+ },
37
+ Optional : true ,
38
+ Description : "The tags associated with the user" ,
39
+ },
31
40
"created_at" : {
32
41
Type : schema .TypeString ,
33
42
Computed : true ,
@@ -79,6 +88,7 @@ func resourceIamUserCreate(ctx context.Context, d *schema.ResourceData, m interf
79
88
user , err := api .CreateUser (& iam.CreateUserRequest {
80
89
OrganizationID : d .Get ("organization_id" ).(string ),
81
90
Email : & email ,
91
+ Tags : types .ExpandStrings (d .Get ("tags" )),
82
92
}, scw .WithContext (ctx ))
83
93
if err != nil {
84
94
return diag .FromErr (err )
@@ -107,6 +117,7 @@ func resourceIamUserRead(ctx context.Context, d *schema.ResourceData, m interfac
107
117
_ = d .Set ("updated_at" , types .FlattenTime (user .UpdatedAt ))
108
118
_ = d .Set ("organization_id" , user .OrganizationID )
109
119
_ = d .Set ("deletable" , user .Deletable )
120
+ _ = d .Set ("tags" , types .FlattenSliceString (group .Tags ))
110
121
_ = d .Set ("last_login_at" , types .FlattenTime (user .LastLoginAt ))
111
122
_ = d .Set ("type" , user .Type )
112
123
_ = d .Set ("status" , user .Status )
@@ -115,6 +126,29 @@ func resourceIamUserRead(ctx context.Context, d *schema.ResourceData, m interfac
115
126
return nil
116
127
}
117
128
129
+ func resourceIamUserUpdate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
130
+ api := NewAPI (m )
131
+
132
+ user , err := api .GetUser (& iam.GetUserRequest {
133
+ UserID : d .Id (),
134
+ }, scw .WithContext (ctx ))
135
+ if err != nil {
136
+ return diag .FromErr (err )
137
+ }
138
+
139
+ if d .HasChanges ("tags" ) {
140
+ _ , err = api .UpdateUser (& iam.UpdateUserRequest {
141
+ UserID : user .ID ,
142
+ Tags : types .ExpandUpdatedStringsPtr (d .Get ("tags" )),
143
+ }, scw .WithContext (ctx ))
144
+ if err != nil {
145
+ return diag .FromErr (err )
146
+ }
147
+ }
148
+
149
+ return resourceIamUserRead (ctx , d , m )
150
+ }
151
+
118
152
func resourceIamUserDelete (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
119
153
api := NewAPI (m )
120
154
0 commit comments