@@ -16,6 +16,7 @@ func ResourceUser() *schema.Resource {
1616 return & schema.Resource {
1717 CreateContext : resourceIamUserCreate ,
1818 ReadContext : resourceIamUserRead ,
19+ UpdateContext : resourceIamUserUpdate ,
1920 DeleteContext : resourceIamUserDelete ,
2021 Importer : & schema.ResourceImporter {
2122 StateContext : schema .ImportStatePassthroughContext ,
@@ -28,6 +29,14 @@ func ResourceUser() *schema.Resource {
2829 ForceNew : true ,
2930 Description : "The description of the iam user" ,
3031 },
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+ },
3140 "created_at" : {
3241 Type : schema .TypeString ,
3342 Computed : true ,
@@ -78,6 +87,7 @@ func resourceIamUserCreate(ctx context.Context, d *schema.ResourceData, m interf
7887 user , err := api .CreateUser (& iam.CreateUserRequest {
7988 OrganizationID : d .Get ("organization_id" ).(string ),
8089 Email : d .Get ("email" ).(string ),
90+ Tags : types .ExpandStrings (d .Get ("tags" )),
8191 }, scw .WithContext (ctx ))
8292 if err != nil {
8393 return diag .FromErr (err )
@@ -106,6 +116,7 @@ func resourceIamUserRead(ctx context.Context, d *schema.ResourceData, m interfac
106116 _ = d .Set ("updated_at" , types .FlattenTime (user .UpdatedAt ))
107117 _ = d .Set ("organization_id" , user .OrganizationID )
108118 _ = d .Set ("deletable" , user .Deletable )
119+ _ = d .Set ("tags" , types .FlattenSliceString (group .Tags ))
109120 _ = d .Set ("last_login_at" , types .FlattenTime (user .LastLoginAt ))
110121 _ = d .Set ("type" , user .Type )
111122 _ = d .Set ("status" , user .Status )
@@ -114,6 +125,29 @@ func resourceIamUserRead(ctx context.Context, d *schema.ResourceData, m interfac
114125 return nil
115126}
116127
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+
117151func resourceIamUserDelete (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
118152 api := NewAPI (m )
119153
0 commit comments