bosh-director 1.3215.3.0 → 1.3215.4.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: 024dde641fbd1f0b6b6b0481f75469bb7b1d0be9
4
- data.tar.gz: b0bb968be959a42def75ae98351143e79e5f2b63
3
+ metadata.gz: faf6283449ed9e2f917191f99c686b67dca177af
4
+ data.tar.gz: 53ccfd5747076bf4105787ab11568471ddfbf5cc
5
5
  SHA512:
6
- metadata.gz: 8d8ddb3554d8594c9adb81d1f219c03c427ede24ae38881b459bf8cefe5e697f680cd529e05935d43f801cd50a565c276bdaf24920aa492ed797681e95747767
7
- data.tar.gz: 36c6342f4764fdd858c9493604fce5321449875d288b7d4ce75b14a6a4f6a9c76b4235301945a34fe7b7aecde4b4e706b1fd733c053d9f0f185e18b4652da832
6
+ metadata.gz: 431bd32c3d55f3f581ea2c068ee69d20c86e49de4645bd758a331fd43e7fc15cd207e854569f2e883e2f82f9cf5e06edfe839141afaa8c1c82ab0b40cc380dc9
7
+ data.tar.gz: 3ccbba5d34e8b4ba95508c91c13cb741ba241a7aeb25c9faaaef998d70a353182c0ae6fff743c6bb20008d7b3593e8ae37b61e4cd19541aa6a3424342f8f2b0b
@@ -23,23 +23,25 @@ Sequel.migration do
23
23
  stemcell_foreign_key_name = stemcell_foreign_keys.first.fetch(:name)
24
24
 
25
25
  build_indexes = indexes(:compiled_packages).select { |_, value| value.fetch(:columns) == [:package_id, :stemcell_id, :build] }
26
+ raise 'Failed to run migration, found more than 1 build index' if build_indexes.size != 1
27
+ # build_indexes is an array, where each element is an array with first element being the name of index
28
+ build_index = build_indexes.first.first
29
+
30
+ stemcell_indexes = indexes(:compiled_packages).select { |_, value| value.fetch(:columns) == [:package_id, :stemcell_id, :dependency_key_sha1]}
31
+ raise 'Failed to run migration, found more than 1 stemcell_id index' if stemcell_indexes.size != 1
32
+ # stemcell_indexes is an array, where each element is an array with first element being the name of index
33
+ stemcell_index = stemcell_indexes.first.first
34
+
26
35
  if [:mysql2, :mysql].include?(adapter_scheme)
27
- raise 'Failed to run migration, found more than 1 build index' if build_indexes.size != 1
28
- # build_indexes is an array, where each element is an array with first element being the name of index
29
- build_index = build_indexes.first.first
30
36
  alter_table(:compiled_packages) do
31
37
  drop_index(nil, name: build_index)
32
38
  end
33
39
  elsif [:postgres].include?(adapter_scheme)
34
- build_index = build_indexes.empty? ? 'compiled_packages_package_id_stemcell_id_build_key' : build_indexes.first.first
35
40
  alter_table(:compiled_packages) do
36
41
  drop_constraint(build_index)
37
42
  end
38
43
  end
39
44
 
40
- stemcell_indexes = indexes(:compiled_packages).select { |_, value| value.fetch(:columns) == [:package_id, :stemcell_id, :dependency_key_sha1]}
41
- stemcell_index = stemcell_indexes.empty? ? 'package_stemcell_dependency_key_sha1_idx' : stemcell_indexes.first.first
42
-
43
45
  alter_table(:compiled_packages) do
44
46
  drop_constraint(stemcell_foreign_key_name, :type => :foreign_key)
45
47
  add_index [:package_id, :stemcell_os, :stemcell_version, :build], unique: true, name: 'package_stemcell_build_idx'
@@ -371,22 +371,15 @@ module Bosh::Director
371
371
 
372
372
  redact = params['redact'] != 'false'
373
373
 
