in internal/elasticsearch/security/user.go [108:161]
func resourceSecurityUserPut(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, diags := clients.NewApiClientFromSDKResource(d, meta)
if diags.HasError() {
return diags
}
usernameId := d.Get("username").(string)
id, diags := client.ID(ctx, usernameId)
if diags.HasError() {
return diags
}
var user models.User
user.Username = usernameId
if v, ok := d.GetOk("password"); ok && d.HasChange("password") {
password := v.(string)
user.Password = &password
}
if v, ok := d.GetOk("password_hash"); ok && d.HasChange("password_hash") {
pass_hash := v.(string)
user.PasswordHash = &pass_hash
}
if v, ok := d.GetOk("email"); ok {
user.Email = v.(string)
}
if v, ok := d.GetOk("full_name"); ok {
user.FullName = v.(string)
}
user.Enabled = d.Get("enabled").(bool)
roles := make([]string, 0)
if v, ok := d.GetOk("roles"); ok {
for _, role := range v.(*schema.Set).List() {
roles = append(roles, role.(string))
}
}
user.Roles = roles
if v, ok := d.GetOk("metadata"); ok {
metadata := make(map[string]interface{})
if err := json.NewDecoder(strings.NewReader(v.(string))).Decode(&metadata); err != nil {
return diag.FromErr(err)
}
user.Metadata = metadata
}
if diags := elasticsearch.PutUser(ctx, client, &user); diags.HasError() {
return diags
}
d.SetId(id.String())
return resourceSecurityUserRead(ctx, d, meta)
}