bosh-director 1.3063.0 → 1.3068.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/agent_client.rb +3 -3
- data/lib/bosh/director/api/controllers/resources_controller.rb +8 -1
- data/lib/bosh/director/api/resource_manager.rb +18 -2
- data/lib/bosh/director/cloudcheck_helper.rb +1 -0
- data/lib/bosh/director/deployment_plan/cloud_manifest_parser.rb +0 -2
- data/lib/bosh/director/deployment_plan/deployment_spec_parser.rb +0 -2
- data/lib/bosh/director/deployment_plan/job_spec_parser.rb +0 -1
- data/lib/bosh/director/deployment_plan/planner.rb +2 -1
- data/lib/bosh/director/errors.rb +2 -0
- data/lib/bosh/director/instance_updater.rb +1 -15
- data/lib/bosh/director/jobs/update_release.rb +53 -56
- data/lib/bosh/director/version.rb +1 -1
- metadata +44 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cae55bf1eca66fc2b7350f2d90cf6c771ff6536
|
4
|
+
data.tar.gz: 706c4b982e6e7faef9bee55cf2ee49d0f291dbac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94f7c1ee49d3ab4018517437d1f602518ade5803bf712dfab62e83f520108be596fb171aa93b9074380ff35dfea95552313bcc71f4691eb46760dc42d072d367
|
7
|
+
data.tar.gz: 8e3632b636703a18fc8fe46f5987cf952e6726dcdfeffee66dfb4ae800e04b4008d02a40a3f75cb16318599ddbaf81f42ae6fc0f6d53e95f51f702b5c5493260
|
@@ -123,12 +123,12 @@ module Bosh::Director
|
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
|
-
def
|
126
|
+
def run_script(script_name, options)
|
127
127
|
begin
|
128
|
-
send_message(:
|
128
|
+
send_message(:run_script, script_name, options)
|
129
129
|
rescue RpcRemoteException => e
|
130
130
|
if e.message =~ /unknown message/
|
131
|
-
@logger.warn("Ignoring
|
131
|
+
@logger.warn("Ignoring run_script 'unknown message' error from the agent: #{e.inspect}. Received while trying to run: #{script_name}")
|
132
132
|
else
|
133
133
|
raise
|
134
134
|
end
|
@@ -10,8 +10,15 @@ module Bosh::Director
|
|
10
10
|
end
|
11
11
|
|
12
12
|
get '/:id' do
|
13
|
+
@resource_manager.clean_old_tmpfiles
|
14
|
+
|
13
15
|
tmp_file = @resource_manager.get_resource_path(params[:id])
|
14
|
-
|
16
|
+
|
17
|
+
status 200
|
18
|
+
headers \
|
19
|
+
'Content-Type' => 'application/x-gzip',
|
20
|
+
'X-Accel-Redirect' => File.join('/x_accel_files/', tmp_file)
|
21
|
+
body ''
|
15
22
|
end
|
16
23
|
end
|
17
24
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Copyright (c) 2009-2012 VMware, Inc.
|
2
2
|
|
3
|
+
require 'fileutils'
|
4
|
+
|
3
5
|
module Bosh::Director
|
4
6
|
module Api
|
5
7
|
class ResourceManager
|
@@ -10,14 +12,17 @@ module Bosh::Director
|
|
10
12
|
end
|
11
13
|
|
12
14
|
# Retrieves the resource `id` from the blobstore and stores it
|
13
|
-
# locally, and returns the path to the file
|
15
|
+
# locally, and returns the path to the file. It is the caller's
|
16
|
+
# responsibility to delete the resulting file at some point.
|
17
|
+
# An easy option is to call clean_old_tmpfiles before each call
|
18
|
+
# to this method.
|
14
19
|
#
|
15
20
|
# @param [String] id
|
16
21
|
# @return [String] path to the contents of the blobstore id
|
17
22
|
def get_resource_path(id)
|
18
23
|
blobstore_resource(id) do |blobstore|
|
19
24
|
random_name = "resource-#{SecureRandom.uuid}"
|
20
|
-
path = File.join(
|
25
|
+
path = File.join(resource_tmpdir, random_name)
|
21
26
|
|
22
27
|
File.open(path, "w") do |f|
|
23
28
|
blobstore.get(id, f)
|
@@ -27,6 +32,17 @@ module Bosh::Director
|
|
27
32
|
end
|
28
33
|
end
|
29
34
|
|
35
|
+
# Returns the directory where files created by get_resource_path will be written.
|
36
|
+
def resource_tmpdir
|
37
|
+
Dir.tmpdir
|
38
|
+
end
|
39
|
+
|
40
|
+
# Deletes all get_resource_path temporary files that are more than 5 minutes old.
|
41
|
+
def clean_old_tmpfiles
|
42
|
+
Dir.glob("#{resource_tmpdir}/resource-*").
|
43
|
+
select{|f| File.mtime(f) < (Time.now - (60*5)) }.
|
44
|
+
each{|f| FileUtils.rm_f(f) }
|
45
|
+
end
|
30
46
|
# Retrieves the resource `id` from the blobstore and returns the
|
31
47
|
# contents of it.
|
32
48
|
# @param [String] id
|
@@ -2,6 +2,7 @@ require 'bosh/director/deployment_plan/deployment_spec_parser'
|
|
2
2
|
require 'bosh/director/deployment_plan/cloud_manifest_parser'
|
3
3
|
require 'bosh/director/deployment_plan/disk_pool'
|
4
4
|
require 'forwardable'
|
5
|
+
require 'common/deep_copy'
|
5
6
|
|
6
7
|
module Bosh::Director
|
7
8
|
# Encapsulates essential director data structures retrieved
|
@@ -53,7 +54,7 @@ module Bosh::Director
|
|
53
54
|
@properties = attrs.fetch(:properties)
|
54
55
|
@releases = {}
|
55
56
|
|
56
|
-
@manifest_text = manifest_text
|
57
|
+
@manifest_text = Bosh::Common::DeepCopy.copy(manifest_text)
|
57
58
|
@cloud_config = cloud_config
|
58
59
|
@cloud_planner = CloudPlanner.new(cloud_config)
|
59
60
|
@model = deployment_model
|
data/lib/bosh/director/errors.rb
CHANGED
@@ -75,6 +75,8 @@ module Bosh::Director
|
|
75
75
|
ReleaseVersionInvalid = err(30010)
|
76
76
|
ReleaseNotMatchingManifest = err(30011)
|
77
77
|
ReleaseInvalidPackage = err(30012)
|
78
|
+
ReleaseExistingJobFingerprintMismatch = err(30013)
|
79
|
+
ReleaseVersionCommitHashMismatch = err(30014)
|
78
80
|
|
79
81
|
ValidationInvalidType = err(40000)
|
80
82
|
ValidationMissingField = err(40001)
|
@@ -119,17 +119,7 @@ module Bosh::Director
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def run_pre_start_scripts
|
122
|
-
|
123
|
-
|
124
|
-
pre_start_scripts_list = []
|
125
|
-
@instance.spec['job']['templates'].each do |template|
|
126
|
-
pre_start_scripts_list << "jobs/#{template['name']}/bin/pre-start"
|
127
|
-
end
|
128
|
-
|
129
|
-
event_log.track(@instance.spec['job']['name']) {
|
130
|
-
@agent.run_scripts(pre_start_scripts_list, {})
|
131
|
-
}
|
132
|
-
|
122
|
+
@agent.run_script("pre-start", {})
|
133
123
|
end
|
134
124
|
|
135
125
|
def start!
|
@@ -385,9 +375,5 @@ module Bosh::Director
|
|
385
375
|
delete_mounted_disk(new_disk)
|
386
376
|
raise
|
387
377
|
end
|
388
|
-
|
389
|
-
def event_log
|
390
|
-
@event_log ||= Config.event_log
|
391
|
-
end
|
392
378
|
end
|
393
379
|
end
|
@@ -28,14 +28,9 @@ module Bosh::Director
|
|
28
28
|
@release_path = release_path
|
29
29
|
end
|
30
30
|
|
31
|
-
@release_model = nil
|
32
|
-
@release_version_model = nil
|
31
|
+
@release_model, @release_version_model, @manifest, @name, @version = nil, nil, nil, nil, nil
|
33
32
|
|
34
33
|
@rebase = !!options['rebase']
|
35
|
-
|
36
|
-
@manifest = nil
|
37
|
-
@name = nil
|
38
|
-
@version = nil
|
39
34
|
end
|
40
35
|
|
41
36
|
# Extracts release tarball, verifies release manifest and saves release in DB
|
@@ -51,14 +46,11 @@ module Bosh::Director
|
|
51
46
|
|
52
47
|
single_step_stage("Verifying manifest") { verify_manifest(release_dir) }
|
53
48
|
|
54
|
-
with_release_lock(@name) {
|
55
|
-
process_release(release_dir)
|
56
|
-
}
|
49
|
+
with_release_lock(@name) { process_release(release_dir) }
|
57
50
|
|
58
51
|
"Created release `#{@name}/#{@version}'"
|
59
52
|
|
60
53
|
rescue Exception => e
|
61
|
-
remove_release_version_model
|
62
54
|
raise e
|
63
55
|
|
64
56
|
ensure
|
@@ -103,9 +95,7 @@ module Bosh::Director
|
|
103
95
|
|
104
96
|
begin
|
105
97
|
@version = Bosh::Common::Version::ReleaseVersion.parse(@manifest["version"])
|
106
|
-
unless @version == @manifest["version"]
|
107
|
-
logger.info("Formatted version '#{@manifest["version"]}' => '#{@version}'")
|
108
|
-
end
|
98
|
+
logger.info("Formatted version '#{@manifest["version"]}' => '#{@version}'") unless @version == @manifest["version"]
|
109
99
|
rescue SemiSemantic::ParseError
|
110
100
|
raise ReleaseVersionInvalid, "Release version invalid: #{@manifest["version"]}"
|
111
101
|
end
|
@@ -129,18 +119,22 @@ module Bosh::Director
|
|
129
119
|
def process_release(release_dir)
|
130
120
|
@release_model = Models::Release.find_or_create(:name => @name)
|
131
121
|
|
132
|
-
if @rebase
|
133
|
-
@version = next_release_version
|
134
|
-
end
|
122
|
+
@version = next_release_version if @rebase
|
135
123
|
|
136
124
|
version_attrs = { :release => @release_model, :version => @version.to_s }
|
137
|
-
version_attrs[:uncommitted_changes] = @uncommitted_changes if @uncommitted_changes
|
138
|
-
version_attrs[:commit_hash] = @commit_hash if @commit_hash
|
139
125
|
|
140
|
-
|
141
|
-
@release_version_model = Models::ReleaseVersion.find_or_create(version_attrs)
|
142
|
-
|
143
|
-
|
126
|
+
release_is_new = false
|
127
|
+
@release_version_model = Models::ReleaseVersion.find_or_create(version_attrs){ release_is_new = true }
|
128
|
+
|
129
|
+
if release_is_new
|
130
|
+
@release_version_model.uncommitted_changes = @uncommitted_changes if @uncommitted_changes
|
131
|
+
@release_version_model.commit_hash = @commit_hash if @commit_hash
|
132
|
+
@release_version_model.save
|
133
|
+
else
|
134
|
+
if @release_version_model.commit_hash != @commit_hash || @release_version_model.uncommitted_changes != @uncommitted_changes
|
135
|
+
raise ReleaseVersionCommitHashMismatch, "release `#{@name}/#{@version}' has already been uploaded with commit_hash as `#{@commit_hash}' and uncommitted_changes as `#{@uncommitted_changes}'"
|
136
|
+
end
|
137
|
+
end
|
144
138
|
|
145
139
|
single_step_stage("Resolving package dependencies") do
|
146
140
|
resolve_package_dependencies(@manifest[@packages_folder])
|
@@ -148,7 +142,7 @@ module Bosh::Director
|
|
148
142
|
|
149
143
|
@packages = {}
|
150
144
|
process_packages(release_dir)
|
151
|
-
process_jobs(release_dir)
|
145
|
+
process_jobs(release_dir)
|
152
146
|
|
153
147
|
event_log.begin_stage(@compiled_release ? "Compiled Release has been created" : "Release has been created", 1)
|
154
148
|
event_log.track("#{@name}/#{@version}") {}
|
@@ -200,13 +194,16 @@ module Bosh::Director
|
|
200
194
|
registered_packages = []
|
201
195
|
|
202
196
|
@manifest[@packages_folder].each do |package_meta|
|
203
|
-
# Checking whether we might have the same bits somewhere
|
197
|
+
# Checking whether we might have the same bits somewhere (in any release, not just the one being uploaded)
|
198
|
+
@release_version_model.packages.select { |pv| pv.name == package_meta['name'] }.each do |package|
|
199
|
+
if package.fingerprint != package_meta['fingerprint']
|
200
|
+
raise ReleaseInvalidPackage, "package `#{package_meta['name']}' had different fingerprint in previously uploaded release `#{@name}/#{@version}'"
|
201
|
+
end
|
202
|
+
end
|
204
203
|
|
205
204
|
packages = Models::Package.where(fingerprint: package_meta["fingerprint"]).all
|
205
|
+
|
206
206
|
if packages.empty?
|
207
|
-
unless @release_is_new
|
208
|
-
raise ReleaseInvalidPackage, "package #{package_meta['name']}/#{package_meta['version']} not part of previous upload of release #{@name}/#{@version}"
|
209
|
-
end
|
210
207
|
new_packages << package_meta
|
211
208
|
next
|
212
209
|
end
|
@@ -227,14 +224,25 @@ module Bosh::Director
|
|
227
224
|
end
|
228
225
|
|
229
226
|
if existing_package.release_versions.include? @release_version_model
|
227
|
+
if existing_package.blobstore_id.nil?
|
228
|
+
packages.each do |package|
|
229
|
+
unless package.blobstore_id.nil?
|
230
|
+
package_meta["blobstore_id"] = package.blobstore_id
|
231
|
+
package_meta["sha1"] = package.sha1
|
232
|
+
break
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
230
236
|
registered_packages << [existing_package, package_meta]
|
231
237
|
else
|
232
238
|
existing_packages << [existing_package, package_meta]
|
233
239
|
end
|
240
|
+
|
234
241
|
else
|
235
242
|
# We found a package with the same fingerprint but different
|
236
243
|
# (release, name, version) tuple, so we need to make a copy
|
237
244
|
# of the package blob and create a new db entry for it
|
245
|
+
|
238
246
|
packages.each do |package|
|
239
247
|
unless package.blobstore_id.nil?
|
240
248
|
package_meta["blobstore_id"] = package.blobstore_id
|
@@ -246,13 +254,9 @@ module Bosh::Director
|
|
246
254
|
end
|
247
255
|
end
|
248
256
|
|
249
|
-
|
250
|
-
|
251
|
-
package_stemcell_hashes1, created_package = create_packages(new_packages, release_dir)
|
252
|
-
did_something |= created_package
|
257
|
+
package_stemcell_hashes1 = create_packages(new_packages, release_dir)
|
253
258
|
|
254
|
-
package_stemcell_hashes2
|
255
|
-
did_something |= modified_package
|
259
|
+
package_stemcell_hashes2 = use_existing_packages(existing_packages, release_dir)
|
256
260
|
|
257
261
|
if @compiled_release
|
258
262
|
compatible_stemcell_combos = registered_packages.flat_map do |pkg, pkg_meta|
|
@@ -264,11 +268,10 @@ module Bosh::Director
|
|
264
268
|
end
|
265
269
|
end
|
266
270
|
consolidated_package_stemcell_hashes = Array(package_stemcell_hashes1) | Array(package_stemcell_hashes2) | compatible_stemcell_combos
|
267
|
-
|
271
|
+
create_compiled_packages(consolidated_package_stemcell_hashes, release_dir)
|
268
272
|
else
|
269
|
-
|
273
|
+
backfill_source_for_packages(registered_packages, release_dir)
|
270
274
|
end
|
271
|
-
did_something
|
272
275
|
end
|
273
276
|
|
274
277
|
# @return [boolean] true if sources were added to at least one package; false if the call had no effect.
|
@@ -293,7 +296,7 @@ module Bosh::Director
|
|
293
296
|
# @return [Array<Hash>] package & stemcell matching pairs that were registered. empty if no packages were changed.
|
294
297
|
def use_existing_packages(packages, release_dir)
|
295
298
|
if packages.empty?
|
296
|
-
return []
|
299
|
+
return []
|
297
300
|
end
|
298
301
|
|
299
302
|
package_stemcell_hashes = []
|
@@ -319,17 +322,16 @@ module Bosh::Director
|
|
319
322
|
end
|
320
323
|
end
|
321
324
|
|
322
|
-
return package_stemcell_hashes
|
325
|
+
return package_stemcell_hashes
|
323
326
|
end
|
324
327
|
|
325
328
|
# Creates packages using provided metadata
|
326
329
|
# @param [Array<Hash>] packages Packages metadata
|
327
330
|
# @param [String] release_dir local path to the unpacked release
|
328
331
|
# @return [Array<Hash>, boolean] array of compiled package & stemcell matching pairs that were registered, and a
|
329
|
-
# flag indicating if any changes were made to the database.
|
330
332
|
def create_packages(package_metas, release_dir)
|
331
333
|
if package_metas.empty?
|
332
|
-
return []
|
334
|
+
return []
|
333
335
|
end
|
334
336
|
|
335
337
|
package_stemcell_hashes = []
|
@@ -354,7 +356,7 @@ module Bosh::Director
|
|
354
356
|
end
|
355
357
|
end
|
356
358
|
|
357
|
-
return package_stemcell_hashes
|
359
|
+
return package_stemcell_hashes
|
358
360
|
end
|
359
361
|
|
360
362
|
# @return [boolean] true if at least one job was created; false if the call had no effect.
|
@@ -450,8 +452,7 @@ module Bosh::Director
|
|
450
452
|
def save_package_source_blob(package, package_meta, release_dir)
|
451
453
|
return false unless package.blobstore_id.nil?
|
452
454
|
|
453
|
-
name, version = package_meta['name'], package_meta['version']
|
454
|
-
existing_blob = package_meta['blobstore_id']
|
455
|
+
name, version, existing_blob = package_meta['name'], package_meta['version'], package_meta['blobstore_id']
|
455
456
|
desc = "package '#{name}/#{version}'"
|
456
457
|
|
457
458
|
package.sha1 = package_meta['sha1']
|
@@ -500,6 +501,12 @@ module Bosh::Director
|
|
500
501
|
|
501
502
|
@manifest["jobs"].each do |job_meta|
|
502
503
|
# Checking whether we might have the same bits somewhere
|
504
|
+
@release_version_model.templates.select { |t| t.name == job_meta["name"] }.each do |tmpl|
|
505
|
+
if tmpl.fingerprint != job_meta["fingerprint"]
|
506
|
+
raise ReleaseExistingJobFingerprintMismatch, "job `#{job_meta["name"]}' had different fingerprint in previously uploaded release `#{@name}/#{@version}'"
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
503
510
|
jobs = Models::Template.where(fingerprint: job_meta["fingerprint"]).all
|
504
511
|
|
505
512
|
template = jobs.find do |job|
|
@@ -552,13 +559,15 @@ module Bosh::Director
|
|
552
559
|
jobs.each do |template, _|
|
553
560
|
job_desc = "#{template.name}/#{template.version}"
|
554
561
|
logger.info("Using existing job `#{job_desc}'")
|
555
|
-
register_template(template)
|
562
|
+
register_template(template) unless template.release_versions.include? @release_version_model
|
556
563
|
end
|
557
564
|
end
|
558
565
|
|
559
566
|
true
|
560
567
|
end
|
561
568
|
|
569
|
+
private
|
570
|
+
|
562
571
|
# Marks job template model as being used by release version
|
563
572
|
# @param [Models::Template] template Job template model
|
564
573
|
# @return [void]
|
@@ -566,8 +575,6 @@ module Bosh::Director
|
|
566
575
|
@release_version_model.add_template(template)
|
567
576
|
end
|
568
577
|
|
569
|
-
private
|
570
|
-
|
571
578
|
# Returns the next release version (to be used for rebased release)
|
572
579
|
# @return [String]
|
573
580
|
def next_release_version
|
@@ -577,16 +584,6 @@ module Bosh::Director
|
|
577
584
|
list = Bosh::Common::Version::ReleaseVersionList.parse(strings)
|
578
585
|
list.rebase(@version)
|
579
586
|
end
|
580
|
-
|
581
|
-
# Removes release version model, along with all packages and templates.
|
582
|
-
# @return [void]
|
583
|
-
def remove_release_version_model
|
584
|
-
return unless @release_version_model && !@release_version_model.new?
|
585
|
-
|
586
|
-
@release_version_model.remove_all_packages
|
587
|
-
@release_version_model.remove_all_templates
|
588
|
-
@release_version_model.destroy
|
589
|
-
end
|
590
587
|
end
|
591
588
|
end
|
592
589
|
end
|
metadata
CHANGED
@@ -1,155 +1,155 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-director
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3068.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-09-
|
11
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bosh_common
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.3068.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.3068.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bosh_cpi
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.3068.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.3068.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: bosh-
|
42
|
+
name: bosh-registry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.3068.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.3068.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: blobstore_client
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.3068.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.3068.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: bosh-core
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: 1.3068.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.3068.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: bosh-
|
84
|
+
name: bosh-director-core
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.3068.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.3068.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: bosh-template
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.3068.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.3068.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:
|
117
|
+
version: 2.0.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:
|
124
|
+
version: 2.0.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.3068.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.3068.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:
|
145
|
+
version: 2.0.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:
|
152
|
+
version: 2.0.0
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: bosh_vcloud_cpi
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - '='
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 0.11.0
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: bcrypt-ruby
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 3.0.1
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 3.0.1
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: eventmachine
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -570,9 +584,7 @@ dependencies:
|
|
570
584
|
- - ">="
|
571
585
|
- !ruby/object:Gem::Version
|
572
586
|
version: '0'
|
573
|
-
description:
|
574
|
-
BOSH Director
|
575
|
-
ac5134
|
587
|
+
description: BOSH Director
|
576
588
|
email: support@cloudfoundry.com
|
577
589
|
executables:
|
578
590
|
- bosh-director
|