Skip to content
This repository was archived by the owner on Jun 2, 2021. It is now read-only.

Commit 5905e46

Browse files
v3(services): unbind service key
[#175557761](https://www.pivotaltracker.com/story/show/175557761)
1 parent b7ab4b0 commit 5905e46

8 files changed

Lines changed: 441 additions & 388 deletions

app/actions/service_credential_binding_delete.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
require 'actions/v3/service_binding_delete'
2+
require 'repositories/service_generic_binding_event_repository'
23

34
module VCAP::CloudController
45
module V3
56
class ServiceCredentialBindingDelete < V3::ServiceBindingDelete
6-
def initialize(user_audit_info)
7+
EVENT_REPOSITORY_TYPES = {
8+
key: Repositories::ServiceGenericBindingEventRepository::SERVICE_KEY_CREDENTIAL_BINDING,
9+
credential: Repositories::ServiceGenericBindingEventRepository::SERVICE_APP_CREDENTIAL_BINDING
10+
}.freeze
11+
12+
def initialize(type, user_audit_info)
713
super()
814
@user_audit_info = user_audit_info
15+
@event_repository_type = EVENT_REPOSITORY_TYPES[type]
916
end
1017

1118
private
@@ -21,8 +28,7 @@ def perform_start_delete_actions(binding)
2128
end
2229

2330
def event_repository
24-
@event_repository ||= Repositories::ServiceGenericBindingEventRepository.new(
25-
Repositories::ServiceGenericBindingEventRepository::SERVICE_APP_CREDENTIAL_BINDING)
31+
@event_repository ||= Repositories::ServiceGenericBindingEventRepository.new(@event_repository_type)
2632
end
2733
end
2834
end

app/controllers/v3/service_credential_bindings_controller.rb

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,19 +66,16 @@ def destroy
6666
not_found! unless service_credential_binding.present?
6767
unauthorized! unless can_write_to_space?(binding_space)
6868

69-
if service_credential_binding.is_a?(ServiceKey)
70-
head :not_implemented
71-
return
72-
end
69+
type = service_credential_binding.is_a?(ServiceKey) ? :key : :credential
7370

7471
operation_in_progress! if service_credential_binding.service_instance.operation_in_progress?
7572

7673
case service_credential_binding.service_instance
7774
when ManagedServiceInstance
78-
pollable_job_guid = enqueue_unbind_job(service_credential_binding.guid)
75+
pollable_job_guid = enqueue_unbind_job(type, service_credential_binding.guid)
7976
head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job_guid}")
8077
when UserProvidedServiceInstance
81-
action = V3::ServiceCredentialBindingDelete.new(user_audit_info)
78+
action = V3::ServiceCredentialBindingDelete.new(type, user_audit_info)
8279
action.delete(service_credential_binding)
8380
head :no_content
8481
end
@@ -179,9 +176,9 @@ def enqueue_bind_job(type, binding_guid, message)
179176
pollable_job.guid
180177
end
181178

182-
def enqueue_unbind_job(binding_guid)
179+
def enqueue_unbind_job(type, binding_guid)
183180
bind_job = VCAP::CloudController::V3::DeleteBindingJob.new(
184-
:credential,
181+
type,
185182
binding_guid,
186183
user_audit_info: user_audit_info,
187184
)

app/jobs/v3/delete_service_binding_job_factory.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require 'jobs/v3/delete_service_route_binding_job_actor'
22
require 'jobs/v3/delete_service_credential_binding_job_actor'
3+
require 'jobs/v3/delete_service_key_binding_job_actor'
34
require 'actions/service_route_binding_delete'
45
require 'actions/service_credential_binding_delete'
56

@@ -15,6 +16,8 @@ def self.for(type)
1516
DeleteServiceRouteBindingJobActor.new
1617
when :credential
1718
DeleteServiceCredentialBindingJobActor.new
19+
when :key
20+
DeleteServiceKeyBindingJobActor.new
1821
else
1922
raise InvalidType
2023
end
@@ -24,8 +27,8 @@ def self.action(type, user_audit_info)
2427
case type
2528
when :route
2629
V3::ServiceRouteBindingDelete.new(user_audit_info)
27-
when :credential
28-
V3::ServiceCredentialBindingDelete.new(user_audit_info)
30+
when :credential, :key
31+
V3::ServiceCredentialBindingDelete.new(type, user_audit_info)
2932
else
3033
raise InvalidType
3134
end

app/jobs/v3/delete_service_credential_binding_job_actor.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
require 'jobs/reoccurring_job'
2-
require 'actions/service_credential_binding_app_create'
3-
require 'cloud_controller/errors/api_error'
4-
51
module VCAP::CloudController
62
module V3
73
class DeleteServiceCredentialBindingJobActor
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module VCAP::CloudController
2+
module V3
3+
class DeleteServiceKeyBindingJobActor
4+
def display_name
5+
'service_keys.delete'
6+
end
7+
8+
def resource_type
9+
'service_credential_binding'
10+
end
11+
12+
def get_resource(resource_id)
13+
ServiceKey.first(guid: resource_id)
14+
end
15+
end
16+
end
17+
end

0 commit comments

Comments
 (0)