func expandAzureRmLoadBalancerFrontendIpConfigurations(d *schema.ResourceData) *[]network.FrontendIPConfiguration { configs := d.Get("frontend_ip_configuration").([]interface{}) frontEndConfigs := make([]network.FrontendIPConfiguration, 0, len(configs)) for _, configRaw := range configs { data := configRaw.(map[string]interface{}) private_ip_allocation_method := data["private_ip_address_allocation"].(string) properties := network.FrontendIPConfigurationPropertiesFormat{ PrivateIPAllocationMethod: network.IPAllocationMethod(private_ip_allocation_method), } if v := data["private_ip_address"].(string); v != "" { properties.PrivateIPAddress = &v } if v := data["public_ip_address_id"].(string); v != "" { properties.PublicIPAddress = &network.PublicIPAddress{ ID: &v, } } if v := data["subnet_id"].(string); v != "" { properties.Subnet = &network.Subnet{ ID: &v, } } name := data["name"].(string) frontEndConfig := network.FrontendIPConfiguration{ Name: &name, Properties: &properties, } frontEndConfigs = append(frontEndConfigs, frontEndConfig) } return &frontEndConfigs }
func resourceArmPublicIpCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*ArmClient) publicIPClient := client.publicIPClient log.Printf("[INFO] preparing arguments for Azure ARM Public IP creation.") name := d.Get("name").(string) location := d.Get("location").(string) resGroup := d.Get("resource_group_name").(string) tags := d.Get("tags").(map[string]interface{}) properties := network.PublicIPAddressPropertiesFormat{ PublicIPAllocationMethod: network.IPAllocationMethod(d.Get("public_ip_address_allocation").(string)), } dnl, hasDnl := d.GetOk("domain_name_label") rfqdn, hasRfqdn := d.GetOk("reverse_fqdn") if hasDnl || hasRfqdn { dnsSettings := network.PublicIPAddressDNSSettings{} if hasRfqdn { reverse_fqdn := rfqdn.(string) dnsSettings.ReverseFqdn = &reverse_fqdn } if hasDnl { domain_name_label := dnl.(string) dnsSettings.DomainNameLabel = &domain_name_label } properties.DNSSettings = &dnsSettings } if v, ok := d.GetOk("idle_timeout_in_minutes"); ok { idle_timeout := int32(v.(int)) properties.IdleTimeoutInMinutes = &idle_timeout } publicIp := network.PublicIPAddress{ Name: &name, Location: &location, Properties: &properties, Tags: expandTags(tags), } _, err := publicIPClient.CreateOrUpdate(resGroup, name, publicIp, make(chan struct{})) if err != nil { return err } read, err := publicIPClient.Get(resGroup, name, "") if err != nil { return err } if read.ID == nil { return fmt.Errorf("Cannot read Public IP %s (resource group %s) ID", name, resGroup) } d.SetId(*read.ID) return resourceArmPublicIpRead(d, meta) }
func resourceArmPublicIpCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*ArmClient) publicIPClient := client.publicIPClient log.Printf("[INFO] preparing arguments for Azure ARM Public IP creation.") name := d.Get("name").(string) location := d.Get("location").(string) resGroup := d.Get("resource_group_name").(string) properties := network.PublicIPAddressPropertiesFormat{ PublicIPAllocationMethod: network.IPAllocationMethod(d.Get("public_ip_address_allocation").(string)), } dnl, hasDnl := d.GetOk("domain_name_label") rfqdn, hasRfqdn := d.GetOk("reverse_fqdn") if hasDnl || hasRfqdn { dnsSettings := network.PublicIPAddressDNSSettings{} if hasRfqdn { reverse_fqdn := rfqdn.(string) dnsSettings.ReverseFqdn = &reverse_fqdn } if hasDnl { domain_name_label := dnl.(string) dnsSettings.DomainNameLabel = &domain_name_label } properties.DNSSettings = &dnsSettings } if v, ok := d.GetOk("idle_timeout_in_minutes"); ok { idle_timeout := v.(int) properties.IdleTimeoutInMinutes = &idle_timeout } publicIp := network.PublicIPAddress{ Name: &name, Location: &location, Properties: &properties, } resp, err := publicIPClient.CreateOrUpdate(resGroup, name, publicIp) if err != nil { return err } d.SetId(*resp.ID) log.Printf("[DEBUG] Waiting for Public IP (%s) to become available", name) stateConf := &resource.StateChangeConf{ Pending: []string{"Accepted", "Updating"}, Target: "Succeeded", Refresh: publicIPStateRefreshFunc(client, resGroup, name), Timeout: 10 * time.Minute, } if _, err := stateConf.WaitForState(); err != nil { return fmt.Errorf("Error waiting for Public IP (%s) to become available: %s", name, err) } return resourceArmPublicIpRead(d, meta) }