-
Notifications
You must be signed in to change notification settings - Fork 369
Expand file tree
/
Copy pathtask_action_builder.rb
More file actions
72 lines (60 loc) · 2.19 KB
/
task_action_builder.rb
File metadata and controls
72 lines (60 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
require 'diego/action_builder'
require 'cloud_controller/diego/docker/docker_uri_converter'
require 'cloud_controller/diego/task_environment_variable_collector'
require 'credhub/config_helpers'
module VCAP::CloudController
module Diego
module Docker
class TaskActionBuilder
def initialize(config, task, lifecycle_data)
@task = task
@lifecycle_data = lifecycle_data
@config = config
end
def action
launcher_args = ['app', task.command, '{}']
::Diego::ActionBuilder.action(
::Diego::Bbs::Models::RunAction.new(
user: task.run_action_user,
path: '/tmp/lifecycle/launcher',
args: launcher_args,
log_source: "APP/TASK/#{task.name}",
resource_limits: ::Diego::Bbs::Models::ResourceLimits.new,
env: task_environment_variables
)
)
end
def image_layers
return [] unless @config.get(:diego, :enable_declarative_asset_downloads)
[::Diego::Bbs::Models::ImageLayer.new(
name: 'docker-lifecycle',
url: LifecycleBundleUriGenerator.uri(config.get(:diego, :lifecycle_bundles)[:docker]),
destination_path: '/tmp/lifecycle',
layer_type: ::Diego::Bbs::Models::ImageLayer::Type::SHARED,
media_type: ::Diego::Bbs::Models::ImageLayer::MediaType::TGZ
)]
end
def task_environment_variables
TaskEnvironmentVariableCollector.for_task task
end
def stack
DockerURIConverter.new.convert(lifecycle_data[:droplet_path])
end
def lifecycle_bundle_key
:docker
end
def cached_dependencies
return nil if @config.get(:diego, :enable_declarative_asset_downloads)
bundle = config.get(:diego, :lifecycle_bundles)[lifecycle_bundle_key]
[::Diego::Bbs::Models::CachedDependency.new(
from: LifecycleBundleUriGenerator.uri(bundle),
to: '/tmp/lifecycle',
cache_key: 'docker-lifecycle'
)]
end
private
attr_reader :config, :task, :lifecycle_data
end
end
end
end