func resourceIngestPipelineTemplateRead()

in internal/elasticsearch/ingest/pipeline.go [140:206]


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

	pipeline, diags := elasticsearch.GetIngestPipeline(ctx, client, &compId.ResourceId)
	if pipeline == nil && diags == nil {
		tflog.Warn(ctx, fmt.Sprintf(`Injest pipeline "%s" not found, removing from state`, compId.ResourceId))
		d.SetId("")
		return diags
	}
	if diags.HasError() {
		return diags
	}
	if err := d.Set("name", pipeline.Name); err != nil {
		return diag.FromErr(err)
	}
	if desc := pipeline.Description; desc != nil {
		if err := d.Set("description", desc); err != nil {
			return diag.FromErr(err)
		}
	}
	if onFailure := pipeline.OnFailure; onFailure != nil {
		fProcs := make([]string, len(onFailure))
		for i, v := range onFailure {
			res, err := json.Marshal(v)
			if err != nil {
				return diag.FromErr(err)
			}
			fProcs[i] = string(res)
		}

		if err := d.Set("on_failure", fProcs); err != nil {
			return diag.FromErr(err)
		}
	}
	procs := make([]string, len(pipeline.Processors))
	for i, v := range pipeline.Processors {
		res, err := json.Marshal(v)
		if err != nil {
			return diag.FromErr(err)
		}
		procs[i] = string(res)
	}

	if err := d.Set("processors", procs); err != nil {
		return diag.FromErr(err)
	}

	if meta := pipeline.Metadata; meta != nil {
		meta, err := json.Marshal(meta)
		if err != nil {
			return diag.FromErr(err)
		}
		if err := d.Set("metadata", string(meta)); err != nil {
			return diag.FromErr(err)
		}
	}

	return diags
}