374
- result = {
375
- 'context' => {
376
- 'cloud_config_id' => after_cloud_config ? after_cloud_config.id : nil,
377
- 'runtime_config_id' => after_runtime_config ? after_runtime_config.id : nil
378
- }
379
- }
380
-
381
- begin
382
- diff = before_manifest.diff(after_manifest, redact)
383
- result['diff'] = diff.map { |l| [l.to_s, l.status] }
384
- rescue => error
385
- result['diff'] = []
386
- result['error'] = "Unable to diff manifest: #{error.inspect}\n#{error.backtrace.join("\n")}"
387
- end
388
-
389
- json_encode(result)
374
+ diff = before_manifest.diff(after_manifest, redact)
375
+
376
+ json_encode({
377
+ 'context' => {
378
+ 'cloud_config_id' => after_cloud_config ? after_cloud_config.id : nil,
379
+ 'runtime_config_id' => after_runtime_config ? after_runtime_config.id : nil
380
+ },
381
+ 'diff' => diff.map { |l| [l.to_s, l.status] }
382
+ })
390
383
  end
391
384
 
392
385
  post '/:deployment/errands/:errand_name/runs' do
@@ -68,7 +68,7 @@ module Bosh::Director
68
68
  'max_in_flight' => @max_in_flight,
69
69
  'canary_watch_time' => "#{@min_canary_watch_time}-#{@max_canary_watch_time}",
70
70
  'update_watch_time' => "#{@min_update_watch_time}-#{@max_update_watch_time}",
71
- 'serial' => serial?
71
+ 'serial' => @serial
72
72
  }
73
73
  end
74
74
 
@@ -1,5 +1,4 @@
1
1
  require 'securerandom'
2
- require 'common/release/release_directory'
3
2
  require 'common/version/release_version'
4
3
  require 'bosh/director/compiled_release_downloader'
5
4
  require 'bosh/director/compiled_release_manifest'
@@ -99,8 +98,7 @@ module Bosh::Director
99
98
  output_path = File.join(download_dir, "compiled_release_#{Time.now.to_f}.tar.gz")
100
99
  archiver = Core::TarGzipper.new
101
100
 
102
- release_directory = Bosh::Common::Release::ReleaseDirectory.new(download_dir)
103
- archiver.compress(download_dir, release_directory.ordered_release_files, output_path)
101
+ archiver.compress(download_dir, ['compiled_packages', 'jobs', 'release.MF'], output_path)
104
102
  tarball_file = File.open(output_path, 'r')
105
103
 
106
104
  oid = blobstore_client.create(tarball_file)
@@ -3,12 +3,13 @@ module Bosh::Director
3
3
 
4
4
  attr_accessor :packages
5
5
 
6
- def initialize(job_meta, release_model, release_dir, logger)
6
+ def initialize(job_meta, release_model, release_dir, packages, logger)
7
7
  @name = job_meta['name']
8
8
  @version = job_meta['version']
9
9
  @sha1 = job_meta['sha1']
10
10
  @fingerprint = job_meta['fingerprint']
11
11
 
12
+ @packages = packages
12
13
  @release_model = release_model
13
14
  @release_dir = release_dir
14
15
  @logger = logger
@@ -62,8 +63,8 @@ module Bosh::Director
62
63
  result = Bosh::Exec.sh("tar -C #{job_dir} -xzf #{job_tgz} 2>&1", :on_error => :return)
63
64
  if result.failed?
64
65
  @logger.error("Extracting #{desc} archive failed in dir #{job_dir}, " +
65
- "tar returned #{result.exit_status}, " +
66
- "output: #{result.output}")
66
+ "tar returned #{result.exit_status}, " +
67
+ "output: #{result.output}")
67
68
  raise JobInvalidArchive, "Extracting #{desc} archive failed. Check task debug log for details."
68
69
  end
69
70
  end
@@ -108,10 +109,24 @@ module Bosh::Director
108
109
  end
109
110
 
110
111
  def parse_package_names(job_manifest)
