func resourceSlmRead()

in internal/elasticsearch/cluster/slm.go [239:329]


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

	slm, diags := elasticsearch.GetSlm(ctx, client, id.ResourceId)
	if slm == nil && diags == nil {
		tflog.Warn(ctx, fmt.Sprintf(`SLM policy "%s" not found, removing from state`, id.ResourceId))
		d.SetId("")
		return diags
	}
	if diags.HasError() {
		return diags
	}

	if err := d.Set("name", id.ResourceId); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("snapshot_name", slm.Name); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("repository", slm.Repository); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("schedule", slm.Schedule); err != nil {
		return diag.FromErr(err)
	}
	if slm.Retention != nil {
		if v := slm.Retention.ExpireAfter; v != nil {
			if err := d.Set("expire_after", *v); err != nil {
				return diag.FromErr(err)
			}
		}
		if v := slm.Retention.MaxCount; v != nil {
			if err := d.Set("max_count", *v); err != nil {
				return diag.FromErr(err)
			}
		}
		if v := slm.Retention.MinCount; v != nil {
			if err := d.Set("min_count", *v); err != nil {
				return diag.FromErr(err)
			}
		}
	}

	if c := slm.Config; c != nil {
		if c.ExpandWildcards != nil {
			if err := d.Set("expand_wildcards", *c.ExpandWildcards); err != nil {
				return diag.FromErr(err)
			}
		}

		if c.IncludeGlobalState != nil {
			if err := d.Set("include_global_state", *c.IncludeGlobalState); err != nil {
				return diag.FromErr(err)
			}
		}
		if c.IgnoreUnavailable != nil {
			if err := d.Set("ignore_unavailable", *c.IgnoreUnavailable); err != nil {
				return diag.FromErr(err)
			}
		}
		if c.Partial != nil {
			if err := d.Set("partial", *c.Partial); err != nil {
				return diag.FromErr(err)
			}
		}
		if c.Metadata != nil {
			meta, err := json.Marshal(c.Metadata)
			if err != nil {
				return diag.FromErr(err)
			}
			if err := d.Set("metadata", meta); err != nil {
				return diag.FromErr(err)
			}
		}
		if err := d.Set("indices", c.Indices); err != nil {
			return diag.FromErr(err)
		}
		if err := d.Set("feature_states", c.FeatureStates); err != nil {
			return diag.FromErr(err)
		}
	}

	return diags
}