in pkg/azure/client.go [245:297]
func (az *azClient) ApplyRouteTable(subnetID string, routeTableID string) error {
// Check if the route table exists
_, routeTableResourceGroup, routeTableName := ParseResourceID(routeTableID)
routeTable, err := az.routeTablesClient.Get(az.ctx, string(routeTableResourceGroup), string(routeTableName), "")
// if route table is not found, then simply add a log and return no error. routeTable will always be initialized.
if routeTable.Response.StatusCode == 404 {
return nil
}
if err != nil {
// no access or no route table
return err
}
// Get subnet and check if it is already associated to a route table
_, subnetResourceGroup, subnetVnetName, subnetName := ParseSubResourceID(subnetID)
subnet, err := az.subnetsClient.Get(az.ctx, string(subnetResourceGroup), string(subnetVnetName), string(subnetName), "")
if err != nil {
return err
}
if subnet.RouteTable != nil {
if *subnet.RouteTable.ID != routeTableID {
klog.V(3).Infof("Skipping associating Application Gateway subnet '%s' with route table '%s' used by k8s cluster as it is already associated to route table '%s'.",
subnetID,
routeTableID,
*subnet.SubnetPropertiesFormat.RouteTable.ID)
} else {
klog.V(3).Infof("Application Gateway subnet '%s' is associated with route table '%s' used by k8s cluster.",
subnetID,
routeTableID)
}
return nil
}
klog.Infof("Associating Application Gateway subnet '%s' with route table '%s' used by k8s cluster.", subnetID, routeTableID)
subnet.RouteTable = &routeTable
subnetFuture, err := az.subnetsClient.CreateOrUpdate(az.ctx, string(subnetResourceGroup), string(subnetVnetName), string(subnetName), subnet)
if err != nil {
return err
}
// Wait until deployment finshes and save the error message
err = subnetFuture.WaitForCompletionRef(az.ctx, az.subnetsClient.BaseClient.Client)
if err != nil {
return err
}
return nil
}