111
- if job_manifest['packages'] && !job_manifest['packages'].is_a?(Array)
112
- raise JobInvalidPackageSpec, "Job '#{@name}' has invalid package spec format"
112
+ package_names = []
113
+ if job_manifest['packages']
114
+ unless job_manifest['packages'].is_a?(Array)
115
+ raise JobInvalidPackageSpec,
116
+ "Job `#{@name}' has invalid package spec format"
117
+ end
118
+
119
+ job_manifest['packages'].each do |package_name|
120
+ package = @packages[package_name]
121
+ if package.nil?
122
+ raise JobMissingPackage,
123
+ "Job `#{@name}' is referencing " +
124
+ "a missing package `#{package_name}'"
125
+ end
126
+ package_names << package.name
127
+ end
113
128
  end
114
- job_manifest['packages'] || []
129
+ package_names
115
130
  end
116
131
 
117
132
  def validate_logs(job_manifest)
@@ -140,7 +155,7 @@ module Bosh::Director
140
155
  def parse_links(links, kind)
141
156
  if !links.is_a?(Array)
142
157
  raise JobInvalidLinkSpec,
143
- "Job '#{@name}' has invalid spec format: '#{kind}' must be an array of hashes with name and type"
158
+ "Job '#{@name}' has invalid spec format: '#{kind}' must be an array of hashes with name and type"
144
159
  end
145
160
 
146
161
  parsed_links = {}
@@ -150,6 +150,7 @@ module Bosh::Director
150
150
  resolve_package_dependencies(@manifest[@packages_folder])
151
151
  end
152
152
 
153
+ @packages = {}
153
154
  process_packages(release_dir)
154
155
  process_jobs(release_dir)
155
156
 
@@ -201,6 +202,7 @@ module Bosh::Director
201
202
  new_packages = []
202
203
  existing_packages = []
203
204
  registered_packages = []
205
+ packages_existing_from_other_releases = []
204
206
 
205
207
  @manifest[@packages_folder].each do |package_meta|
206
208
  # Checking whether we might have the same bits somewhere (in any release, not just the one being uploaded)
@@ -259,6 +261,7 @@ module Bosh::Director
259
261
  end
260
262
  end
261
263
  new_packages << package_meta
264
+ packages_existing_from_other_releases << package_meta
262
265
  end
263
266
  end
264
267
 
@@ -274,7 +277,7 @@ module Bosh::Director
274
277
  }
275
278
  end
276
279
  all_package_refs = Array(created_package_refs) | Array(existing_package_refs) | registered_package_refs
277
- create_compiled_packages(all_package_refs, release_dir)
280
+ create_compiled_packages(all_package_refs, release_dir, packages_existing_from_other_releases)
278
281
  else
279
282
  backfill_source_for_packages(registered_packages, release_dir)
280
283
  end
@@ -291,6 +294,7 @@ module Bosh::Director
291
294
  logger.info("Adding source for package `#{package_desc}'")
292
295
  had_effect |= save_package_source_blob(package, package_meta, release_dir)
293
296
  package.save
297
+ @packages[package.name] = package
294
298
  end
295
299
  end
296
300
 
@@ -360,11 +364,11 @@ module Bosh::Director
360
364
  end
361
365
  end
362
366
 
363
- package_refs
367
+ return package_refs
364
368
  end
365
369
 
366
370
  # @return [boolean] true if at least one job was created; false if the call had no effect.
367
- def create_compiled_packages(all_compiled_packages, release_dir)
371
+ def create_compiled_packages(all_compiled_packages, release_dir, packages_existing_from_other_releases)
368
372
  return false if all_compiled_packages.nil?
369
373
 
370
374
  event_log.begin_stage('Creating new compiled packages', all_compiled_packages.size)
@@ -383,7 +387,7 @@ module Bosh::Director
383
387
  if existing_compiled_packages.empty?
384
388
  package_desc = "#{package.name}/#{package.version} for #{stemcell_os}/#{stemcell_version}"
