in internal/elasticsearch/security/role.go [468:545]
func resourceSecurityRoleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, diags := clients.NewApiClientFromSDKResource(d, meta)
if diags.HasError() {
return diags
}
compId, diags := clients.CompositeIdFromStr(d.Id())
if diags.HasError() {
return diags
}
roleId := compId.ResourceId
role, diags := elasticsearch.GetRole(ctx, client, roleId)
if role == nil && diags == nil {
tflog.Warn(ctx, fmt.Sprintf(`Role "%s" not found, removing from state`, roleId))
d.SetId("")
return diags
}
if diags.HasError() {
return diags
}
// set the fields
if err := d.Set("name", roleId); err != nil {
return diag.FromErr(err)
}
// Set the description if it exists
if role.Description != nil {
if err := d.Set("description", *role.Description); err != nil {
return diag.FromErr(err)
}
}
apps := role.Applications
applications := flattenApplicationsData(&apps)
if err := d.Set("applications", applications); err != nil {
return diag.FromErr(err)
}
if err := d.Set("cluster", role.Cluster); err != nil {
return diag.FromErr(err)
}
if role.Global != nil {
global, err := json.Marshal(role.Global)
if err != nil {
return diag.FromErr(err)
}
if err := d.Set("global", string(global)); err != nil {
return diag.FromErr(err)
}
}
indices := flattenIndicesData(role.Indices)
if err := d.Set("indices", indices); err != nil {
return diag.FromErr(err)
}
remoteIndices := flattenRemoteIndicesData(role.RemoteIndices)
if err := d.Set("remote_indices", remoteIndices); err != nil {
return diag.FromErr(err)
}
if role.Metadata != nil {
metadata, err := json.Marshal(role.Metadata)
if err != nil {
return diag.FromErr(err)
}
if err := d.Set("metadata", string(metadata)); err != nil {
return diag.FromErr(err)
}
}
if err := d.Set("run_as", role.RusAs); err != nil {
return diag.FromErr(err)
}
return diags
}