Skip to content

Commit ee0025f

Browse files
committed
Allow only one binding for v2 API
1 parent 8a422ed commit ee0025f

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

app/actions/v2/services/service_binding_create.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def create(app, service_instance, message, volume_mount_services_enabled, accept
2929
raise SpaceMismatch unless bindable_in_space?(service_instance, app.space)
3030

3131
raise_if_instance_locked(service_instance)
32+
raise_if_binding_already_exists(service_instance, app)
3233

3334
binding = ServiceBinding.new(
3435
service_instance: service_instance,
@@ -82,6 +83,12 @@ def bindable_in_space?(service_instance, app_space)
8283
service_instance.space == app_space || service_instance.shared_spaces.include?(app_space)
8384
end
8485

86+
def raise_if_binding_already_exists(service_instance, app)
87+
return unless ServiceBinding.where(service_instance:, app:).any?
88+
89+
raise CloudController::Errors::ApiError.new_from_details('ServiceBindingAppServiceTaken', 'The app is already bound to the service.')
90+
end
91+
8592
def logger
8693
@logger ||= Steno.logger('cc.action.service_binding_create')
8794
end

0 commit comments

Comments
 (0)