func resourceSecurityRoleMappingRead()

in internal/elasticsearch/security/role_mapping.go [126:183]


func resourceSecurityRoleMappingRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
	client, diags := clients.NewApiClientFromSDKResource(d, meta)
	if diags.HasError() {
		return diags
	}
	resourceID, diags := clients.ResourceIDFromStr(d.Id())
	if diags.HasError() {
		return diags
	}
	roleMapping, diags := elasticsearch.GetRoleMapping(ctx, client, resourceID)
	if roleMapping == nil && diags == nil {
		tflog.Warn(ctx, fmt.Sprintf(`Role mapping "%s" not found, removing from state`, resourceID))
		d.SetId("")
		return diags
	}
	if diags.HasError() {
		return diags
	}

	rules, err := json.Marshal(roleMapping.Rules)
	if err != nil {
		return diag.FromErr(err)
	}

	metadata, err := json.Marshal(roleMapping.Metadata)
	if err != nil {
		return diag.FromErr(err)
	}

	if err := d.Set("name", roleMapping.Name); err != nil {
		return diag.FromErr(err)
	}
	if len(roleMapping.Roles) > 0 {
		if err := d.Set("roles", roleMapping.Roles); err != nil {
			return diag.FromErr(err)
		}
	}
	if len(roleMapping.RoleTemplates) > 0 {
		roleTemplates, err := json.Marshal(roleMapping.RoleTemplates)
		if err != nil {
			return diag.FromErr(err)
		}

		if err := d.Set("role_templates", string(roleTemplates)); err != nil {
			return diag.FromErr(err)
		}
	}
	if err := d.Set("enabled", roleMapping.Enabled); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("rules", string(rules)); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("metadata", string(metadata)); err != nil {
		return diag.FromErr(err)
	}
	return nil
}