func resourceIlmRead()

in internal/elasticsearch/index/ilm.go [628:679]


func resourceIlmRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
	client, diags := clients.NewApiClientFromSDKResource(d, meta)
	if diags.HasError() {
		return diags
	}

	id := d.Id()
	compId, diags := clients.CompositeIdFromStr(id)
	if diags.HasError() {
		return diags
	}
	policyId := compId.ResourceId

	ilmDef, diags := elasticsearch.GetIlm(ctx, client, policyId)
	if ilmDef == nil && diags == nil {
		tflog.Warn(ctx, fmt.Sprintf(`ILM policy "%s" not found, removing from state`, compId.ResourceId))
		d.SetId("")
		return diags
	}
	if diags.HasError() {
		return diags
	}

	if err := d.Set("modified_date", ilmDef.Modified); err != nil {
		return diag.FromErr(err)
	}
	if ilmDef.Policy.Metadata != nil {
		metadata, err := json.Marshal(ilmDef.Policy.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("name", policyId); err != nil {
		return diag.FromErr(err)
	}
	for _, ph := range supportedIlmPhases {
		if v, ok := ilmDef.Policy.Phases[ph]; ok {
			phase, diags := flattenPhase(ph, v, d)
			if diags.HasError() {
				return diags
			}
			if err := d.Set(ph, phase); err != nil {
				return diag.FromErr(err)
			}
		}
	}

	return diags
}