385
389
  event_log.track(package_desc) do
386
- other_compiled_packages = compiled_packages_matching(package, stemcell)
390
+ other_compiled_packages = compiled_packages_matching(package, packages_existing_from_other_releases, stemcell)
387
391
  if @fix
388
392
  other_compiled_packages.each do |other_compiled_package|
389
393
  fix_compiled_package(other_compiled_package, compiled_pkg_tgz)
@@ -394,6 +398,7 @@ module Bosh::Director
394
398
  end
395
399
  elsif @fix
396
400
  existing_compiled_package = existing_compiled_packages.first
401
+ @packages[existing_compiled_package.name] = existing_compiled_package
397
402
  fix_compiled_package(existing_compiled_package, compiled_pkg_tgz)
398
403
  end
399
404
  end
@@ -401,12 +406,16 @@ module Bosh::Director
401
406
  had_effect
402
407
  end
403
408
 
404
- def compiled_packages_matching(package, stemcell)
409
+ def compiled_packages_matching(package, packages_existing_from_other_releases, stemcell)
405
410
  other_compiled_packages = []
406
411
  dependency_key = dependency_key(package)
407
- packages = Models::Package.where(fingerprint: package.fingerprint).all
408
- packages.each do |pkg|
409
- other_compiled_packages.concat(find_compiled_packages(pkg.id, stemcell[:os], stemcell[:version], dependency_key).all)
412
+ packages_existing_from_other_releases.each do |other_package_meta|
413
+ if other_package_meta["fingerprint"] == package.fingerprint
414
+ packages = Models::Package.where(fingerprint: other_package_meta["fingerprint"]).all
415
+ packages.each do |pkg|
416
+ other_compiled_packages.concat(find_compiled_packages(pkg.id, stemcell[:os], stemcell[:version], dependency_key).all)
417
+ end
418
+ end
410
419
  end
411
420
  other_compiled_packages
412
421
  end
@@ -520,6 +529,7 @@ module Bosh::Director
520
529
  # @param [Models::Package] package Package model
521
530
  # @return [void]
522
531
  def register_package(package)
532
+ @packages[package.name] = package
523
533
  @release_version_model.add_package(package)
524
534
  end
525
535
 
@@ -581,7 +591,7 @@ module Bosh::Director
581
591
  end
582
592
 
583
593
  def create_job(job_meta, release_dir)
584
- release_job = ReleaseJob.new(job_meta, @release_model, release_dir, logger)
594
+ release_job = ReleaseJob.new(job_meta, @release_model, release_dir, @packages, logger)
585
595
  logger.info("Creating job template `#{job_meta['name']}/#{job_meta['version']}' " +
586
596
  'from provided bits')
587
597
  release_job.update(Models::Template.new())
@@ -598,7 +608,7 @@ module Bosh::Director
598
608
 
599
609
  if @fix
600
610
  logger.info("Fixing existing job `#{job_desc}'")
601
- release_job = ReleaseJob.new(job_meta, @release_model, release_dir, logger)
611
+ release_job = ReleaseJob.new(job_meta, @release_model, release_dir, @packages, logger)
602
612
  release_job.update(template)
603
613
  else
604
614
  logger.info("Using existing job `#{job_desc}'")
@@ -1,21 +1,24 @@
1
+ class ::Hash
2
+ def deep_merge(second)
3
+ merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
4
+ self.merge(second, &merger)
5
+ end
6
+ end
7
+
1
8
  module Bosh::Director
2
9
  class Changeset
3
10
  KEY_NAME = 'name'
4
11
 
