diff --git a/routeros/mikrotik_serialize.go b/routeros/mikrotik_serialize.go index 69f2d622..a939c8f1 100644 --- a/routeros/mikrotik_serialize.go +++ b/routeros/mikrotik_serialize.go @@ -214,6 +214,11 @@ func TerraformResourceDataToMikrotik(s map[string]*schema.Schema, d *schema.Reso filedNameInState := fmt.Sprintf("%v.%v.%v", terraformSnakeName, 0, fieldName) fieldSchema := terraformMetadata.Elem.(*schema.Resource).Schema[fieldName] + // Skip all read-only properties. + if fieldSchema.Computed && !fieldSchema.Optional { + continue + } + if fieldSchema.Optional && !d.HasChange(filedNameInState) && isEmpty(filedNameInState, fieldSchema, d, ctyList.GetAttr(fieldName)) { continue @@ -378,6 +383,16 @@ func MikrotikResourceDataToTerraform(item MikrotikItem, s map[string]*schema.Sch case *schema.Resource: var v any + if _, ok := s[terraformSnakeName].Elem.(*schema.Resource).Schema[subFieldSnakeName]; !ok { + diags = append(diags, diag.Diagnostic{ + Severity: diag.Warning, + Summary: "Field '" + terraformSnakeName + "." + subFieldSnakeName + "' not found in the schema", + Detail: fmt.Sprintf("[MikrotikResourceDataToTerraformDatasource] the datasource Schema sub-field was lost during development: ▷ '%s.%s' ◁", + terraformSnakeName, subFieldSnakeName), + }) + continue + } + switch s[terraformSnakeName].Elem.(*schema.Resource).Schema[subFieldSnakeName].Type { case schema.TypeString: v = mikrotikValue diff --git a/routeros/resource_bgp_connection.go b/routeros/resource_bgp_connection.go index 81ff3cc1..4a35e1da 100644 --- a/routeros/resource_bgp_connection.go +++ b/routeros/resource_bgp_connection.go @@ -278,6 +278,11 @@ func ResourceRoutingBGPConnection() *schema.Resource { Optional: true, Description: "Local connection IPv4/6 address.", }, + "default_address": { + Type: schema.TypeString, + Computed: true, + Description: "", + }, "port": { Type: schema.TypeInt, Optional: true,