diff --git a/docs/data-sources/interfaces.md b/docs/data-sources/interfaces.md index 8490d764..b5ab815d 100644 --- a/docs/data-sources/interfaces.md +++ b/docs/data-sources/interfaces.md @@ -27,30 +27,16 @@ Read-Only: - `comment` (String) - `default_name` (String) - `disabled` (Boolean) -- `fp_rx_byte` (Number) -- `fp_rx_packet` (Number) -- `fp_tx_byte` (Number) -- `fp_tx_packet` (Number) - `id` (String) - `l2mtu` (Number) - `last_link_down_time` (String) - `last_link_up_time` (String) -- `link_downs` (Number) - `mac_address` (String) - `max_l2mtu` (Number) - `mtu` (String) - `name` (String) - `running` (Boolean) -- `rx_byte` (Number) -- `rx_drop` (Number) -- `rx_error` (Number) -- `rx_packet` (Number) - `slave` (Boolean) -- `tx_byte` (Number) -- `tx_drop` (Number) -- `tx_error` (Number) -- `tx_packet` (Number) -- `tx_queue_drop` (Number) - `type` (String) diff --git a/docs/data-sources/ip_firewall.md b/docs/data-sources/ip_firewall.md index 77983f56..531f4e4a 100644 --- a/docs/data-sources/ip_firewall.md +++ b/docs/data-sources/ip_firewall.md @@ -136,7 +136,6 @@ Read-Only: - `out_interface_list` (String) - `packet_mark` (String) - `packet_size` (String) -- `packets` (Number) - `passthrough` (Boolean) - `per_connection_classifier` (String) - `port` (String) @@ -210,7 +209,6 @@ Read-Only: - `out_interface_list` (String) - `packet_mark` (String) - `packet_size` (String) -- `packets` (Number) - `per_connection_classifier` (String) - `port` (String) - `priority` (Number) @@ -286,7 +284,6 @@ Read-Only: - `out_interface_list` (String) - `packet_mark` (String) - `packet_size` (String) -- `packets` (Number) - `per_connection_classifier` (String) - `port` (String) - `priority` (Number) diff --git a/docs/data-sources/ipv6_firewall.md b/docs/data-sources/ipv6_firewall.md index dfd58c33..c9623e21 100644 --- a/docs/data-sources/ipv6_firewall.md +++ b/docs/data-sources/ipv6_firewall.md @@ -63,7 +63,6 @@ Read-Only: - `out_interface_list` (String) - `packet_mark` (String) - `packet_size` (String) -- `packets` (Number) - `per_connection_classifier` (String) - `port` (String) - `priority` (Number) diff --git a/docs/data-sources/system_resource.md b/docs/data-sources/system_resource.md index 6f9266b8..1d5e9a80 100644 --- a/docs/data-sources/system_resource.md +++ b/docs/data-sources/system_resource.md @@ -19,18 +19,11 @@ data "routeros_system_resource" "data" {} - `build_time` (String) - `cpu` (String) - `cpu_count` (Number) -- `cpu_frequency` (Number) -- `cpu_load` (Number) - `factory_software` (String) -- `free_hdd_space` (Number) -- `free_memory` (Number) - `id` (String) The ID of this resource. - `platform` (String) - `total_hdd_space` (Number) - `total_memory` (Number) -- `uptime` (String) - `version` (String) -- `write_sect_since_reboot` (Number) -- `write_sect_total` (Number) diff --git a/docs/resources/tool_bandwidth_server.md b/docs/resources/tool_bandwidth_server.md index 8159f766..35d0e76c 100644 --- a/docs/resources/tool_bandwidth_server.md +++ b/docs/resources/tool_bandwidth_server.md @@ -3,11 +3,11 @@ ## Example Usage ```terraform -resource "routeros_tool_bandwidth_server" "test" { - enabled = true - authenticate = false - max_sessions = 100 - allocate_udp_ports_from = 2000 +resource "routeros_tool_bandwidth_server" "test" { + enabled = true + authenticate = false + max_sessions = 100 + allocate_udp_ports_from = 2000 } ``` diff --git a/routeros/datasource_interfaces.go b/routeros/datasource_interfaces.go index 1b81e54a..c46a52ab 100644 --- a/routeros/datasource_interfaces.go +++ b/routeros/datasource_interfaces.go @@ -2,6 +2,7 @@ package routeros import ( "context" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) @@ -12,7 +13,11 @@ func DatasourceInterfaces() *schema.Resource { Schema: map[string]*schema.Schema{ MetaResourcePath: PropResourcePath("/interface"), MetaId: PropId(Id), - + MetaSkipFields: PropSkipFields( + "fp_rx_byte", "fp_rx_packet", "fp_tx_byte", "fp_tx_packet", "link_downs", + "rx_byte", "rx_drop", "rx_error", "rx_packet", "tx_byte", + "tx_drop", "tx_error", "tx_packet", "tx_queue_drop", + ), KeyFilter: PropFilterRw, "interfaces": { Type: schema.TypeList, @@ -39,22 +44,6 @@ func DatasourceInterfaces() *schema.Resource { Type: schema.TypeBool, Computed: true, }, - "fp_rx_byte": { - Type: schema.TypeInt, - Computed: true, - }, - "fp_rx_packet": { - Type: schema.TypeInt, - Computed: true, - }, - "fp_tx_byte": { - Type: schema.TypeInt, - Computed: true, - }, - "fp_tx_packet": { - Type: schema.TypeInt, - Computed: true, - }, "l2mtu": { Type: schema.TypeInt, Computed: true, @@ -67,10 +56,6 @@ func DatasourceInterfaces() *schema.Resource { Type: schema.TypeString, Computed: true, }, - "link_downs": { - Type: schema.TypeInt, - Computed: true, - }, "mac_address": { Type: schema.TypeString, Computed: true, @@ -92,46 +77,10 @@ func DatasourceInterfaces() *schema.Resource { Type: schema.TypeBool, Computed: true, }, - "rx_byte": { - Type: schema.TypeInt, - Computed: true, - }, - "rx_drop": { - Type: schema.TypeInt, - Computed: true, - }, - "rx_error": { - Type: schema.TypeInt, - Computed: true, - }, - "rx_packet": { - Type: schema.TypeInt, - Computed: true, - }, "slave": { Type: schema.TypeBool, Computed: true, }, - "tx_byte": { - Type: schema.TypeInt, - Computed: true, - }, - "tx_drop": { - Type: schema.TypeInt, - Computed: true, - }, - "tx_error": { - Type: schema.TypeInt, - Computed: true, - }, - "tx_packet": { - Type: schema.TypeInt, - Computed: true, - }, - "tx_queue_drop": { - Type: schema.TypeInt, - Computed: true, - }, "type": { Type: schema.TypeString, Computed: true, diff --git a/routeros/datasource_ip_firewall.go b/routeros/datasource_ip_firewall.go index d0d081a6..f1ca48b2 100644 --- a/routeros/datasource_ip_firewall.go +++ b/routeros/datasource_ip_firewall.go @@ -19,6 +19,8 @@ func DatasourceIPFirewall() *schema.Resource { - rules (aka filter) `, Schema: map[string]*schema.Schema{ + MetaSkipFields: PropSkipFields("packets"), + "address_list": getIPFirewallAddrListSchema(), "mangle": getIPFirewallMangleSchema(), "nat": getIPFirewallNatSchema(), diff --git a/routeros/datasource_ip_firewall_filter.go b/routeros/datasource_ip_firewall_filter.go index 04ce20e2..eef6fd8d 100644 --- a/routeros/datasource_ip_firewall_filter.go +++ b/routeros/datasource_ip_firewall_filter.go @@ -186,10 +186,6 @@ func getIPFirewallFilterSchema() *schema.Schema { Type: schema.TypeString, Computed: true, }, - "packets": { - Type: schema.TypeInt, - Computed: true, - }, "packet_mark": { Type: schema.TypeString, Computed: true, diff --git a/routeros/datasource_ip_firewall_mangle.go b/routeros/datasource_ip_firewall_mangle.go index 2df36f4b..05262a4d 100644 --- a/routeros/datasource_ip_firewall_mangle.go +++ b/routeros/datasource_ip_firewall_mangle.go @@ -216,10 +216,6 @@ func getIPFirewallMangleSchema() *schema.Schema { Type: schema.TypeString, Computed: true, }, - "packets": { - Type: schema.TypeInt, - Computed: true, - }, "packet_mark": { Type: schema.TypeString, Computed: true, diff --git a/routeros/datasource_ip_firewall_nat.go b/routeros/datasource_ip_firewall_nat.go index 7dd0ae93..60157588 100644 --- a/routeros/datasource_ip_firewall_nat.go +++ b/routeros/datasource_ip_firewall_nat.go @@ -180,10 +180,6 @@ func getIPFirewallNatSchema() *schema.Schema { Type: schema.TypeString, Computed: true, }, - "packets": { - Type: schema.TypeInt, - Computed: true, - }, "packet_mark": { Type: schema.TypeString, Computed: true, @@ -216,7 +212,6 @@ func getIPFirewallNatSchema() *schema.Schema { Type: schema.TypeInt, Computed: true, }, - "routing_mark": { Type: schema.TypeString, Computed: true, diff --git a/routeros/datasource_ipv6_firewall.go b/routeros/datasource_ipv6_firewall.go index f1c9d107..e2de8e25 100644 --- a/routeros/datasource_ipv6_firewall.go +++ b/routeros/datasource_ipv6_firewall.go @@ -16,6 +16,8 @@ func DatasourceIPv6Firewall() *schema.Resource { - rules (aka filter) `, Schema: map[string]*schema.Schema{ + MetaSkipFields: PropSkipFields("packets"), + "rules": getIPv6FirewallFilterSchema(), }, } diff --git a/routeros/datasource_ipv6_firewall_filter.go b/routeros/datasource_ipv6_firewall_filter.go index 5af3f6c6..cf4197f1 100644 --- a/routeros/datasource_ipv6_firewall_filter.go +++ b/routeros/datasource_ipv6_firewall_filter.go @@ -158,10 +158,6 @@ func getIPv6FirewallFilterSchema() *schema.Schema { Type: schema.TypeString, Computed: true, }, - "packets": { - Type: schema.TypeInt, - Computed: true, - }, "packet_mark": { Type: schema.TypeString, Computed: true, diff --git a/routeros/datasource_system_resource.go b/routeros/datasource_system_resource.go index 66e7a415..410124f4 100644 --- a/routeros/datasource_system_resource.go +++ b/routeros/datasource_system_resource.go @@ -10,6 +10,10 @@ func DatasourceSystemResource() *schema.Resource { resSchema := map[string]*schema.Schema{ MetaResourcePath: PropResourcePath("/system/resource"), MetaId: PropId(Id), + MetaSkipFields: PropSkipFields( + "cpu_frequency", "cpu_load", "free_hdd_space", "free_memory", + "uptime", "write_sect_since_reboot", "write_sect_total", + ), "architecture_name": { // Sample = architecture-name: "x86_64" Type: schema.TypeString, Computed: true, @@ -30,26 +34,10 @@ func DatasourceSystemResource() *schema.Resource { Type: schema.TypeInt, Computed: true, }, - "cpu_frequency": { // Sample = cpu-frequency: "2396" - Type: schema.TypeInt, - Computed: true, - }, - "cpu_load": { // Sample = cpu-load: "3" - Type: schema.TypeInt, - Computed: true, - }, "factory_software": { // Sample = factory-software: "7.1" Type: schema.TypeString, Computed: true, }, - "free_hdd_space": { // Sample = free-hdd-space: "74567680" - Type: schema.TypeInt, - Computed: true, - }, - "free_memory": { // Sample = free-memory: "393805824" - Type: schema.TypeInt, - Computed: true, - }, "platform": { // Sample = platform: "MikroTik" Type: schema.TypeString, Computed: true, @@ -62,22 +50,10 @@ func DatasourceSystemResource() *schema.Resource { Type: schema.TypeInt, Computed: true, }, - "uptime": { // Sample = uptime: "21h43m21s" - Type: schema.TypeString, - Computed: true, - }, "version": { // Sample = version: "7.10 (stable)" Type: schema.TypeString, Computed: true, }, - "write_sect_since_reboot": { // Sample = write-sect-since-reboot: "6936" - Type: schema.TypeInt, - Computed: true, - }, - "write_sect_total": { // Sample = write-sect-total: "6936" - Type: schema.TypeInt, - Computed: true, - }, } return &schema.Resource{ diff --git a/routeros/mikrotik_serialize.go b/routeros/mikrotik_serialize.go index 035a99d2..ea9eee75 100644 --- a/routeros/mikrotik_serialize.go +++ b/routeros/mikrotik_serialize.go @@ -547,6 +547,11 @@ func MikrotikResourceDataToTerraformDatasource(items *[]MikrotikItem, resourceDa var dsItems []map[string]interface{} // System resource have an empty 'resourceDataKeyName'. var isSystemDatasource bool = (resourceDataKeyName == "") + var skipFields map[string]struct{} + + if sf, ok := s[MetaSkipFields]; ok { + skipFields = loadSkipFields(sf.Default.(string)) + } // Checking the schema. if !isSystemDatasource { @@ -598,6 +603,13 @@ func MikrotikResourceDataToTerraformDatasource(items *[]MikrotikItem, resourceDa // field-name => field_name terraformSnakeName := KebabToSnake(mikrotikKebabName) + + if skipFields != nil { + if _, ok := skipFields[terraformSnakeName]; ok { + continue + } + } + if _, ok := s[terraformSnakeName]; !ok { // For development. //panic("[MikrotikResourceDataToTerraformDatasource] the field was lost during development.: " + terraformSnakeName)