5
- REDACT_KEY_NAMES = %w(
6
- properties
7
- bosh
8
- )
9
-
10
- def initialize(before, after, redacted_before = nil, redacted_after = nil)
11
- @redacted_before = redacted_before.nil? ? Changeset.redact_properties!(Bosh::Common::DeepCopy.copy(before)) : redacted_before
12
- @redacted_after = redacted_after.nil? ? Changeset.redact_properties!(Bosh::Common::DeepCopy.copy(after)) : redacted_after
12
+ def initialize(before, after, redact = true, redacted_before = nil, redacted_after = nil)
13
+ @redact = redact
14
+ @redacted_before = redacted_before.nil? ? Redactor.redact_properties(Bosh::Common::DeepCopy.copy(before), redact) : redacted_before
15
+ @redacted_after = redacted_after.nil? ? Redactor.redact_properties(Bosh::Common::DeepCopy.copy(after), redact) : redacted_after
13
16
 
14
17
  @before = before
15
18
  @after = after
16
19
 
17
20
  if @before && @after
18
- @merged = deep_merge(@before, @after)
21
+ @merged = @before.deep_merge(@after)
19
22
  elsif @before
20
23
  @merged = @before
21
24
  else
@@ -23,113 +26,64 @@ module Bosh::Director
23
26
  end
24
27
  end
25
28
 
26
- # redacts properties from ruby object to avoid having to use a regex to redact properties from diff output
27
- # please do not use regexes for diffing/redacting
28
- def self.redact_properties!(obj, redact_key_is_ancestor = false)
29
- if redact_key_is_ancestor
30
- if obj.respond_to?(:key?)
31
- obj.keys.each{ |key|
32
- if obj[key].respond_to?(:each)
33
- redact_properties!(obj[key], true)
34
- else
35
- obj[key] = '<redacted>'
36
- end
37
- }
38
- elsif obj.respond_to?(:each_index)
39
- obj.each_index { |i|
40
- if obj[i].respond_to?(:each)
41
- redact_properties!(obj[i], true)
42
- else
43
- obj[i] = '<redacted>'
44
- end
45
- }
46
- end
47
- else
48
- if obj.respond_to?(:each)
49
- obj.each{ |a|
50
- if obj.respond_to?(:key?) && REDACT_KEY_NAMES.any? { |key| key == a.first } && a.last.respond_to?(:key?)
51
- redact_properties!(a.last, true)
52
- else
53
- redact_properties!(a.respond_to?(:last) ? a.last : a)
54
- end
55
-
56
- }
57
- end
58
- end
59
-
60
- obj
61
- end
62
-
63
- def diff(redact=true, indent = 0)
29
+ def diff(indent = 0)
64
30
  lines = DiffLines.new
65
31
 
66
- if redact
67
- output_values_before = @redacted_before
68
- output_values_after = @redacted_after
69
- else
70
- output_values_before = @before
71
- output_values_after = @after
72
- end
73
-
74
32
  @merged.each_pair do |key, value|
75
- if @before[key] != @after[key]
76
- if @before.nil? || @before[key].nil?
77
- lines.concat(yaml_lines({key => output_values_after[key]}, indent, 'added'))
78
-
79
- elsif @after.nil? || @after[key].nil?
80
- lines.concat(yaml_lines({key => output_values_before[key]}, indent, 'removed'))
81
-
82
- elsif @before[key].is_a?(Array) && @after[key].is_a?(Array)
83
- lines.concat(compare_arrays(@before[key], @after[key], output_values_before[key], output_values_after[key], key, redact, indent))
84
-
85
- elsif @before[key].is_a?(Hash) && @after[key].is_a?(Hash)
86
- changeset = Changeset.new(@before[key], @after[key], output_values_before[key], output_values_after[key])
87
- diff_lines = changeset.diff(redact, indent+1)
88
- unless diff_lines.empty?
89
- lines << Line.new(indent, "#{key}:", nil)
90
- lines.concat(diff_lines)
91
- end
33
+ if @before.nil? || @before[key].nil?
34
+ lines.concat(yaml_lines({key => @redacted_after[key]}, indent, 'added'))
92
35
 
