Skip to content
This repository was archived by the owner on Jun 2, 2021. It is now read-only.

Commit 3a3c8f7

Browse files
cwlbraasethboyles
andcommitted
update route crd destinations when deleting route mappings
* should delete them on cascading deletes as well [finishes #171827218] https://www.pivotaltracker.com/n/projects/2407973/stories/171827218 Authored-by: Connor Braa <cbraa@pivotal.io> Co-authored-by: Connor Braa <cbraa@pivotal.io> Co-authored-by: Seth Boyles <sboyles@pivotal.io>
1 parent beb4e96 commit 3a3c8f7

4 files changed

Lines changed: 35 additions & 2 deletions

File tree

app/actions/route_mapping_delete.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,20 @@ def delete(route_mappings)
2929
route_handlers.each do |handler|
3030
handler.update_route_information(perform_validation: false)
3131
end
32+
33+
if VCAP::CloudController::Config.kubernetes_api_configured?
34+
route_crd_client.update_destinations(route_mapping.route.reload)
35+
end
3236
end
3337
end
3438
end
3539

3640
private
3741

42+
def route_crd_client
43+
CloudController::DependencyLocator.instance.route_crd_client
44+
end
45+
3846
def event_repository
3947
Repositories::AppEventRepository.new
4048
end

app/actions/update_route_destinations.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,7 @@ def update(route, to_add, to_delete, user_audit_info, manifest_triggered)
9898
route.reload
9999

100100
if VCAP::CloudController::Config.kubernetes_api_configured?
101-
client = route_crd_client
102-
client.update_destinations(route)
101+
route_crd_client.update_destinations(route)
103102
end
104103

105104
route

spec/unit/actions/app_delete_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ module VCAP::CloudController
1111
let!(:app) { AppModel.make }
1212
let!(:app_dataset) { [app] }
1313
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
14+
let(:route_crd_client) { instance_double(Kubernetes::RouteCrdClient, update_destinations: nil) }
1415

1516
before do
1617
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
18+
allow(CloudController::DependencyLocator.instance).to receive(:route_crd_client).and_return(route_crd_client)
1719
end
1820

1921
describe '#delete' do

spec/unit/actions/route_mapping_delete_spec.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ module VCAP::CloudController
2222
allow(ProcessRouteHandler).to receive(:new).with(process2).and_return(process2_route_handler)
2323
allow(Repositories::AppEventRepository).to receive(:new).and_return(event_repository)
2424
allow(event_repository).to receive(:record_unmap_route)
25+
TestConfig.override(
26+
kubernetes: {
27+
},
28+
)
2529
end
2630

2731
describe '#delete' do
@@ -50,6 +54,26 @@ module VCAP::CloudController
5054
expect(process2_route_handler).to have_received(:update_route_information).with(perform_validation: false)
5155
end
5256

57+
describe 'when k8s is configured' do
58+
let(:route_crd_client) { instance_double(Kubernetes::RouteCrdClient) }
59+
before do
60+
TestConfig.override(
61+
kubernetes: {
62+
host_url: 'some-kubernetes-host-url'
63+
},
64+
)
65+
allow(CloudController::DependencyLocator.instance).to receive(:route_crd_client).and_return(route_crd_client)
66+
allow(route_crd_client).to receive(:update_destinations)
67+
end
68+
69+
it 'removes the destination from the mapped route' do
70+
expect(route_mapping).to receive(:destroy).ordered
71+
expect(route_crd_client).to receive(:update_destinations).with(route).ordered
72+
73+
route_mapping_delete.delete(route_mapping)
74+
end
75+
end
76+
5377
describe 'audit events' do
5478
it 'records an event for un mapping a route to an app' do
5579
route_mapping_delete.delete(route_mapping)

0 commit comments

Comments
 (0)