@@ -270,6 +270,26 @@ def create_managed(message, space:)
270
270
audit_hash : message . audit_hash
271
271
)
272
272
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 ]
285
+
286
+ logger . info (
287
+ "Creating managed service instance with name '#{ instance . name } ' " \
288
+ "using service plan '#{ service_plan . name } ' " \
289
+ "from service offering '#{ service_name } ' " \
290
+ "provided by broker '#{ broker_name } '."
291
+ )
292
+
273
293
pollable_job = Jobs ::Enqueuer . new ( queue : Jobs ::Queues . generic ) . enqueue_pollable ( provision_job )
274
294
275
295
head :accepted , 'Location' => url_builder . build_url ( path : "/v3/jobs/#{ pollable_job . guid } " )
@@ -297,6 +317,35 @@ def update_managed(service_instance)
297
317
action = V3 ::ServiceInstanceUpdateManaged . new ( service_instance , message , user_audit_info , message . audit_hash )
298
318
action . preflight!
299
319
if action . update_broker_needed?
320
+
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 ]
341
+
342
+ logger . info (
343
+ "Updating managed service instance with name '#{ service_instance . name } ' " \
344
+ "using service plan '#{ plan_name } ' " \
345
+ "from service offering '#{ service_name } ' " \
346
+ "provided by broker '#{ broker_name } '."
347
+ )
348
+
300
349
update_job = action . enqueue_update
301
350
head :accepted , 'Location' => url_builder . build_url ( path : "/v3/jobs/#{ update_job . guid } " )
302
351
else
@@ -352,6 +401,29 @@ def fetch_writable_service_instance(guid)
352
401
353
402
def enqueue_delete_job ( service_instance )
354
403
delete_job = V3 ::DeleteServiceInstanceJob . new ( service_instance . guid , user_audit_info )
404
+
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 ]
419
+
420
+ logger . info (
421
+ "Deleting managed service instance with name '#{ service_instance . name } ' " \
422
+ "using service plan '#{ plan_name } ' " \
423
+ "from service offering '#{ service_name } ' " \
424
+ "provided by broker '#{ broker_name } '."
425
+ )
426
+
355
427
pollable_job = Jobs ::Enqueuer . new ( queue : Jobs ::Queues . generic ) . enqueue_pollable ( delete_job )
356
428
pollable_job . guid
357
429
end
0 commit comments