Skip to content

Commit b8eaeda

Browse files
authored
Update the state for each actual LRP when no state is given (#3953)
1 parent c343748 commit b8eaeda

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

lib/cloud_controller/diego/reporters/instances_stats_reporter.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ def actual_lrp_info(process, stats=nil, quota_stats=nil, log_cache_errors=nil, i
4848
bbs_instances_client.lrp_instances(process).each do |actual_lrp|
4949
next unless actual_lrp.actual_lrp_key.index < process.instances
5050

51-
state ||= LrpStateTranslator.translate_lrp_state(actual_lrp)
51+
lrp_state = state || LrpStateTranslator.translate_lrp_state(actual_lrp)
5252

53-
info = build_info(state, actual_lrp, process, stats, quota_stats, log_cache_errors)
53+
info = build_info(lrp_state, actual_lrp, process, stats, quota_stats, log_cache_errors)
5454
info[:isolation_segment] = isolation_segment unless isolation_segment.nil?
5555
result[actual_lrp.actual_lrp_key.index] = info
5656
end

spec/unit/lib/cloud_controller/diego/reporters/instances_stats_reporter_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,34 @@ def make_actual_lrp(instance_guid:, index:, state:, error:, since:)
120120
expect(instances_reporter.stats_for_app(process)).to eq([expected_stats_response, []])
121121
end
122122

123+
context 'when there are multiple lrps with different states' do
124+
let(:bbs_actual_lrps_response) { [actual_lrp_1, actual_lrp_2] }
125+
let(:actual_lrp_1) do
126+
make_actual_lrp(
127+
instance_guid: 'instance-a', index: 0, state: ::Diego::ActualLRPState::RUNNING, error: 'some-details', since: two_days_ago_since_epoch_ns
128+
).tap do |actual_lrp|
129+
actual_lrp.actual_lrp_net_info = lrp_1_net_info
130+
end
131+
end
132+
let(:actual_lrp_2) do
133+
make_actual_lrp(
134+
instance_guid: 'instance-b', index: 1, state: ::Diego::ActualLRPState::CLAIMED, error: 'some-details', since: two_days_ago_since_epoch_ns
135+
).tap do |actual_lrp|
136+
actual_lrp.actual_lrp_net_info = lrp_1_net_info
137+
end
138+
end
139+
140+
before do
141+
allow(bbs_instances_client).to receive_messages(lrp_instances: bbs_actual_lrps_response, desired_lrp_instance: bbs_desired_lrp_response)
142+
end
143+
144+
it 'shows all correct state for all instances' do
145+
result, = instances_reporter.stats_for_app(process)
146+
expect(result[0][:state]).to eq('RUNNING')
147+
expect(result[1][:state]).to eq('STARTING')
148+
end
149+
end
150+
123151
context 'when a NoRunningInstances error is thrown for desired_lrp and it exists an actual_lrp' do
124152
let(:error) { CloudController::Errors::NoRunningInstances.new('No running instances ruh roh') }
125153
let(:expected_stopping_response) do

0 commit comments

Comments
 (0)