func expandAzureRmLoadBalancerNatRule(d *schema.ResourceData, lb *network.LoadBalancer) (*network.InboundNatRule, error) { properties := network.InboundNatRulePropertiesFormat{ Protocol: network.TransportProtocol(d.Get("protocol").(string)), FrontendPort: azure.Int32(int32(d.Get("frontend_port").(int))), BackendPort: azure.Int32(int32(d.Get("backend_port").(int))), } if v := d.Get("frontend_ip_configuration_name").(string); v != "" { rule, _, exists := findLoadBalancerFrontEndIpConfigurationByName(lb, v) if !exists { return nil, fmt.Errorf("[ERROR] Cannot find FrontEnd IP Configuration with the name %s", v) } feip := network.SubResource{ ID: rule.ID, } properties.FrontendIPConfiguration = &feip } natRule := network.InboundNatRule{ Name: azure.String(d.Get("name").(string)), Properties: &properties, } return &natRule, nil }
func expandAzureRmLoadBalancerRule(d *schema.ResourceData, lb *network.LoadBalancer) (*network.LoadBalancingRule, error) { properties := network.LoadBalancingRulePropertiesFormat{ Protocol: network.TransportProtocol(d.Get("protocol").(string)), FrontendPort: azure.Int32(int32(d.Get("frontend_port").(int))), BackendPort: azure.Int32(int32(d.Get("backend_port").(int))), EnableFloatingIP: azure.Bool(d.Get("enable_floating_ip").(bool)), } if v, ok := d.GetOk("idle_timeout_in_minutes"); ok { properties.IdleTimeoutInMinutes = azure.Int32(int32(v.(int))) } if v := d.Get("load_distribution").(string); v != "" { properties.LoadDistribution = network.LoadDistribution(v) } if v := d.Get("frontend_ip_configuration_name").(string); v != "" { rule, _, exists := findLoadBalancerFrontEndIpConfigurationByName(lb, v) if !exists { return nil, fmt.Errorf("[ERROR] Cannot find FrontEnd IP Configuration with the name %s", v) } feip := network.SubResource{ ID: rule.ID, } properties.FrontendIPConfiguration = &feip } if v := d.Get("backend_address_pool_id").(string); v != "" { beAP := network.SubResource{ ID: &v, } properties.BackendAddressPool = &beAP } if v := d.Get("probe_id").(string); v != "" { pid := network.SubResource{ ID: &v, } properties.Probe = &pid } lbRule := network.LoadBalancingRule{ Name: azure.String(d.Get("name").(string)), LoadBalancingRulePropertiesFormat: &properties, } return &lbRule, nil }