func expandAzureRmRouteTableRoutes(d *schema.ResourceData) ([]network.Route, error) { configs := d.Get("route").(*schema.Set).List() routes := make([]network.Route, 0, len(configs)) for _, configRaw := range configs { data := configRaw.(map[string]interface{}) address_prefix := data["address_prefix"].(string) next_hop_type := data["next_hop_type"].(string) properties := network.RoutePropertiesFormat{ AddressPrefix: &address_prefix, NextHopType: network.RouteNextHopType(next_hop_type), } if v := data["next_hop_in_ip_address"].(string); v != "" { properties.NextHopIPAddress = &v } name := data["name"].(string) route := network.Route{ Name: &name, RoutePropertiesFormat: &properties, } routes = append(routes, route) } return routes, nil }
func resourceArmRouteCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*ArmClient) routesClient := client.routesClient name := d.Get("name").(string) rtName := d.Get("route_table_name").(string) resGroup := d.Get("resource_group_name").(string) addressPrefix := d.Get("address_prefix").(string) nextHopType := d.Get("next_hop_type").(string) armMutexKV.Lock(rtName) defer armMutexKV.Unlock(rtName) properties := network.RoutePropertiesFormat{ AddressPrefix: &addressPrefix, NextHopType: network.RouteNextHopType(nextHopType), } if v, ok := d.GetOk("next_hop_in_ip_address"); ok { nextHopInIpAddress := v.(string) properties.NextHopIPAddress = &nextHopInIpAddress } route := network.Route{ Name: &name, Properties: &properties, } resp, err := routesClient.CreateOrUpdate(resGroup, rtName, name, route) if err != nil { return err } d.SetId(*resp.ID) log.Printf("[DEBUG] Waiting for Route (%s) to become available", name) stateConf := &resource.StateChangeConf{ Pending: []string{"Accepted", "Updating"}, Target: "Succeeded", Refresh: routeStateRefreshFunc(client, resGroup, rtName, name), Timeout: 10 * time.Minute, } if _, err := stateConf.WaitForState(); err != nil { return fmt.Errorf("Error waiting for Route (%s) to become available: %s", name, err) } return resourceArmRouteRead(d, meta) }
func resourceArmRouteCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*ArmClient) routesClient := client.routesClient name := d.Get("name").(string) rtName := d.Get("route_table_name").(string) resGroup := d.Get("resource_group_name").(string) addressPrefix := d.Get("address_prefix").(string) nextHopType := d.Get("next_hop_type").(string) armMutexKV.Lock(rtName) defer armMutexKV.Unlock(rtName) properties := network.RoutePropertiesFormat{ AddressPrefix: &addressPrefix, NextHopType: network.RouteNextHopType(nextHopType), } if v, ok := d.GetOk("next_hop_in_ip_address"); ok { nextHopInIpAddress := v.(string) properties.NextHopIPAddress = &nextHopInIpAddress } route := network.Route{ Name: &name, Properties: &properties, } _, err := routesClient.CreateOrUpdate(resGroup, rtName, name, route, make(chan struct{})) if err != nil { return err } read, err := routesClient.Get(resGroup, rtName, name) if err != nil { return err } if read.ID == nil { return fmt.Errorf("Cannot read Route %s/%s (resource group %s) ID", rtName, name, resGroup) } d.SetId(*read.ID) return resourceArmRouteRead(d, meta) }