-
Notifications
You must be signed in to change notification settings - Fork 369
Expand file tree
/
Copy pathdesired_lrp_builder.rb
More file actions
75 lines (61 loc) · 2.35 KB
/
desired_lrp_builder.rb
File metadata and controls
75 lines (61 loc) · 2.35 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
73
74
75
module VCAP::CloudController
module Diego
module Docker
class DesiredLrpBuilder
attr_reader :start_command, :action_user
def initialize(config, opts)
@config = config
@docker_image = opts[:docker_image]
@execution_metadata = opts[:execution_metadata]
@ports = opts[:ports]
@start_command = opts[:start_command]
@action_user = opts[:action_user]
@additional_container_env_vars = opts[:additional_container_env_vars]
end
def cached_dependencies
return nil if @config.get(:diego, :enable_declarative_asset_downloads)
[::Diego::Bbs::Models::CachedDependency.new(
from: LifecycleBundleUriGenerator.uri(@config.get(:diego, :lifecycle_bundles)[:docker]),
to: '/tmp/lifecycle',
cache_key: 'docker-lifecycle'
)]
end
def root_fs
DockerURIConverter.new.convert(@docker_image)
end
def setup
nil
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 global_environment_variables
[] + @additional_container_env_vars
end
def ports
return @ports unless @ports.empty?
execution_metadata = Oj.load(@execution_metadata)
return [DEFAULT_APP_PORT] if execution_metadata['ports'].blank?
tcp_ports = execution_metadata['ports'].select { |port| port['protocol'] == 'tcp' }
raise CloudController::Errors::ApiError.new_from_details('RunnerError', 'No tcp ports found in image metadata') if tcp_ports.empty?
tcp_ports.map { |port| port['port'].to_i }
end
def port_environment_variables
[
::Diego::Bbs::Models::EnvironmentVariable.new(name: 'PORT', value: ports.first.to_s)
]
end
def privileged?
false
end
end
end
end
end