93
- else
94
- lines.concat(yaml_lines({key => output_values_before[key]}, indent, 'removed'))
95
- lines.concat(yaml_lines({key => output_values_after[key]}, indent, 'added'))
36
+ elsif @after.nil? || @after[key].nil?
37
+ lines.concat(yaml_lines({key => @redacted_before[key]}, indent, 'removed'))
38
+
39
+ elsif @before[key].is_a?(Array) && @after[key].is_a?(Array)
40
+ lines.concat(compare_arrays(@before[key], @after[key], @redacted_before[key], @redacted_after[key], key, indent))
41
+
42
+ elsif value.is_a?(Hash)
43
+ changeset = Changeset.new(@before[key], @after[key],@redact, @redacted_before[key], @redacted_after[key])
44
+ diff_lines = changeset.diff(indent+1)
45
+ unless diff_lines.empty?
46
+ lines << Line.new(indent, "#{key}:", nil)
47
+ lines.concat(diff_lines)
96
48
  end
49
+
50
+ elsif @before[key] != @after[key]
51
+ lines.concat(yaml_lines({key => @redacted_before[key]}, indent, 'removed'))
52
+ lines.concat(yaml_lines({key => @redacted_after[key]}, indent, 'added'))
97
53
  end
98
54
  end
99
55
  lines
100
56
  end
101
57
 
102
- private
103
-
104
- def deep_merge(first, second)
105
- merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
106
- first.merge(second, &merger)
107
- end
108
-
109
58
  def yaml_lines(value, indent, state)
110
59
  lines = DiffLines.new
111
- value.to_yaml(indent: Line::INDENT).gsub(/^---\n/, '').split("\n").each do |line|
60
+ value.to_yaml(indent: Line::INDENT).gsub("---\n", '').split("\n").each do |line|
112
61
  lines << Line.new(indent, line, state)
113
62
  end
114
63
  lines
115
64
  end
116
65
 
117
- def compare_arrays(old_value, new_value, output_old_value, output_new_value, parent_name, redact, indent)
66
+ def compare_arrays(old_value, new_value, redacted_old_value, redacted_new_value, parent_name, indent)
118
67
  # combine arrays of redacted and unredacted values. unredacted arrays for diff logic, and redacted arrays for output
119
- combined_old_value = old_value.zip output_old_value
120
- combined_new_value = new_value.zip output_new_value
68
+ combined_old_value = old_value.zip redacted_old_value
69
+ combined_new_value = new_value.zip redacted_new_value
70
+
121
71
  added = combined_new_value - combined_old_value
122
72
  removed = combined_old_value - combined_new_value
123
73
 
124
74
  lines = DiffLines.new
125
75
 
126
76
  added.each do |pair|
77
+
127
78
  elem = pair.first
128
79
  redacted_elem = pair.last
80
+
129
81
  if elem.is_a?(Hash)
130
82
  using_names = (added+removed).all? { |e| e.first['name'] }
83
+
131
84
  using_ranges = (added+removed).all? { |e| e.first['range'] }
132
85
  if using_names || using_ranges
86
+ #clean up duplicate values
133
87
  if using_names
134
88
  removed_same_name_element = removed.find { |e| e.first['name'] == elem['name'] }
135
89
  elsif using_ranges
@@ -138,8 +92,8 @@ module Bosh::Director
138
92
  removed.delete(removed_same_name_element)
139
93
 
140
94
  if removed_same_name_element
141
- changeset = Changeset.new(removed_same_name_element.first, elem, removed_same_name_element.last, redacted_elem)
142
- diff_lines = changeset.diff(redact, indent+1)
95
+ changeset = Changeset.new(removed_same_name_element.first, elem, @redact, removed_same_name_element.last, redacted_elem)
96
+ diff_lines = changeset.diff(indent+1)
143
97
 
144
98
  unless diff_lines.empty?
145
99
  # write name if elem has been changed
@@ -33,7 +33,7 @@ module Bosh::Director
33
33
  end
34
34
 
35
35
  def diff(other_manifest, redact)
36
- Changeset.new(to_hash, other_manifest.to_hash).diff(redact).order
36
+ Changeset.new(to_hash, other_manifest.to_hash, redact).diff.order
37
37
  end
