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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ac5ff2357caa3c0640c5e26554f1515c241fc9c
4
- data.tar.gz: a0a297f8295f7607b2302a8b71586eae974e5100
3
+ metadata.gz: 9cae55bf1eca66fc2b7350f2d90cf6c771ff6536
4
+ data.tar.gz: 706c4b982e6e7faef9bee55cf2ee49d0f291dbac
5
5
  SHA512:
6
- metadata.gz: 88b3761ba7e48100c86310bbf3bec22a00241f1c93e66e6b2092c5c1932913381af25cd37b3c6befc6576856b810266ef449cb70d73c26aedfe6ec51bc9afa20
7
- data.tar.gz: 0b9aae13fd73fe0b644edc889edca059b31f288f32e2a5446e15b7e696cf1a11ea557e773a7d3cb07846498e80da07afd8078add4c836af7868185abd57c485a
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 run_scripts(scripts_list, options)
126
+ def run_script(script_name, options)
127
127
  begin
128
- send_message(:run_scripts, scripts_list, options)
128
+ send_message(:run_script, script_name, options)
129
129
  rescue RpcRemoteException => e
130
130
  if e.message =~ /unknown message/
131
- @logger.warn("Ignoring run_scripts 'unknown message' error from the agent: #{e.inspect}. Received while trying to run : #{scripts_list}")
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
- send_disposable_file(tmp_file, :type => 'application/x-gzip')
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(Dir.tmpdir, random_name)
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
@@ -154,6 +154,7 @@ module Bosh::Director
154
154
  agent_client(new_vm).apply(spec)
155
155
 
156
156
  if instance && instance.state == "started"
157
+ agent_client(new_vm).run_script('pre-start', {})
157
158
  agent_client(new_vm).start
158
159
  end
159
160
  end
@@ -1,5 +1,3 @@
1
- require 'common/deep_copy'
2
-
3
1
  module Bosh::Director
4
2
  module DeploymentPlan
5
3
  class CloudManifestParser
@@ -1,5 +1,3 @@
1
- require 'common/deep_copy'
2
-
3
1
  module Bosh::Director
4
2
  module DeploymentPlan
5
3
  class DeploymentSpecParser
@@ -1,4 +1,3 @@
1
- require 'common/deep_copy'
2
1
  require 'bosh/template/property_helper'
3
2
 
4
3
  module Bosh::Director
@@ -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
@@ -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
- event_log.begin_stage('running pre-start scripts', 1)
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
- @release_is_new = false
141
- @release_version_model = Models::ReleaseVersion.find_or_create(version_attrs) {
142
- @release_is_new = true
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) if @release_is_new
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
- did_something = false
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, modified_package = use_existing_packages(existing_packages, release_dir)
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
- did_something |= create_compiled_packages(consolidated_package_stemcell_hashes, release_dir)
271
+ create_compiled_packages(consolidated_package_stemcell_hashes, release_dir)
268
272
  else
269
- did_something |= backfill_source_for_packages(registered_packages, release_dir)
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 [], false
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, true
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 [], false
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, true
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
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Director
3
- VERSION = '1.3063.0'
3
+ VERSION = '1.3068.0'
4
4
  end
5
5
  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.3063.0
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-01 00:00:00.000000000 Z
11
+ date: 2015-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bcrypt-ruby
14
+ name: bosh_common
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.1
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: 3.0.1
26
+ version: 1.3068.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: blobstore_client
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.3063.0
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.3063.0
40
+ version: 1.3068.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: bosh-core
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.3063.0
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.3063.0
54
+ version: 1.3068.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: bosh-director-core
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.3063.0
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.3063.0
68
+ version: 1.3068.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: bosh_common
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.3063.0
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.3063.0
82
+ version: 1.3068.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: bosh-template
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.3063.0
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.3063.0
96
+ version: 1.3068.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: bosh_cpi
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.3063.0
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.3063.0
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: 1.3063.0
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: 1.3063.0
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.3063.0
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.3063.0
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: 1.3063.0
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: 1.3063.0
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