bosh-director 1.3033.0 → 1.3039.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bosh/director/api/controllers/deployments_controller.rb +5 -4
- data/lib/bosh/director/api/controllers/releases_controller.rb +43 -0
- data/lib/bosh/director/compiled_release_downloader.rb +22 -7
- data/lib/bosh/director/compiled_release_manifest.rb +9 -1
- data/lib/bosh/director/config.rb +12 -2
- data/lib/bosh/director/deployment_plan.rb +1 -0
- data/lib/bosh/director/deployment_plan/network_subnet.rb +2 -1
- data/lib/bosh/director/deployment_plan/options/skip_drain.rb +20 -0
- data/lib/bosh/director/deployment_plan/planner.rb +8 -0
- data/lib/bosh/director/deployment_plan/planner_factory.rb +29 -28
- data/lib/bosh/director/instance_updater.rb +2 -1
- data/lib/bosh/director/instance_updater/stopper.rb +14 -5
- data/lib/bosh/director/jobs/export_release.rb +1 -0
- data/lib/bosh/director/jobs/update_release.rb +0 -4
- data/lib/bosh/director/version.rb +1 -1
- metadata +22 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1c9c98a013230e8d0555c8b260168f1fc0c9093
|
4
|
+
data.tar.gz: 9cb640f2ae37516b36760f377488b7043f612540
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 481c63da02db2398df3d2a57b6ab6e4b9aecc455db3a0eb92dda84c0608e023edaadbc93e13f3a8f4cf72fac1e8bcb72d615f5c77597da57d8a8e6267d5caac7
|
7
|
+
data.tar.gz: b0744f35130ef2545dbbb72da03aa01fe4380baf6c2ecd544538934a98b627f926d0c433de93f3d4f6f77d70216e152863f6f0185dad187e0b347dddd3346c07
|
@@ -48,7 +48,7 @@ module Bosh::Director
|
|
48
48
|
redirect "/tasks/#{task.id}"
|
49
49
|
end
|
50
50
|
|
51
|
-
# PUT /deployments/foo/jobs/dea/2?state={started,stopped,detached,restart,recreate}
|
51
|
+
# PUT /deployments/foo/jobs/dea/2?state={started,stopped,detached,restart,recreate}&skip_drain=true
|
52
52
|
put '/:deployment/jobs/:job/:index', :consumes => :yaml do
|
53
53
|
begin
|
54
54
|
index = Integer(params[:index])
|
@@ -61,9 +61,10 @@ module Bosh::Director
|
|
61
61
|
params[:job] => {
|
62
62
|
'instance_states' => {
|
63
63
|
index => params['state']
|
64
|
-
}
|
64
|
+
},
|
65
65
|
}
|
66
|
-
}
|
66
|
+
},
|
67
|
+
'skip_drain' => params[:job]
|
67
68
|
}
|
68
69
|
|
69
70
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
@@ -269,6 +270,7 @@ module Bosh::Director
|
|
269
270
|
post '/', :consumes => :yaml do
|
270
271
|
options = {}
|
271
272
|
options['recreate'] = true if params['recreate'] == 'true'
|
273
|
+
options['skip_drain'] = params['skip_drain'] if params['skip_drain']
|
272
274
|
latest_cloud_config = Bosh::Director::Api::CloudConfigManager.new.latest
|
273
275
|
|
274
276
|
task = @deployment_manager.create_deployment(current_user, request.body, latest_cloud_config, options)
|
@@ -313,7 +315,6 @@ module Bosh::Director
|
|
313
315
|
planner_factory.planner_without_vm_binding(manifest_hash, cloud_config_model, {})
|
314
316
|
end
|
315
317
|
|
316
|
-
|
317
318
|
def convert_job_instance_hash(hash)
|
318
319
|
hash.reduce([]) do |jobs, kv|
|
319
320
|
job, indicies = kv
|
@@ -60,6 +60,11 @@ module Bosh::Director
|
|
60
60
|
|
61
61
|
get '/:name', scope: :read do
|
62
62
|
name = params[:name].to_s.strip
|
63
|
+
|
64
|
+
if params['version']
|
65
|
+
return inspect_release(name, params['version'])
|
66
|
+
end
|
67
|
+
|
63
68
|
release = @release_manager.find_by_name(name)
|
64
69
|
|
65
70
|
result = { }
|
@@ -100,6 +105,44 @@ module Bosh::Director
|
|
100
105
|
task = @release_manager.delete_release(current_user, release, options)
|
101
106
|
redirect "/tasks/#{task.id}"
|
102
107
|
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
def inspect_release(name, version)
|
112
|
+
release = @release_manager.find_by_name(name)
|
113
|
+
release_version = @release_manager.find_version(release, version)
|
114
|
+
|
115
|
+
result = { }
|
116
|
+
|
117
|
+
result['jobs'] = release_version.templates.sort_by { |t| t.name }.map do |template|
|
118
|
+
{
|
119
|
+
'name' => template.name,
|
120
|
+
'blobstore_id' => template.blobstore_id,
|
121
|
+
'sha1' => template.sha1,
|
122
|
+
'fingerprint' => template.fingerprint.to_s,
|
123
|
+
}
|
124
|
+
end
|
125
|
+
|
126
|
+
result['packages'] = release_version.packages.sort_by { |p| p.name }.map do |package|
|
127
|
+
{
|
128
|
+
'name' => package.name,
|
129
|
+
'blobstore_id' => package.blobstore_id,
|
130
|
+
'sha1' => package.sha1,
|
131
|
+
'fingerprint' => package.fingerprint.to_s,
|
132
|
+
'compiled_packages' => package.compiled_packages.sort_by { |cp| cp.stemcell }.map do |compiled|
|
133
|
+
{
|
134
|
+
'stemcell' => "#{compiled.stemcell.name}/#{compiled.stemcell.version}",
|
135
|
+
'sha1' => compiled.sha1,
|
136
|
+
'blobstore_id' => compiled.blobstore_id,
|
137
|
+
}
|
138
|
+
end
|
139
|
+
}
|
140
|
+
end
|
141
|
+
|
142
|
+
content_type(:json)
|
143
|
+
json_encode(result)
|
144
|
+
end
|
145
|
+
|
103
146
|
end
|
104
147
|
end
|
105
148
|
end
|
@@ -16,20 +16,30 @@ module Bosh::Director
|
|
16
16
|
path = File.join(@download_dir, 'compiled_packages')
|
17
17
|
FileUtils.mkpath(path)
|
18
18
|
|
19
|
-
@compiled_packages_group.compiled_packages
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
compiled_packages = @compiled_packages_group.compiled_packages
|
20
|
+
event_log.begin_stage("copying packages", compiled_packages.count)
|
21
|
+
|
22
|
+
compiled_packages.each do |compiled_package|
|
23
|
+
desc = "#{compiled_package.package.name}/#{compiled_package.package.version}"
|
24
|
+
event_log.track(desc) do
|
25
|
+
blobstore_id = compiled_package.blobstore_id
|
26
|
+
File.open(File.join(path, "#{compiled_package.package.name}.tgz"), 'w') do |f|
|
27
|
+
@blobstore_client.get(blobstore_id, f, sha1: compiled_package.sha1)
|
28
|
+
end
|
23
29
|
end
|
24
30
|
end
|
25
31
|
|
26
32
|
path = File.join(@download_dir, 'jobs')
|
27
33
|
FileUtils.mkpath(path)
|
28
34
|
|
35
|
+
event_log.begin_stage("copying jobs", @templates.count)
|
29
36
|
@templates.each do |template|
|
30
|
-
|
31
|
-
|
32
|
-
|
37
|
+
desc = "#{template.name}/#{template.version}"
|
38
|
+
event_log.track(desc) do
|
39
|
+
blobstore_id = template.blobstore_id
|
40
|
+
File.open(File.join(path, "#{template.name}.tgz"), 'w') do |f|
|
41
|
+
@blobstore_client.get(blobstore_id, f, sha1: template.sha1)
|
42
|
+
end
|
33
43
|
end
|
34
44
|
end
|
35
45
|
|
@@ -39,5 +49,10 @@ module Bosh::Director
|
|
39
49
|
def cleanup
|
40
50
|
FileUtils.rm_rf(@download_dir)
|
41
51
|
end
|
52
|
+
|
53
|
+
def event_log
|
54
|
+
@event_log ||= Config.event_log
|
55
|
+
end
|
56
|
+
|
42
57
|
end
|
43
58
|
end
|
@@ -51,7 +51,15 @@ module Bosh::Director
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def write(dest_path)
|
54
|
-
|
54
|
+
manifest = generate_manifest
|
55
|
+
manifest_yaml = YAML.dump(manifest)
|
56
|
+
logger.debug("release.MF contents of #{manifest['name']}/#{manifest['version']} compiled release tarball:\n " + manifest_yaml)
|
57
|
+
File.open(dest_path, 'w') { |f| f.write(manifest_yaml) }
|
55
58
|
end
|
59
|
+
|
60
|
+
def logger
|
61
|
+
@logger ||= Config.logger
|
62
|
+
end
|
63
|
+
|
56
64
|
end
|
57
65
|
end
|
data/lib/bosh/director/config.rb
CHANGED
@@ -36,7 +36,11 @@ module Bosh::Director
|
|
36
36
|
:nats_uri,
|
37
37
|
)
|
38
38
|
|
39
|
-
attr_reader
|
39
|
+
attr_reader(
|
40
|
+
:db_config,
|
41
|
+
:redis_logger_level,
|
42
|
+
:ignore_missing_gateway
|
43
|
+
)
|
40
44
|
|
41
45
|
def clear
|
42
46
|
self.instance_variables.each do |ivar|
|
@@ -141,6 +145,7 @@ module Bosh::Director
|
|
141
145
|
@enable_snapshots = config.fetch('snapshots', {}).fetch('enabled', false)
|
142
146
|
|
143
147
|
@trusted_certs = config['trusted_certs'] || ''
|
148
|
+
@ignore_missing_gateway = config['ignore_missing_gateway']
|
144
149
|
|
145
150
|
Bosh::Clouds::Config.configure(self)
|
146
151
|
|
@@ -171,7 +176,12 @@ module Bosh::Director
|
|
171
176
|
db_config = db_config.merge(connection_options)
|
172
177
|
|
173
178
|
db = Sequel.connect(db_config)
|
174
|
-
|
179
|
+
|
180
|
+
Bosh::Common.retryable(sleep: 0.5, tries: 20, on: [Exception]) do
|
181
|
+
db.extension :connection_validator
|
182
|
+
true
|
183
|
+
end
|
184
|
+
|
175
185
|
db.pool.connection_validation_timeout = -1
|
176
186
|
if logger
|
177
187
|
db.logger = logger
|
@@ -30,3 +30,4 @@ require 'bosh/director/deployment_plan/assembler'
|
|
30
30
|
require 'bosh/director/deployment_plan/planner_factory'
|
31
31
|
require 'bosh/director/deployment_plan/manifest_migrator'
|
32
32
|
require 'bosh/director/deployment_plan/deployment_repo'
|
33
|
+
require 'bosh/director/deployment_plan/options/skip_drain'
|
@@ -43,7 +43,8 @@ module Bosh::Director
|
|
43
43
|
network_id = @range.network(:Objectify => true)
|
44
44
|
broadcast = @range.broadcast(:Objectify => true)
|
45
45
|
|
46
|
-
|
46
|
+
ignore_missing_gateway = Bosh::Director::Config.ignore_missing_gateway
|
47
|
+
gateway_property = safe_property(subnet_spec, "gateway", class: String, optional: ignore_missing_gateway)
|
47
48
|
if gateway_property
|
48
49
|
@gateway = NetAddr::CIDR.create(gateway_property)
|
49
50
|
unless @gateway.size == 1
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Bosh::Director
|
2
|
+
module DeploymentPlan
|
3
|
+
class SkipDrain
|
4
|
+
def initialize(param)
|
5
|
+
@jobs = []
|
6
|
+
@all = false
|
7
|
+
|
8
|
+
if param == '*'
|
9
|
+
@all = true
|
10
|
+
elsif param.is_a?(String) && !param.empty?
|
11
|
+
@jobs = param.split(',')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def for_job(job_name)
|
16
|
+
@all || @jobs.include?(job_name)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -45,6 +45,9 @@ module Bosh::Director
|
|
45
45
|
# @return [Boolean] Indicates whether VMs should be recreated
|
46
46
|
attr_reader :recreate
|
47
47
|
|
48
|
+
# @return [Boolean] Indicates whether VMs should be drained
|
49
|
+
attr_reader :skip_drain
|
50
|
+
|
48
51
|
def initialize(attrs, manifest_text, cloud_config, deployment_model, options = {})
|
49
52
|
@name = attrs.fetch(:name)
|
50
53
|
@properties = attrs.fetch(:properties)
|
@@ -67,6 +70,7 @@ module Bosh::Director
|
|
67
70
|
:class => Hash, :default => {})
|
68
71
|
|
69
72
|
@recreate = !!options['recreate']
|
73
|
+
@skip_drain = SkipDrain.new(options['skip_drain'])
|
70
74
|
end
|
71
75
|
|
72
76
|
def_delegators :@cloud_planner, :add_network, :networks, :network,
|
@@ -84,6 +88,10 @@ module Bosh::Director
|
|
84
88
|
@model.vms
|
85
89
|
end
|
86
90
|
|
91
|
+
def skip_drain_for_job?(name)
|
92
|
+
@skip_drain.nil? ? false : @skip_drain.for_job(name)
|
93
|
+
end
|
94
|
+
|
87
95
|
# Adds a release by name
|
88
96
|
# @param [Bosh::Director::DeploymentPlan::ReleaseVersion] release
|
89
97
|
def add_release(release)
|
@@ -56,6 +56,32 @@ module Bosh
|
|
56
56
|
assemble_without_vm_binding(attrs, deployment_manifest, cloud_manifest, deployment_model, cloud_config, options)
|
57
57
|
end
|
58
58
|
|
59
|
+
def self.validate_packages(planner, options)
|
60
|
+
release_manager = Bosh::Director::Api::ReleaseManager.new
|
61
|
+
planner.jobs.each { |job|
|
62
|
+
job.templates.each{ |template|
|
63
|
+
release_model = release_manager.find_by_name(template.release.name)
|
64
|
+
template.package_models.each{ |package|
|
65
|
+
|
66
|
+
release_version_model = release_manager.find_version(release_model, template.release.version)
|
67
|
+
packages_list = release_version_model.transitive_dependencies(package)
|
68
|
+
packages_list << package
|
69
|
+
|
70
|
+
packages_list.each { |needed_package|
|
71
|
+
if needed_package.sha1.nil? || needed_package.blobstore_id.nil?
|
72
|
+
compiled_packages_list = Bosh::Director::Models::CompiledPackage[:package_id => needed_package.id, :stemcell_id => job.resource_pool.stemcell.model.id]
|
73
|
+
if compiled_packages_list.nil?
|
74
|
+
msg = "Can't #{options[:context]} `#{release_version_model.release.name}/#{release_version_model.version}': it is not " +
|
75
|
+
"compiled for `#{job.resource_pool.stemcell.model.desc}' and no source package is available"
|
76
|
+
raise PackageMissingSourceCode, msg
|
77
|
+
end
|
78
|
+
end
|
79
|
+
}
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
end
|
84
|
+
|
59
85
|
private
|
60
86
|
|
61
87
|
def deployment_name(manifest_hash)
|
@@ -66,11 +92,12 @@ module Bosh
|
|
66
92
|
def assemble_without_vm_binding(attrs, deployment_manifest, cloud_manifest, deployment_model, cloud_config, options)
|
67
93
|
plan_options = {
|
68
94
|
'recreate' => !!options['recreate'],
|
95
|
+
'skip_drain' => options['skip_drain'],
|
69
96
|
'job_states' => options['job_states'] || {},
|
70
97
|
'job_rename' => options['job_rename'] || {}
|
71
98
|
}
|
72
99
|
@logger.info('Creating deployment plan')
|
73
|
-
@logger.info("Deployment plan options: #{plan_options
|
100
|
+
@logger.info("Deployment plan options: #{plan_options}")
|
74
101
|
|
75
102
|
deployment = Planner.new(attrs, deployment_manifest, cloud_config, deployment_model, plan_options)
|
76
103
|
deployment = CloudManifestParser.new(deployment, @logger).parse(cloud_manifest)
|
@@ -94,7 +121,7 @@ module Bosh
|
|
94
121
|
|
95
122
|
run_prepare_step(assembler)
|
96
123
|
|
97
|
-
validate_packages(planner)
|
124
|
+
self.class.validate_packages(planner, {:context => 'deploy'})
|
98
125
|
|
99
126
|
DeploymentPlan::Steps::PackageCompileStep.new(
|
100
127
|
planner,
|
@@ -148,32 +175,6 @@ module Bosh
|
|
148
175
|
end
|
149
176
|
end
|
150
177
|
|
151
|
-
def validate_packages(planner)
|
152
|
-
release_manager = Bosh::Director::Api::ReleaseManager.new
|
153
|
-
planner.jobs.each { |job|
|
154
|
-
job.templates.each{ |template|
|
155
|
-
release_model = release_manager.find_by_name(template.release.name)
|
156
|
-
template.package_models.each{ |package|
|
157
|
-
|
158
|
-
release_version_model = release_manager.find_version(release_model, template.release.version)
|
159
|
-
packages_list = release_version_model.transitive_dependencies(package)
|
160
|
-
packages_list << package
|
161
|
-
|
162
|
-
packages_list.each { |needed_package|
|
163
|
-
if needed_package.sha1.nil? || needed_package.blobstore_id.nil?
|
164
|
-
compiled_packages_list = Bosh::Director::Models::CompiledPackage[:package_id => needed_package.id, :stemcell_id => job.resource_pool.stemcell.model.id]
|
165
|
-
if compiled_packages_list.nil?
|
166
|
-
msg = "Can't deploy `#{release_version_model.release.name}/#{release_version_model.version}': it is not " +
|
167
|
-
"compiled for `#{job.resource_pool.stemcell.model.desc}' and no source package is available"
|
168
|
-
raise PackageMissingSourceCode, msg
|
169
|
-
end
|
170
|
-
end
|
171
|
-
}
|
172
|
-
}
|
173
|
-
}
|
174
|
-
}
|
175
|
-
end
|
176
|
-
|
177
178
|
def track_and_log(message)
|
178
179
|
@event_log.track(message) do
|
179
180
|
@logger.info(message)
|
@@ -143,7 +143,8 @@ module Bosh::Director
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def stop
|
146
|
-
|
146
|
+
skip_drain = @deployment_plan.skip_drain_for_job?(@job.name)
|
147
|
+
stopper = Stopper.new(@instance, agent, @target_state, skip_drain, Config, @logger)
|
147
148
|
stopper.stop
|
148
149
|
end
|
149
150
|
|
@@ -1,14 +1,27 @@
|
|
1
1
|
module Bosh::Director
|
2
2
|
class InstanceUpdater::Stopper
|
3
|
-
def initialize(instance, agent_client, target_state, config, logger)
|
3
|
+
def initialize(instance, agent_client, target_state, skip_drain, config, logger)
|
4
4
|
@instance = instance
|
5
5
|
@agent_client = agent_client
|
6
6
|
@target_state = target_state
|
7
|
+
@skip_drain = skip_drain
|
7
8
|
@config = config
|
8
9
|
@logger = logger
|
9
10
|
end
|
10
11
|
|
11
12
|
def stop
|
13
|
+
if @skip_drain
|
14
|
+
@logger.info("Skipping drain for '#{@instance}'")
|
15
|
+
else
|
16
|
+
perform_drain
|
17
|
+
end
|
18
|
+
|
19
|
+
@agent_client.stop
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def perform_drain
|
12
25
|
drain_type = shutting_down? ? 'shutdown' : 'update'
|
13
26
|
|
14
27
|
# Apply spec might change after shutdown drain (unlike update drain)
|
@@ -21,12 +34,8 @@ module Bosh::Director
|
|
21
34
|
else
|
22
35
|
wait_for_dynamic_drain(drain_time)
|
23
36
|
end
|
24
|
-
|
25
|
-
@agent_client.stop
|
26
37
|
end
|
27
38
|
|
28
|
-
private
|
29
|
-
|
30
39
|
def shutting_down?
|
31
40
|
@instance.resource_pool_changed? ||
|
32
41
|
@instance.persistent_disk_changed? ||
|
@@ -50,6 +50,7 @@ module Bosh::Director
|
|
50
50
|
with_stemcell_lock(@stemcell.name, @stemcell.version, :timeout => lock_timeout) do
|
51
51
|
|
52
52
|
planner = create_planner
|
53
|
+
DeploymentPlan::PlannerFactory.validate_packages(planner, {:context => 'export'})
|
53
54
|
package_compile_step = DeploymentPlan::Steps::PackageCompileStep.new(
|
54
55
|
planner,
|
55
56
|
Config.cloud, # CPI
|
@@ -59,10 +59,6 @@ module Bosh::Director
|
|
59
59
|
process_release(release_dir)
|
60
60
|
}
|
61
61
|
|
62
|
-
if @rebase && @packages_unchanged && @jobs_unchanged
|
63
|
-
raise DirectorError, "Rebase is attempted without any job or package changes"
|
64
|
-
end
|
65
|
-
|
66
62
|
"Created release `#{@name}/#{@version}'"
|
67
63
|
|
68
64
|
rescue Exception => e
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-director
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3039.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VMware
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt-ruby
|
@@ -30,126 +30,126 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.3039.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.3039.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bosh-core
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.3039.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.3039.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bosh-director-core
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.3039.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 1.3039.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bosh_common
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: 1.3039.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
82
|
+
version: 1.3039.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bosh-template
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.3039.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: 1.3039.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bosh_cpi
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.3039.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: 1.3039.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: bosh_openstack_cpi
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
117
|
+
version: 1.3039.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.
|
124
|
+
version: 1.3039.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bosh_aws_cpi
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
131
|
+
version: 1.3039.0
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
138
|
+
version: 1.3039.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: bosh_vsphere_cpi
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.
|
145
|
+
version: 1.3039.0
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 1.
|
152
|
+
version: 1.3039.0
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: bosh_vcloud_cpi
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -572,7 +572,7 @@ dependencies:
|
|
572
572
|
version: '0'
|
573
573
|
description: |-
|
574
574
|
BOSH Director
|
575
|
-
|
575
|
+
e8cf4e
|
576
576
|
email: support@cloudfoundry.com
|
577
577
|
executables:
|
578
578
|
- bosh-director
|
@@ -723,6 +723,7 @@ files:
|
|
723
723
|
- lib/bosh/director/deployment_plan/network.rb
|
724
724
|
- lib/bosh/director/deployment_plan/network_subnet.rb
|
725
725
|
- lib/bosh/director/deployment_plan/notifier.rb
|
726
|
+
- lib/bosh/director/deployment_plan/options/skip_drain.rb
|
726
727
|
- lib/bosh/director/deployment_plan/planner.rb
|
727
728
|
- lib/bosh/director/deployment_plan/planner_factory.rb
|
728
729
|
- lib/bosh/director/deployment_plan/release_version.rb
|