func resourceLogstashPipelineRead()

in internal/elasticsearch/logstash/pipeline.go [225:287]


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

	logstashPipeline, diags := elasticsearch.GetLogstashPipeline(ctx, client, resourceID)
	if logstashPipeline == nil && diags == nil {
		tflog.Warn(ctx, fmt.Sprintf(`Logstash pipeline "%s" not found, removing from state`, resourceID))
		d.SetId("")
		return diags
	}
	if diags.HasError() {
		return diags
	}

	if err := d.Set("pipeline_id", logstashPipeline.PipelineID); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("description", logstashPipeline.Description); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("last_modified", logstashPipeline.LastModified); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("pipeline", logstashPipeline.Pipeline); err != nil {
		return diag.FromErr(err)
	}

	pipelineMetadata, err := json.Marshal(logstashPipeline.PipelineMetadata)
	if err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("pipeline_metadata", string(pipelineMetadata)); err != nil {
		return diag.FromErr(err)
	}

	for key, typ := range allSettingsKeys {
		var value interface{}
		if v, ok := logstashPipeline.PipelineSettings[key]; ok {
			value = v
		} else {
			tflog.Warn(ctx, fmt.Sprintf("setting '%s' is not currently managed by terraform provider and has been ignored", key))
			continue
		}
		switch typ {
		case schema.TypeInt:
			value = int(math.Round(value.(float64)))
		}
		if err := d.Set(utils.ConvertSettingsKeyToTFFieldKey(key), value); err != nil {
			return diag.FromErr(err)
		}
	}
	if err := d.Set("username", logstashPipeline.Username); err != nil {
		return diag.FromErr(err)
	}

	return nil
}