func resourceDataStreamRead()

in internal/elasticsearch/index/data_stream.go [140:211]


func resourceDataStreamRead(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
	}

	ds, diags := elasticsearch.GetDataStream(ctx, client, compId.ResourceId)
	if ds == nil && diags == nil {
		// no data stream found on ES side
		tflog.Warn(ctx, fmt.Sprintf(`Data stream "%s" not found, removing from state`, compId.ResourceId))
		d.SetId("")
		return diags
	}
	if diags.HasError() {
		return diags
	}

	if err := d.Set("name", ds.Name); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("timestamp_field", ds.TimestampField.Name); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("generation", ds.Generation); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("status", ds.Status); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("template", ds.Template); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("ilm_policy", ds.IlmPolicy); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("hidden", ds.Hidden); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("system", ds.System); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("replicated", ds.Replicated); err != nil {
		return diag.FromErr(err)
	}
	if ds.Meta != nil {
		metadata, err := json.Marshal(ds.Meta)
		if err != nil {
			return diag.FromErr(err)
		}
		if err := d.Set("metadata", string(metadata)); err != nil {
			return diag.FromErr(err)
		}
	}

	indices := make([]interface{}, len(ds.Indices))
	for i, idx := range ds.Indices {
		index := make(map[string]interface{})
		index["index_name"] = idx.IndexName
		index["index_uuid"] = idx.IndexUUID
		indices[i] = index
	}
	if err := d.Set("indices", indices); err != nil {
		return diag.FromErr(err)
	}

	return diags
}