fortinetdev / terraform-provider-fortios

Terraform Fortios provider
https://www.terraform.io/docs/providers/fortios/
Mozilla Public License 2.0
67 stars 48 forks source link

The terraform-provider-fortios_v1.14.0 plugin crashed #214

Closed acc4all closed 1 year ago

acc4all commented 2 years ago

Information

terraform --version
Terraform v1.0.11
on linux_amd64
+ provider registry.terraform.io/fortinetdev/fortios v1.14.0
+ provider registry.terraform.io/hashicorp/aws v3.32.0
+ provider registry.terraform.io/hashicorp/template v2.2.0

Version: FortiGate-VM64-AWS v6.4.8,build1914,211117 (GA)

Here is my code

resource "fortios_system_interface" "fortigate__port3_ha" {

  vdom         = "root"
  ip           = data.fortios_system_interface.fortigate__eni_ha.ip
  allowaccess  = "ping https"
  type         = "physical"
  alias        = "HA"
  mtu_override = "enable"
  mtu          = 9001

}

plan

Terraform will perform the following actions:

  # module.vpc_transit_fortigate.module.fortigate1az3.fortios_system_interface.fortigate__port3_ha will be created
  + resource "fortios_system_interface" "fortigate__port3_ha" {
      + ac_name                                    = (known after apply)
      + aggregate                                  = (known after apply)
      + algorithm                                  = (known after apply)
      + alias                                      = "HA"
      + allowaccess                                = "ping https"
      + ap_discover                                = (known after apply)
      + arpforward                                 = (known after apply)
      + auth_cert                                  = (known after apply)
      + auth_portal_addr                           = (known after apply)
      + auth_type                                  = (known after apply)
      + auto_auth_extension_device                 = (known after apply)
      + autogenerated                              = (known after apply)
      + bandwidth_measure_time                     = (known after apply)
      + bfd                                        = (known after apply)
      + bfd_desired_min_tx                         = (known after apply)
      + bfd_detect_mult                            = (known after apply)
      + bfd_required_min_rx                        = (known after apply)
      + broadcast_forticlient_discovery            = (known after apply)
      + broadcast_forward                          = (known after apply)
      + captive_portal                             = (known after apply)
      + cli_conn_status                            = (known after apply)
      + color                                      = (known after apply)
      + dedicated_to                               = (known after apply)
      + defaultgw                                  = (known after apply)
      + detected_peer_mtu                          = (known after apply)
      + detectprotocol                             = (known after apply)
      + detectserver                               = (known after apply)
      + device_access_list                         = (known after apply)
      + device_identification                      = (known after apply)
      + device_identification_active_scan          = (known after apply)
      + device_netscan                             = (known after apply)
      + device_user_identification                 = (known after apply)
      + devindex                                   = (known after apply)
      + dhcp_classless_route_addition              = (known after apply)
      + dhcp_client_identifier                     = (known after apply)
      + dhcp_relay_agent_option                    = (known after apply)
      + dhcp_relay_interface                       = (known after apply)
      + dhcp_relay_interface_select_method         = (known after apply)
      + dhcp_relay_ip                              = (known after apply)
      + dhcp_relay_link_selection                  = (known after apply)
      + dhcp_relay_request_all_server              = (known after apply)
      + dhcp_relay_service                         = (known after apply)
      + dhcp_relay_type                            = (known after apply)
      + dhcp_renew_time                            = (known after apply)
      + disc_retry_timeout                         = (known after apply)
      + disconnect_threshold                       = (known after apply)
      + distance                                   = (known after apply)
      + dns_server_override                        = (known after apply)
      + dns_server_protocol                        = (known after apply)
      + drop_fragment                              = (known after apply)
      + drop_overlapped_fragment                   = (known after apply)
      + dynamic_sort_subtable                      = "false"
      + egress_shaping_profile                     = (known after apply)
      + endpoint_compliance                        = (known after apply)
      + estimated_downstream_bandwidth             = (known after apply)
      + estimated_upstream_bandwidth               = (known after apply)
      + explicit_ftp_proxy                         = (known after apply)
      + explicit_web_proxy                         = (known after apply)
      + external                                   = (known after apply)
      + fail_action_on_extender                    = (known after apply)
      + fail_alert_method                          = (known after apply)
      + fail_detect                                = (known after apply)
      + fail_detect_option                         = (known after apply)
      + fortiheartbeat                             = (known after apply)
      + fortilink                                  = (known after apply)
      + fortilink_backup_link                      = (known after apply)
      + fortilink_neighbor_detect                  = (known after apply)
      + fortilink_split_interface                  = (known after apply)
      + fortilink_stacking                         = (known after apply)
      + forward_domain                             = (known after apply)
      + forward_error_correction                   = (known after apply)
      + gwdetect                                   = (known after apply)
      + ha_priority                                = (known after apply)
      + icmp_accept_redirect                       = (known after apply)
      + icmp_send_redirect                         = (known after apply)
      + id                                         = (known after apply)
      + ident_accept                               = (known after apply)
      + idle_timeout                               = (known after apply)
      + inbandwidth                                = (known after apply)
      + ingress_shaping_profile                    = (known after apply)
      + ingress_spillover_threshold                = (known after apply)
      + interface                                  = (known after apply)
      + internal                                   = (known after apply)
      + ip                                         = "100.120.160.26 255.255.255.240"
      + ip_managed_by_fortiipam                    = (known after apply)
      + ipmac                                      = (known after apply)
      + ips_sniffer_mode                           = (known after apply)
      + ipunnumbered                               = (known after apply)
      + l2forward                                  = (known after apply)
      + lacp_ha_slave                              = (known after apply)
      + lacp_mode                                  = (known after apply)
      + lacp_speed                                 = (known after apply)
      + lcp_echo_interval                          = (known after apply)
      + lcp_max_echo_fails                         = (known after apply)
      + link_up_delay                              = (known after apply)
      + lldp_network_policy                        = (known after apply)
      + lldp_reception                             = (known after apply)
      + lldp_transmission                          = (known after apply)
      + macaddr                                    = (known after apply)
      + managed_subnetwork_size                    = (known after apply)
      + management_ip                              = (known after apply)
      + measured_downstream_bandwidth              = (known after apply)
      + measured_upstream_bandwidth                = (known after apply)
      + mediatype                                  = (known after apply)
      + min_links                                  = (known after apply)
      + min_links_down                             = (known after apply)
      + mode                                       = (known after apply)
      + monitor_bandwidth                          = (known after apply)
      + mtu                                        = 9001
      + mtu_override                               = "enable"
      + name                                       = (known after apply)
      + ndiscforward                               = (known after apply)
      + netbios_forward                            = (known after apply)
      + netflow_sampler                            = (known after apply)
      + outbandwidth                               = (known after apply)
      + padt_retry_timeout                         = (known after apply)
      + ping_serv_status                           = (known after apply)
      + polling_interval                           = (known after apply)
      + pppoe_unnumbered_negotiate                 = (known after apply)
      + pptp_auth_type                             = (known after apply)
      + pptp_client                                = (known after apply)
      + pptp_server_ip                             = (known after apply)
      + pptp_timeout                               = (known after apply)
      + pptp_user                                  = (known after apply)
      + preserve_session_route                     = (known after apply)
      + priority                                   = (known after apply)
      + priority_override                          = (known after apply)
      + proxy_captive_portal                       = (known after apply)
      + reachable_time                             = (known after apply)
      + redundant_interface                        = (known after apply)
      + remote_ip                                  = (known after apply)
      + replacemsg_override_group                  = (known after apply)
      + ring_rx                                    = (known after apply)
      + ring_tx                                    = (known after apply)
      + role                                       = (known after apply)
      + sample_direction                           = (known after apply)
      + sample_rate                                = (known after apply)
      + scan_botnet_connections                    = (known after apply)
      + secondary_ip                               = (known after apply)
      + security_exempt_list                       = (known after apply)
      + security_external_logout                   = (known after apply)
      + security_external_web                      = (known after apply)
      + security_mac_auth_bypass                   = (known after apply)
      + security_mode                              = (known after apply)
      + security_redirect_url                      = (known after apply)
      + service_name                               = (known after apply)
      + sflow_sampler                              = (known after apply)
      + snmp_index                                 = (known after apply)
      + speed                                      = (known after apply)
      + spillover_threshold                        = (known after apply)
      + src_check                                  = (known after apply)
      + status                                     = (known after apply)
      + stp                                        = (known after apply)
      + stp_ha_secondary                           = (known after apply)
      + stpforward                                 = (known after apply)
      + stpforward_mode                            = (known after apply)
      + subst                                      = (known after apply)
      + substitute_dst_mac                         = (known after apply)
      + swc_first_create                           = (known after apply)
      + swc_vlan                                   = (known after apply)
      + switch                                     = (known after apply)
      + switch_controller_access_vlan              = (known after apply)
      + switch_controller_arp_inspection           = (known after apply)
      + switch_controller_dhcp_snooping            = (known after apply)
      + switch_controller_dhcp_snooping_option82   = (known after apply)
      + switch_controller_dhcp_snooping_verify_mac = (known after apply)
      + switch_controller_dynamic                  = (known after apply)
      + switch_controller_feature                  = (known after apply)
      + switch_controller_igmp_snooping            = (known after apply)
      + switch_controller_igmp_snooping_fast_leave = (known after apply)
      + switch_controller_igmp_snooping_proxy      = (known after apply)
      + switch_controller_iot_scanning             = (known after apply)
      + switch_controller_learning_limit           = (known after apply)
      + switch_controller_mgmt_vlan                = (known after apply)
      + switch_controller_nac                      = (known after apply)
      + switch_controller_rspan_mode               = (known after apply)
      + switch_controller_source_ip                = (known after apply)
      + switch_controller_traffic_policy           = (known after apply)
      + system_id                                  = (known after apply)
      + system_id_type                             = (known after apply)
      + tcp_mss                                    = (known after apply)
      + trunk                                      = (known after apply)
      + trust_ip6_1                                = (known after apply)
      + trust_ip6_2                                = (known after apply)
      + trust_ip6_3                                = (known after apply)
      + trust_ip_1                                 = (known after apply)
      + trust_ip_2                                 = (known after apply)
      + trust_ip_3                                 = (known after apply)
      + type                                       = "physical"
      + username                                   = (known after apply)
      + vdom                                       = "root"
      + vindex                                     = (known after apply)
      + vlan_protocol                              = (known after apply)
      + vlanforward                                = (known after apply)
      + vlanid                                     = (known after apply)
      + vrf                                        = (known after apply)
      + vrrp_virtual_mac                           = (known after apply)
      + wccp                                       = (known after apply)
      + weight                                     = (known after apply)
      + wins_ip                                    = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

apply plan

terraform apply plan
Acquiring state lock. This may take a few moments...
module.vpc_transit_fortigate.module.fortigate1az3.fortios_system_interface.fortigate__port3_ha: Creating...
╷
│ Warning: Applied changes may be incomplete
│ 
│ The plan was created with the -target option in effect, so some changes requested in the configuration may have been ignored and the output values may not be fully updated. Run the following command to verify that no other changes are pending:
│     terraform plan
│   
│ Note that the -target option is not suitable for routine use, and is provided only for exceptional situations such as recovering from errors or mistakes, or when Terraform specifically suggests to use it as part of an error message.
╵
╷
│ Error: Plugin did not respond
│ 
│   with module.vpc_transit_fortigate.module.fortigate1az3.fortios_system_interface.fortigate__port3_ha,
│   on vpc_transit_fortigate/shared_configuration/fortigate_system_interface.tf line 4, in resource "fortios_system_interface" "fortigate__port3_ha":
│    4: resource "fortios_system_interface" "fortigate__port3_ha" {
│ 
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).ApplyResourceChange call. The plugin logs may contain more details.
╵

Stack trace from the terraform-provider-fortios_v1.14.0 plugin:

panic: interface conversion: interface {} is nil, not string

goroutine 69 [running]:
github.com/terraform-providers/terraform-provider-fortios/fortios.resourceSystemInterfaceCreate(0xc0004299d0, 0x2166420, 0xc001759ab0, 0x2, 0x2fa36c0)
    github.com/terraform-providers/terraform-provider-fortios/fortios/resource_system_interface.go:1853 +0x599
github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).Apply(0xc000b98500, 0xc0013fcb40, 0xc000223500, 0x2166420, 0xc001759ab0, 0x21d9101, 0xc001147218, 0xc0011053b0)
    github.com/hashicorp/terraform-plugin-sdk@v1.17.2/helper/schema/resource.go:320 +0x375
