@@ -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 ,
@@ -78,6 +87,7 @@ func resourceIamUserCreate(ctx context.Context, d *schema.ResourceData, m interf
78
87
user , err := api .CreateUser (& iam.CreateUserRequest {
79
88
OrganizationID : d .Get ("organization_id" ).(string ),
80
89
Email : d .Get ("email" ).(string ),
90
+ Tags : types .ExpandStrings (d .Get ("tags" )),
81
91
}, scw .WithContext (ctx ))
82
92
if err != nil {
83
93
return diag .FromErr (err )
@@ -106,6 +116,7 @@ func resourceIamUserRead(ctx context.Context, d *schema.ResourceData, m interfac
106
116
_ = d .Set ("updated_at" , types .FlattenTime (user .UpdatedAt ))
107
117
_ = d .Set ("organization_id" , user .OrganizationID )
108
118
_ = d .Set ("deletable" , user .Deletable )
119
+ _ = d .Set ("tags" , types .FlattenSliceString (group .Tags ))
109
120
_ = d .Set ("last_login_at" , types .FlattenTime (user .LastLoginAt ))
110
121
_ = d .Set ("type" , user .Type )
111
122
_ = d .Set ("status" , user .Status )
@@ -114,6 +125,29 @@ func resourceIamUserRead(ctx context.Context, d *schema.ResourceData, m interfac
114
125
return nil
115
126
}
116
127
128
+ func resourceIamUserUpdate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
129
+ api := NewAPI (m )
130
+
131
+ user , err := api .GetUser (& iam.GetUserRequest {
132
+ UserID : d .Id (),
133
+ }, scw .WithContext (ctx ))
134
+ if err != nil {
135
+ return diag .FromErr (err )
136
+ }
137
+
138
+ if d .HasChanges ("tags" ) {
139
+ _ , err = api .UpdateUser (& iam.UpdateUserRequest {
140
+ UserID : user .ID ,
141
+ Tags : types .ExpandUpdatedStringsPtr (d .Get ("tags" )),
142
+ }, scw .WithContext (ctx ))
143
+ if err != nil {
144
+ return diag .FromErr (err )
145
+ }
146
+ }
147
+
148
+ return resourceIamUserRead (ctx , d , m )
149
+ }
150
+
117
151
func resourceIamUserDelete (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
118
152
api := NewAPI (m )
119
153
0 commit comments