func resourceArmNetworkInterfaceCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*ArmClient) ifaceClient := client.ifaceClient log.Printf("[INFO] preparing arguments for Azure ARM Network Interface creation.") name := d.Get("name").(string) location := d.Get("location").(string) resGroup := d.Get("resource_group_name").(string) properties := network.InterfacePropertiesFormat{} if v, ok := d.GetOk("network_security_group_id"); ok { nsgId := v.(string) properties.NetworkSecurityGroup = &network.SecurityGroup{ ID: &nsgId, } } dns, hasDns := d.GetOk("dns_servers") nameLabel, hasNameLabel := d.GetOk("internal_dns_name_label") if hasDns || hasNameLabel { ifaceDnsSettings := network.InterfaceDNSSettings{} if hasDns { var dnsServers []string dns := dns.(*schema.Set).List() for _, v := range dns { str := v.(string) dnsServers = append(dnsServers, str) } ifaceDnsSettings.DNSServers = &dnsServers } if hasNameLabel { name_label := nameLabel.(string) ifaceDnsSettings.InternalDNSNameLabel = &name_label } properties.DNSSettings = &ifaceDnsSettings } ipConfigs, sgErr := expandAzureRmNetworkInterfaceIpConfigurations(d) if sgErr != nil { return fmt.Errorf("Error Building list of Network Interface IP Configurations: %s", sgErr) } if len(ipConfigs) > 0 { properties.IPConfigurations = &ipConfigs } iface := network.Interface{ Name: &name, Location: &location, Properties: &properties, } resp, err := ifaceClient.CreateOrUpdate(resGroup, name, iface) if err != nil { return err } d.SetId(*resp.ID) log.Printf("[DEBUG] Waiting for Network Interface (%s) to become available", name) stateConf := &resource.StateChangeConf{ Pending: []string{"Accepted", "Updating"}, Target: "Succeeded", Refresh: networkInterfaceStateRefreshFunc(client, resGroup, name), Timeout: 10 * time.Minute, } if _, err := stateConf.WaitForState(); err != nil { return fmt.Errorf("Error waiting for Network Interface (%s) to become available: %s", name, err) } return resourceArmNetworkInterfaceRead(d, meta) }
func resourceArmNetworkInterfaceCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*ArmClient) ifaceClient := client.ifaceClient log.Printf("[INFO] preparing arguments for Azure ARM Network Interface creation.") name := d.Get("name").(string) location := d.Get("location").(string) resGroup := d.Get("resource_group_name").(string) enableIpForwarding := d.Get("enable_ip_forwarding").(bool) tags := d.Get("tags").(map[string]interface{}) properties := network.InterfacePropertiesFormat{ EnableIPForwarding: &enableIpForwarding, } if v, ok := d.GetOk("network_security_group_id"); ok { nsgId := v.(string) properties.NetworkSecurityGroup = &network.SecurityGroup{ ID: &nsgId, } } dns, hasDns := d.GetOk("dns_servers") nameLabel, hasNameLabel := d.GetOk("internal_dns_name_label") if hasDns || hasNameLabel { ifaceDnsSettings := network.InterfaceDNSSettings{} if hasDns { var dnsServers []string dns := dns.(*schema.Set).List() for _, v := range dns { str := v.(string) dnsServers = append(dnsServers, str) } ifaceDnsSettings.DNSServers = &dnsServers } if hasNameLabel { name_label := nameLabel.(string) ifaceDnsSettings.InternalDNSNameLabel = &name_label } properties.DNSSettings = &ifaceDnsSettings } ipConfigs, sgErr := expandAzureRmNetworkInterfaceIpConfigurations(d) if sgErr != nil { return fmt.Errorf("Error Building list of Network Interface IP Configurations: %s", sgErr) } if len(ipConfigs) > 0 { properties.IPConfigurations = &ipConfigs } iface := network.Interface{ Name: &name, Location: &location, Properties: &properties, Tags: expandTags(tags), } _, err := ifaceClient.CreateOrUpdate(resGroup, name, iface, make(chan struct{})) if err != nil { return err } read, err := ifaceClient.Get(resGroup, name, "") if err != nil { return err } if read.ID == nil { return fmt.Errorf("Cannot read NIC %s (resource group %s) ID", name, resGroup) } d.SetId(*read.ID) return resourceArmNetworkInterfaceRead(d, meta) }