Skip to content

Commit 511e64b

Browse files
committed
Eager load associations of service instance
1 parent 8ac7378 commit 511e64b

File tree

1 file changed

+13
-26
lines changed

1 file changed

+13
-26
lines changed

app/controllers/v3/service_instances_controller.rb

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -311,16 +311,11 @@ def update_managed(service_instance)
311311
action = V3::ServiceInstanceUpdateManaged.new(service_instance, message, user_audit_info, message.audit_hash)
312312
action.preflight!
313313
if action.update_broker_needed?
314-
315-
plan_name = service_instance.service_plan.name
316-
service_name = service_instance.service_plan.service.label
317-
broker_name = service_instance.service_plan.service.service_broker.name
318-
319314
logger.info(
320315
"Updating managed service instance with name '#{service_instance.name}' " \
321-
"using service plan '#{plan_name}' " \
322-
"from service offering '#{service_name}' " \
323-
"provided by broker '#{broker_name}'."
316+
"using service plan '#{service_instance.service_plan.name}' " \
317+
"from service offering '#{service_instance.service_plan.service.label}' " \
318+
"provided by broker '#{service_instance.service_plan.service.service_broker.name}'."
324319
)
325320

326321
update_job = action.enqueue_update
@@ -368,7 +363,10 @@ def build_create_message(params)
368363
end
369364

370365
def fetch_writable_service_instance(guid)
371-
service_instance = ServiceInstance.first(guid:)
366+
service_instances = ManagedServiceInstance.eager_graph(service_plan: { service: :service_broker }).where(Sequel[:service_instances][:guid] => guid).all
367+
service_instance = service_instances[0] unless service_instances.empty?
368+
service_instance = UserProvidedServiceInstance.first(guid:) if service_instance.nil?
369+
372370
service_instance_not_found! unless service_instance && can_read_service_instance?(service_instance)
373371
unauthorized! unless can_write_to_active_space?(service_instance.space)
374372
suspended! unless is_space_active?(service_instance.space)
@@ -379,26 +377,15 @@ def fetch_writable_service_instance(guid)
379377
def enqueue_delete_job(service_instance)
380378
delete_job = V3::DeleteServiceInstanceJob.new(service_instance.guid, user_audit_info)
381379

382-
result = VCAP::CloudController::ServicePlan.
383-
join(:services, id: :service_id).
384-
join(:service_brokers, id: Sequel[:services][:service_broker_id]).
385-
where(Sequel[:service_plans][:id] => service_instance.service_plan_id).
386-
select(
387-
Sequel[:service_plans][:name].as(:plan_name),
388-
Sequel[:services][:label].as(:service_name),
389-
Sequel[:service_brokers][:name].as(:broker_name)
390-
).
391-
first
392-
393-
plan_name = result[:plan_name]
394-
service_name = result[:service_name]
395-
broker_name = result[:broker_name]
380+
plan = service_instance.service_plan
381+
service = plan.service
382+
broker = service.service_broker
396383

397384
logger.info(
398385
"Deleting managed service instance with name '#{service_instance.name}' " \
399-
"using service plan '#{plan_name}' " \
400-
"from service offering '#{service_name}' " \
401-
"provided by broker '#{broker_name}'."
386+
"using service plan '#{plan.name}' " \
387+
"from service offering '#{service.label}' " \
388+
"provided by broker '#{broker.name}'."
402389
)
403390

404391
pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(delete_job)

0 commit comments

Comments
 (0)