code: func (r *Routes) DeleteRoute(clusterName string, route *cloudprovider.Route) error {
  	glog.V(4).Infof("DeleteRoute(%v, %v)", clusterName, route)
  
  	onFailure := NewCaller()
  
  	addr, err := getAddressByName(r.compute, route.TargetNode)
  	if err != nil {
  		return err
  	}
  
  	router, err := routers.Get(r.network, r.opts.RouterID).Extract()
  	if err != nil {
  		return err
  	}
  
  	routes := router.Routes
  	index := -1
  	for i, item := range routes {
  		if item.DestinationCIDR == route.DestinationCIDR && item.NextHop == addr {
  			index = i
  			break
  		}
  	}
  
  	if index == -1 {
  		glog.V(4).Infof("Skipping non-existent route: %v", route)
  		return nil
  	}
  
  	// Delete element `index`
  	routes[index] = routes[len(routes)-1]
  	routes = routes[:len(routes)-1]
  
  	unwind, err := updateRoutes(r.network, router, routes)
  	if err != nil {
  		return err
  	}
  	defer onFailure.Call(unwind)
  
  	port, err := getPortByIP(r.network, addr)
  	if err != nil {
  		return err
  	}
  
  	addrPairs := port.AllowedAddressPairs
  	index = -1
  	for i, item := range addrPairs {
  		if item.IPAddress == route.DestinationCIDR {
  			index = i
  			break
  		}
  	}
  
  	if index != -1 {
  		// Delete element `index`
  		addrPairs[index] = addrPairs[len(routes)-1]
  		addrPairs = addrPairs[:len(routes)-1]
  
  		unwind, err := updateAllowedAddressPairs(r.network, &port, addrPairs)
  		if err != nil {
  			return err
  		}
  		defer onFailure.Call(unwind)
  	}
  
  	glog.V(4).Infof("Route deleted: %v", route)
  	onFailure.Disarm()
  	return nil
  }
docs: // DeleteRoute deletes a route