From 8af01328b9b136061868febfacc9424cd2003b1b Mon Sep 17 00:00:00 2001 From: Tamara Boehm Date: Tue, 14 Apr 2026 12:37:43 +0200 Subject: [PATCH 1/2] fix: cloud_controller_ng#4971 --- app/actions/manifest_route_update.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/actions/manifest_route_update.rb b/app/actions/manifest_route_update.rb index 59fab7b4e6f..aa3a72ce256 100644 --- a/app/actions/manifest_route_update.rb +++ b/app/actions/manifest_route_update.rb @@ -18,14 +18,16 @@ def update(app_guid, message, user_audit_info) app_guid => app } routes_to_map = [] + current_route = nil message.manifest_route_mappings.each do |manifest_route_mapping| + current_route = manifest_route_mapping[:route].to_s route = { model: find_or_create_valid_route(app, manifest_route_mapping[:route].to_hash, user_audit_info), protocol: manifest_route_mapping[:protocol] } - raise InvalidRoute.new("No domains exist for route #{manifest_route_mapping[:route]}") if route[:model].blank? + raise InvalidRoute.new("No domains exist for route #{current_route}") if route[:model].blank? routes_to_map << route end @@ -53,7 +55,8 @@ def update(app_guid, message, user_audit_info) end end rescue Sequel::ValidationFailed, RouteCreate::Error, RouteUpdate::Error => e - raise InvalidRoute.new(e.message) + route_info = current_route ? "For route '#{current_route}': " : '' + raise InvalidRoute.new("#{route_info}#{e.message}") end private From 06f57ee06290e61e9b932f5706e317d61ef2fbbd Mon Sep 17 00:00:00 2001 From: Tamara Boehm Date: Mon, 20 Apr 2026 11:43:53 +0200 Subject: [PATCH 2/2] Apply review feedback --- app/actions/manifest_route_update.rb | 7 ++++++- spec/unit/actions/manifest_route_update_spec.rb | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/actions/manifest_route_update.rb b/app/actions/manifest_route_update.rb index aa3a72ce256..f506f3d3398 100644 --- a/app/actions/manifest_route_update.rb +++ b/app/actions/manifest_route_update.rb @@ -24,7 +24,8 @@ def update(app_guid, message, user_audit_info) current_route = manifest_route_mapping[:route].to_s route = { model: find_or_create_valid_route(app, manifest_route_mapping[:route].to_hash, user_audit_info), - protocol: manifest_route_mapping[:protocol] + protocol: manifest_route_mapping[:protocol], + route_string: current_route } raise InvalidRoute.new("No domains exist for route #{current_route}") if route[:model].blank? @@ -35,6 +36,7 @@ def update(app_guid, message, user_audit_info) # map route to app, but do this only if the full message contains valid routes routes_to_map. each do |route| + current_route = route[:route_string] route_mapping = RouteMappingModel.find(app: app, route: route[:model]) if route_mapping.nil? UpdateRouteDestinations.add( @@ -57,6 +59,9 @@ def update(app_guid, message, user_audit_info) rescue Sequel::ValidationFailed, RouteCreate::Error, RouteUpdate::Error => e route_info = current_route ? "For route '#{current_route}': " : '' raise InvalidRoute.new("#{route_info}#{e.message}") + rescue UpdateRouteDestinations::Error => e + route_info = current_route ? "For route '#{current_route}': " : '' + raise UpdateRouteDestinations::Error.new("#{route_info}#{e.message}") end private diff --git a/spec/unit/actions/manifest_route_update_spec.rb b/spec/unit/actions/manifest_route_update_spec.rb index 35d6e8a5e19..a71604e6bea 100644 --- a/spec/unit/actions/manifest_route_update_spec.rb +++ b/spec/unit/actions/manifest_route_update_spec.rb @@ -312,7 +312,10 @@ module VCAP::CloudController it 'throws an error' do expect do ManifestRouteUpdate.update(app.guid, message, user_audit_info) - end.to raise_error(VCAP::CloudController::UpdateRouteDestinations::Error, 'Cannot use \'http2\' protocol for tcp routes; valid options are: [tcp].') + end.to raise_error( + VCAP::CloudController::UpdateRouteDestinations::Error, + %r{For route 'http://tcp.tomato.avocado-toast.com:1234': Cannot use 'http2' protocol for tcp routes; valid options are: \[tcp\]} + ) end end end @@ -492,7 +495,10 @@ module VCAP::CloudController it 'raises an error indicating hash_header is required' do expect do ManifestRouteUpdate.update(app.guid, message, user_audit_info) - end.to raise_error(ManifestRouteUpdate::InvalidRoute, /Hash header must be present when loadbalancing is set to hash./) + end.to raise_error( + ManifestRouteUpdate::InvalidRoute, + %r{For route 'http://potato.tomato.avocado-toast.com/some-path': Hash header must be present when loadbalancing is set to hash.} + ) end end