Skip to content

Commit e7b6273

Browse files
committed
Refactor service plan lookup to eager load service and broker associations
1 parent cd65bf7 commit e7b6273

File tree

1 file changed

+32
-47
lines changed

1 file changed

+32
-47
lines changed

app/controllers/v3/service_instances_controller.rb

Lines changed: 32 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,11 @@ def create_user_provided(message)
253253
end
254254

255255
def create_managed(message, space:)
256-
service_plan = ServicePlan.first(guid: message.service_plan_guid)
256+
service_plan_relations = ServicePlan.eager_graph(service: :service_broker).
257+
where(Sequel[:service_plans][:guid] => message.service_plan_guid).
258+
all
259+
service_plan = service_plan_relations[0]
260+
257261
service_plan_does_not_exist! unless service_plan
258262
service_plan_not_visible_to_user!(service_plan) unless visible_to_current_user?(plan: service_plan)
259263
unavailable_service_plan!(service_plan) unless service_plan_active?(service_plan)
@@ -270,18 +274,8 @@ def create_managed(message, space:)
270274
audit_hash: message.audit_hash
271275
)
272276

273-
result = VCAP::CloudController::ServicePlan.
274-
join(:services, id: :service_id).
275-
join(:service_brokers, id: Sequel[:services][:service_broker_id]).
276-
where(Sequel[:service_plans][:id] => service_plan.id).
277-
select(
278-
Sequel[:services][:label].as(:service_name),
279-
Sequel[:service_brokers][:name].as(:broker_name)
280-
).
281-
first
282-
283-
service_name = result[:service_name]
284-
broker_name = result[:broker_name]
277+
service_name = service_plan.service.name
278+
broker_name = service_plan.service.service_broker.name
285279

286280
logger.info(
287281
"Creating managed service instance with name '#{instance.name}' " \
@@ -318,26 +312,22 @@ def update_managed(service_instance)
318312
action.preflight!
319313
if action.update_broker_needed?
320314

321-
plan_scope = if message.service_plan_guid
322-
{ Sequel[:service_plans][:guid] => message.service_plan_guid }
323-
else
324-
{ Sequel[:service_plans][:id] => service_instance.service_plan_id }
325-
end
326-
327-
result = VCAP::CloudController::ServicePlan.
328-
join(:services, id: :service_id).
329-
join(:service_brokers, id: Sequel[:services][:service_broker_id]).
330-
where(plan_scope).
331-
select(
332-
Sequel[:service_plans][:name].as(:plan_name),
333-
Sequel[:services][:label].as(:service_name),
334-
Sequel[:service_brokers][:name].as(:broker_name)
335-
).
336-
first
337-
338-
plan_name = result[:plan_name]
339-
service_name = result[:service_name]
340-
broker_name = result[:broker_name]
315+
service_plan_relations = if message.service_plan_guid
316+
{ Sequel[:service_plans][:guid] => message.service_plan_guid }
317+
ServicePlan.eager_graph(service: :service_broker).
318+
where(Sequel[:service_plans][:guid] => message.service_plan_guid).
319+
all
320+
else
321+
{ Sequel[:service_plans][:id] => service_instance.service_plan_id }
322+
ServicePlan.eager_graph(service: :service_broker).
323+
where(Sequel[:service_plans][:id] => service_instance.service_plan_id).
324+
all
325+
end
326+
327+
service_plan = service_plan_relations[0]
328+
plan_name = service_plan.name
329+
service_name = service_plan.service.name
330+
broker_name = service_plan.service.service_broker.name
341331

342332
logger.info(
343333
"Updating managed service instance with name '#{service_instance.name}' " \
@@ -402,20 +392,15 @@ def fetch_writable_service_instance(guid)
402392
def enqueue_delete_job(service_instance)
403393
delete_job = V3::DeleteServiceInstanceJob.new(service_instance.guid, user_audit_info)
404394

405-
result = VCAP::CloudController::ServicePlan.
406-
join(:services, id: :service_id).
407-
join(:service_brokers, id: Sequel[:services][:service_broker_id]).
408-
where(Sequel[:service_plans][:id] => service_instance.service_plan_id).
409-
select(
410-
Sequel[:service_plans][:name].as(:plan_name),
411-
Sequel[:services][:label].as(:service_name),
412-
Sequel[:service_brokers][:name].as(:broker_name)
413-
).
414-
first
415-
416-
plan_name = result[:plan_name]
417-
service_name = result[:service_name]
418-
broker_name = result[:broker_name]
395+
service_plan_relations = ServicePlan.eager_graph(service: :service_broker).
396+
where(Sequel[:service_plans][:id] => service_instance.service_plan_id).
397+
all
398+
399+
service_plan = service_plan_relations[0]
400+
401+
plan_name = service_plan.name
402+
service_name = service_plan.service.name
403+
broker_name = service_plan.service.service_broker.name
419404

420405
logger.info(
421406
"Deleting managed service instance with name '#{service_instance.name}' " \

0 commit comments

Comments
 (0)