Skip to content

Commit d0818a3

Browse files
philippthunsvkrieger
authored andcommitted
Use ServiceBindingFilesBuilder in recipe builders
- AppRecipeBuilder -> Diego::Bbs::Models::DesiredLRP - TaskRecipeBuilder -> Diego::Bbs::Models::TaskDefinition
1 parent fb31463 commit d0818a3

File tree

4 files changed

+76
-3
lines changed

4 files changed

+76
-3
lines changed

lib/cloud_controller/diego/app_recipe_builder.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
require 'cloud_controller/diego/cnb/desired_lrp_builder'
77
require 'cloud_controller/diego/process_guid'
88
require 'cloud_controller/diego/ssh_key'
9+
require 'cloud_controller/diego/service_binding_files_builder'
910
require 'credhub/config_helpers'
1011
require 'models/helpers/health_check_types'
1112
require 'cloud_controller/diego/main_lrp_action_builder'
@@ -100,7 +101,8 @@ def app_lrp_arguments
100101
organizational_unit: ["organization:#{process.organization.guid}", "space:#{process.space.guid}", "app:#{process.app_guid}"]
101102
),
102103
image_username: process.desired_droplet.docker_receipt_username,
103-
image_password: process.desired_droplet.docker_receipt_password
104+
image_password: process.desired_droplet.docker_receipt_password,
105+
volume_mounted_files: ServiceBindingFilesBuilder.build(process)
104106
}.compact
105107
end
106108

lib/cloud_controller/diego/task_recipe_builder.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
require 'cloud_controller/diego/bbs_environment_builder'
66
require 'cloud_controller/diego/task_completion_callback_generator'
77
require 'cloud_controller/diego/task_cpu_weight_calculator'
8+
require 'cloud_controller/diego/service_binding_files_builder'
89

910
module VCAP::CloudController
1011
module Diego
@@ -52,7 +53,8 @@ def build_app_task(config, task)
5253
]
5354
),
5455
image_username: task.droplet.docker_receipt_username,
55-
image_password: task.droplet.docker_receipt_password
56+
image_password: task.droplet.docker_receipt_password,
57+
volume_mounted_files: ServiceBindingFilesBuilder.build(task.app)
5658
}.compact)
5759
end
5860

@@ -90,7 +92,8 @@ def build_staging_task(config, staging_details)
9092
]
9193
),
9294
image_username: staging_details.package.docker_username,
93-
image_password: staging_details.package.docker_password
95+
image_password: staging_details.package.docker_password,
96+
volume_mounted_files: ServiceBindingFilesBuilder.build(staging_details.package.app)
9497
}.compact)
9598
end
9699

spec/unit/lib/cloud_controller/diego/app_recipe_builder_spec.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,23 @@ module Diego
5252
expect(lrp.trusted_system_certificates_path).to eq(RUNNING_TRUSTED_SYSTEM_CERT_PATH)
5353
expect(lrp.PlacementTags).to eq(['placement-tag'])
5454
expect(lrp.certificate_properties).to eq(expected_certificate_properties)
55+
56+
expect(lrp.volume_mounted_files).to be_empty
57+
end
58+
end
59+
60+
shared_examples 'file-based service bindings' do
61+
context 'when file-based service bindings are enabled' do
62+
before do
63+
app = process.app
64+
app.update(file_based_service_bindings_enabled: true)
65+
VCAP::CloudController::ServiceBinding.make(service_instance: ManagedServiceInstance.make(space: app.space), app: app)
66+
end
67+
68+
it 'includes volume mounted files' do
69+
lrp = builder.build_app_lrp
70+
expect(lrp.volume_mounted_files).not_to be_empty
71+
end
5572
end
5673
end
5774

@@ -914,6 +931,8 @@ module Diego
914931
expect(lrp2.action).to eq(expected_action)
915932
end
916933
end
934+
935+
include_examples 'file-based service bindings'
917936
end
918937

919938
context 'when the lifecycle_type is "cnb"' do
@@ -1005,6 +1024,8 @@ module Diego
10051024
}))
10061025
end
10071026
end
1027+
1028+
include_examples 'file-based service bindings'
10081029
end
10091030

10101031
context 'when the lifecycle_type is "docker"' do
@@ -1348,6 +1369,8 @@ module Diego
13481369
}))
13491370
end
13501371
end
1372+
1373+
include_examples 'file-based service bindings'
13511374
end
13521375
end
13531376

spec/unit/lib/cloud_controller/diego/task_recipe_builder_spec.rb

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,8 @@ module Diego
177177
expect(result.placement_tags).to eq(['potato-segment'])
178178
expect(result.max_pids).to eq(100)
179179
expect(result.certificate_properties).to eq(certificate_properties)
180+
181+
expect(result.volume_mounted_files).to be_empty
180182
end
181183

182184
it 'gives the task a TrustedSystemCertificatesPath' do
@@ -198,6 +200,19 @@ module Diego
198200
expect(result.placement_tags).to eq([])
199201
end
200202
end
203+
204+
context 'when file-based service bindings are enabled' do
205+
before do
206+
app = staging_details.package.app
207+
app.update(file_based_service_bindings_enabled: true)
208+
VCAP::CloudController::ServiceBinding.make(service_instance: ManagedServiceInstance.make(space: app.space), app: app)
209+
end
210+
211+
it 'includes volume mounted files' do
212+
result = task_recipe_builder.build_staging_task(config, staging_details)
213+
expect(result.volume_mounted_files).not_to be_empty
214+
end
215+
end
201216
end
202217

203218
context 'with a docker backend' do
@@ -505,6 +520,8 @@ module Diego
505520
expect(result.metric_tags['organization_name'].static).to eq('MyOrg')
506521
expect(result.metric_tags['space_name'].static).to eq('MySpace')
507522
expect(result.metric_tags['app_name'].static).to eq('MyApp')
523+
524+
expect(result.volume_mounted_files).to be_empty
508525
end
509526

510527
context 'when a volume mount is provided' do
@@ -583,6 +600,19 @@ module Diego
583600
expect(result.placement_tags).to eq([])
584601
end
585602
end
603+
604+
context 'when file-based service bindings are enabled' do
605+
before do
606+
app = task.app
607+
app.update(file_based_service_bindings_enabled: true)
608+
VCAP::CloudController::ServiceBinding.make(service_instance: ManagedServiceInstance.make(space: app.space), app: app)
609+
end
610+
611+
it 'includes volume mounted files' do
612+
result = task_recipe_builder.build_app_task(config, task)
613+
expect(result.volume_mounted_files).not_to be_empty
614+
end
615+
end
586616
end
587617

588618
context 'with a docker backend' do
@@ -658,6 +688,8 @@ module Diego
658688

659689
expect(result.image_username).to eq('dockerusername')
660690
expect(result.image_password).to eq('dockerpassword')
691+
692+
expect(result.volume_mounted_files).to be_empty
661693
end
662694

663695
context 'when a volume mount is provided' do
@@ -736,6 +768,19 @@ module Diego
736768
expect(result.placement_tags).to eq([])
737769
end
738770
end
771+
772+
context 'when file-based service bindings are enabled' do
773+
before do
774+
app = task.app
775+
app.update(file_based_service_bindings_enabled: true)
776+
VCAP::CloudController::ServiceBinding.make(service_instance: ManagedServiceInstance.make(space: app.space), app: app)
777+
end
778+
779+
it 'includes volume mounted files' do
780+
result = task_recipe_builder.build_app_task(config, task)
781+
expect(result.volume_mounted_files).not_to be_empty
782+
end
783+
end
739784
end
740785
end
741786
end

0 commit comments

Comments
 (0)