github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Provider).Apply(0xc0002aa300, 0xc000e35a38, 0xc0013fcb40, 0xc000223500, 0xc001080bc8, 0xc0010a4c00, 0x21db020)
    github.com/hashicorp/terraform-plugin-sdk@v1.17.2/helper/schema/provider.go:294 +0x99
github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ApplyResourceChange(0xc000289b28, 0x2626950, 0xc000fff110, 0xc0004292d0, 0xc000289b28, 0xc000fff110, 0xc0009aaba0)
    github.com/hashicorp/terraform-plugin-sdk@v1.17.2/internal/helper/plugin/grpc_provider.go:895 +0x8a5
github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0x22c96a0, 0xc000289b28, 0x2626950, 0xc000fff110, 0xc001712180, 0x0, 0x2626950, 0xc000fff110, 0xc00101a000, 0x1fba)
    github.com/hashicorp/terraform-plugin-sdk@v1.17.2/internal/tfplugin5/tfplugin5.pb.go:3305 +0x214
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0003456c0, 0x262f698, 0xc000203800, 0xc000e2c400, 0xc00098e9f0, 0x2f626a0, 0x0, 0x0, 0x0)
    google.golang.org/grpc@v1.32.0/server.go:1194 +0x52b
google.golang.org/grpc.(*Server).handleStream(0xc0003456c0, 0x262f698, 0xc000203800, 0xc000e2c400, 0x0)
    google.golang.org/grpc@v1.32.0/server.go:1517 +0xd0c
google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc000224220, 0xc0003456c0, 0x262f698, 0xc000203800, 0xc000e2c400)
    google.golang.org/grpc@v1.32.0/server.go:859 +0xab
created by google.golang.org/grpc.(*Server).serveStreams.func1
    google.golang.org/grpc@v1.32.0/server.go:857 +0x1fd

Error: The terraform-provider-fortios_v1.14.0 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.
lix-fortinet commented 2 years ago

Hi @acc4all,

Thank you for raising this issue. Argument name is required. Could you add argument name and try it again? We will make argument name to required in the next release, so that you could get the reminder from FortiOS Terraform provider.

Please let me know if you have any questions.

Thanks, Xing

lix-fortinet commented 2 years ago

Hi @acc4all,

This issue has been fixed in the latest release of FortiOS Terraform provider v1.14.1. Please switch to the latest version of FortiOS Terraform provider and try it again.

Please let me know if you have any questions.

Thanks, Xing

lix-fortinet commented 1 year ago

Hi @acc4all,

We will close this issue since it has been fixed. Feel free to open a new issue if you have any other questions.

Thanks, Xing