38
38
 
39
39
  def to_hash
@@ -12,9 +12,7 @@ module Bosh::Director::Models
12
12
  end
13
13
 
14
14
  def package_by_name(package_name)
15
- packages_by_name.fetch(package_name) do
16
- raise "Package name '#{package_name}' not found in release '#{release.name}/#{version}'"
17
- end
15
+ packages_by_name.fetch(package_name)
18
16
  end
19
17
 
20
18
  private
@@ -35,7 +35,7 @@ module Bosh::Director
35
35
  "'#{property}' value (#{result.inspect}) should be less than #{options[:max].inspect}"
36
36
  end
37
37
 
38
- elsif options.has_key?(:default)
38
+ elsif options[:default]
39
39
  result = options[:default]
40
40
 
41
41
  elsif !options[:optional]
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Director
3
- VERSION = '1.3215.3.0'
3
+ VERSION = '1.3215.4.0'
4
4
  end
5
5
  end
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.3215.3.0
4
+ version: 1.3215.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - VMware
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-01 00:00:00.000000000 Z
11
+ date: 2016-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_common
@@ -16,98 +16,98 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3215.3.0
19
+ version: 1.3215.4.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: 1.3215.3.0
26
+ version: 1.3215.4.0
27
27
  - !ruby/object:Gem::Dependency
28
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.3215.3.0
33
+ version: 1.3215.4.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.3215.3.0
40
+ version: 1.3215.4.0
41
41
  - !ruby/object:Gem::Dependency
42
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.3215.3.0
47
+ version: 1.3215.4.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.3215.3.0
54
+ version: 1.3215.4.0
55
55
  - !ruby/object:Gem::Dependency
56
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.3215.3.0
61
+ version: 1.3215.4.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.3215.3.0
68
+ version: 1.3215.4.0
69
69
  - !ruby/object:Gem::Dependency
70
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.3215.3.0
75
+ version: 1.3215.4.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.3215.3.0
82
+ version: 1.3215.4.0
83
83
  - !ruby/object:Gem::Dependency
84
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.3215.3.0
89
+ version: 1.3215.4.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.3215.3.0
96
+ version: 1.3215.4.0
97
97
  - !ruby/object:Gem::Dependency
98
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.3215.3.0
103
+ version: 1.3215.4.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.3215.3.0
110
+ version: 1.3215.4.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: bosh_openstack_cpi
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -681,8 +681,6 @@ files:
681
681
  - db/migrations/director/20160219175840_add_column_teams_to_deployments.rb
682
682
  - db/migrations/director/20160224222508_add_deployment_name_to_task.rb
683
683
  - db/migrations/director/20160225182206_rename_post_start_completed.rb
684
- - db/migrations/director/20160329201256_set_instances_with_nil_serial_to_false.rb
685
- - db/migrations/director/20160331225404_backfill_stemcell_os.rb
686
684
  - db/migrations/dns/20120123234908_initial.rb
687
685
  - lib/bosh/director.rb
688
686
  - lib/bosh/director/agent_client.rb
@@ -1,15 +0,0 @@
1
- require 'json'
2
-
3
- Sequel.migration do
4
- up do
5
- self[:instances].all do |instance|
6
- unless instance[:spec_json].nil?
7
- spec = JSON.parse(instance[:spec_json])
8
- if !spec['update'].nil? && spec['update'].has_key?('serial') && spec['update']['serial'].nil?
9
- spec['update']['serial'] = false
10
- self[:instances].where(id: instance[:id]).update(spec_json: JSON.generate(spec))
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,9 +0,0 @@
1
- Sequel.migration do
2
- up do
3
- self[:stemcells].all do |stemcell|
4
- if stemcell[:operating_system].nil? || stemcell[:operating_system] == ''
5
- self[:stemcells].where(id: stemcell[:id]).update(operating_system: stemcell[:name])
6
- end
7
- end
8
- end
9
- end