func dataSourceProcessorCommunityIdRead()

in internal/elasticsearch/ingest/processor_community_id_data_source.go [128:206]


func dataSourceProcessorCommunityIdRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
	var diags diag.Diagnostics

	processor := &models.ProcessorCommunityId{}

	processor.IgnoreFailure = d.Get("ignore_failure").(bool)
	processor.IgnoreMissing = d.Get("ignore_missing").(bool)
	seed := d.Get("seed").(int)
	processor.Seed = &seed

	if v, ok := d.GetOk("source_ip"); ok {
		processor.SourceIp = v.(string)
	}
	if v, ok := d.GetOk("source_port"); ok {
		port := v.(int)
		processor.SourcePort = &port
	}
	if v, ok := d.GetOk("destination_ip"); ok {
		processor.DestinationIp = v.(string)
	}
	if v, ok := d.GetOk("destination_port"); ok {
		port := v.(int)
		processor.DestinationPort = &port
	}
	if v, ok := d.GetOk("iana_number"); ok {
		processor.IanaNumber = v.(string)
	}
	if v, ok := d.GetOk("icmp_type"); ok {
		num := v.(int)
		processor.IcmpType = &num
	}
	if v, ok := d.GetOk("icmp_code"); ok {
		num := v.(int)
		processor.IcmpCode = &num
	}
	if v, ok := d.GetOk("transport"); ok {
		processor.Transport = v.(string)
	}
	if v, ok := d.GetOk("target_field"); ok {
		processor.TargetField = v.(string)
	}
	if v, ok := d.GetOk("description"); ok {
		processor.Description = v.(string)
	}
	if v, ok := d.GetOk("if"); ok {
		processor.If = v.(string)
	}
	if v, ok := d.GetOk("tag"); ok {
		processor.Tag = v.(string)
	}
	if v, ok := d.GetOk("on_failure"); ok {
		onFailure := make([]map[string]interface{}, len(v.([]interface{})))
		for i, f := range v.([]interface{}) {
			item := make(map[string]interface{})
			if err := json.NewDecoder(strings.NewReader(f.(string))).Decode(&item); err != nil {
				return diag.FromErr(err)
			}
			onFailure[i] = item
		}
		processor.OnFailure = onFailure
	}

	processorJson, err := json.MarshalIndent(map[string]*models.ProcessorCommunityId{"community_id": processor}, "", " ")
	if err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("json", string(processorJson)); err != nil {
		return diag.FromErr(err)
	}

	hash, err := utils.StringToHash(string(processorJson))
	if err != nil {
		return diag.FromErr(err)
	}

	d.SetId(*hash)

	return diags
}