terraform-provider-bigip
                                
                                
                                
                                    terraform-provider-bigip copied to clipboard
                            
                            
                            
                        Exists functions are modifying the Resource Data when they shouldn't
I've noticed that in several places where the Exists method is implemented, it is modifying the resource data under certain conditions (e.g. when the resource is not found).
Examples:
https://github.com/terraform-providers/terraform-provider-bigip/blob/3736641c61a3b5969a988fe1aabdf73dbb6a58a8/bigip/resource_bigip_ltm_monitor.go#L201-L205
https://github.com/terraform-providers/terraform-provider-bigip/blob/3736641c61a3b5969a988fe1aabdf73dbb6a58a8/bigip/resource_bigip_ltm_irule.go#L92-L96
https://github.com/terraform-providers/terraform-provider-bigip/blob/3736641c61a3b5969a988fe1aabdf73dbb6a58a8/bigip/resource_bigip_ltm_virtual_server.go#L311-L313
It is my understanding that Exists should not modify the resource data as indicated in the documentation, using SetId("") should be reserved to Read and Delete methods:
    // Exists is a function that is called to check if a resource still
    // exists. If this returns false, then this will affect the diff
    // accordingly. If this function isn't set, it will not be called. It
    // is highly recommended to set it. The *ResourceData passed to Exists
    // should _not_ be modified.
reference: https://godoc.org/github.com/hashicorp/terraform/helper/schema#Resource