bosh-director 1.3215.4.0 → 1.3232.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bosh-director-console +1 -1
  3. data/bin/bosh-director-drain-workers +8 -2
  4. data/bin/bosh-director-worker +34 -53
  5. data/db/migrations/director/20110617211923_add_deployments_release_versions.rb +2 -2
  6. data/db/migrations/director/20120524175805_add_task_type.rb +23 -23
  7. data/db/migrations/director/20130531172604_add_director_attributes.rb +1 -2
  8. data/db/migrations/director/20140116002324_pivot_director_attributes.rb +1 -2
  9. data/db/migrations/director/20160210201838_denormalize_compiled_package_stemcell_id_to_stemcell_name_and_version.rb +7 -9
  10. data/db/migrations/director/20160211174110_add_events.rb +22 -0
  11. data/db/migrations/director/20160324181932_create_delayed_jobs.rb +22 -0
  12. data/db/migrations/director/20160324182211_add_locks.rb +15 -0
  13. data/db/migrations/director/20160329201256_set_instances_with_nil_serial_to_false.rb +15 -0
  14. data/db/migrations/director/20160331225404_backfill_stemcell_os.rb +9 -0
  15. data/db/migrations/director/20160411104407_add_task_started_at.rb +9 -0
  16. data/lib/bosh/director.rb +9 -2
  17. data/lib/bosh/director/agent_client.rb +22 -9
  18. data/lib/bosh/director/api.rb +0 -1
  19. data/lib/bosh/director/api/api_helper.rb +1 -1
  20. data/lib/bosh/director/api/controllers/base_controller.rb +5 -1
  21. data/lib/bosh/director/api/controllers/cloud_configs_controller.rb +18 -2
  22. data/lib/bosh/director/api/controllers/deployments_controller.rb +16 -9
  23. data/lib/bosh/director/api/controllers/events_controller.rb +37 -0
  24. data/lib/bosh/director/api/controllers/locks_controller.rb +7 -11
  25. data/lib/bosh/director/api/controllers/packages_controller.rb +1 -1
  26. data/lib/bosh/director/api/controllers/runtime_configs_controller.rb +18 -2
  27. data/lib/bosh/director/api/controllers/tasks_controller.rb +7 -2
  28. data/lib/bosh/director/api/deployment_lookup.rb +1 -1
  29. data/lib/bosh/director/api/deployment_manager.rb +1 -1
  30. data/lib/bosh/director/api/event_manager.rb +68 -0
  31. data/lib/bosh/director/api/extensions/scoping.rb +2 -2
  32. data/lib/bosh/director/api/extensions/syslog_request_logger.rb +75 -0
  33. data/lib/bosh/director/api/instance_lookup.rb +2 -2
  34. data/lib/bosh/director/api/instance_manager.rb +2 -2
  35. data/lib/bosh/director/api/local_identity_provider.rb +8 -0
  36. data/lib/bosh/director/api/property_manager.rb +6 -5
  37. data/lib/bosh/director/api/release_manager.rb +3 -3
  38. data/lib/bosh/director/api/resource_manager.rb +2 -2
  39. data/lib/bosh/director/api/resurrector_manager.rb +1 -1
  40. data/lib/bosh/director/api/route_configuration.rb +1 -0
  41. data/lib/bosh/director/api/stemcell_manager.rb +5 -5
  42. data/lib/bosh/director/api/task_manager.rb +1 -0
  43. data/lib/bosh/director/api/task_remover.rb +1 -1
  44. data/lib/bosh/director/api/uaa_identity_provider.rb +9 -1
  45. data/lib/bosh/director/api/user/database_user_manager.rb +1 -1
  46. data/lib/bosh/director/app.rb +1 -1
  47. data/lib/bosh/director/arp_flusher.rb +23 -0
  48. data/lib/bosh/director/cloudcheck_helper.rb +4 -3
  49. data/lib/bosh/director/compile_task.rb +6 -6
  50. data/lib/bosh/director/compile_task_generator.rb +6 -6
  51. data/lib/bosh/director/compiled_release_downloader.rb +4 -4
  52. data/lib/bosh/director/config.rb +29 -87
  53. data/lib/bosh/director/deployment_deleter.rb +6 -6
  54. data/lib/bosh/director/deployment_plan/agent_state_migrator.rb +2 -2
  55. data/lib/bosh/director/deployment_plan/assembler.rb +1 -1
  56. data/lib/bosh/director/deployment_plan/compilation_instance_pool.rb +26 -1
  57. data/lib/bosh/director/deployment_plan/deployment_repo.rb +1 -1
  58. data/lib/bosh/director/deployment_plan/disk_type.rb +1 -1
  59. data/lib/bosh/director/deployment_plan/instance.rb +2 -2
  60. data/lib/bosh/director/deployment_plan/instance_plan.rb +2 -2
  61. data/lib/bosh/director/deployment_plan/instance_spec.rb +2 -0
  62. data/lib/bosh/director/deployment_plan/ip_provider/ip_provider.rb +7 -3
  63. data/lib/bosh/director/deployment_plan/job.rb +12 -10
  64. data/lib/bosh/director/deployment_plan/job_spec_parser.rb +4 -4
  65. data/lib/bosh/director/deployment_plan/links/link.rb +1 -0
  66. data/lib/bosh/director/deployment_plan/links/link_path.rb +18 -19
  67. data/lib/bosh/director/deployment_plan/links/links_resolver.rb +2 -0
  68. data/lib/bosh/director/deployment_plan/links/template_link.rb +1 -1
  69. data/lib/bosh/director/deployment_plan/manual_network.rb +1 -1
  70. data/lib/bosh/director/deployment_plan/manual_network_subnet.rb +6 -6
  71. data/lib/bosh/director/deployment_plan/planner.rb +3 -3
  72. data/lib/bosh/director/deployment_plan/planner_factory.rb +38 -40
  73. data/lib/bosh/director/deployment_plan/release_version.rb +5 -5
  74. data/lib/bosh/director/deployment_plan/runtime_manifest_parser.rb +22 -18
  75. data/lib/bosh/director/deployment_plan/steps/package_compile_step.rb +14 -16
  76. data/lib/bosh/director/deployment_plan/steps/update_step.rb +5 -5
  77. data/lib/bosh/director/deployment_plan/template.rb +61 -1
  78. data/lib/bosh/director/deployment_plan/update_config.rb +1 -1
  79. data/lib/bosh/director/disk_manager.rb +49 -40
  80. data/lib/bosh/director/dns/canonicalizer.rb +2 -2
  81. data/lib/bosh/director/dns/dns_manager.rb +2 -2
  82. data/lib/bosh/director/dns/powerdns.rb +2 -2
  83. data/lib/bosh/director/download_helper.rb +5 -5
  84. data/lib/bosh/director/errand/job_manager.rb +5 -6
  85. data/lib/bosh/director/errand/result.rb +1 -1
  86. data/lib/bosh/director/errand/runner.rb +2 -3
  87. data/lib/bosh/director/event_log.rb +1 -7
  88. data/lib/bosh/director/ext.rb +0 -6
  89. data/lib/bosh/director/instance_deleter.rb +23 -2
  90. data/lib/bosh/director/instance_updater.rb +62 -6
  91. data/lib/bosh/director/instance_updater/state_applier.rb +2 -2
  92. data/lib/bosh/director/job_queue.rb +4 -2
  93. data/lib/bosh/director/job_runner.rb +3 -8
  94. data/lib/bosh/director/jobs/backup.rb +1 -1
  95. data/lib/bosh/director/jobs/base_job.rb +10 -6
  96. data/lib/bosh/director/jobs/cleanup_artifacts.rb +6 -6
  97. data/lib/bosh/director/jobs/db_job.rb +87 -0
  98. data/lib/bosh/director/jobs/delete_deployment.rb +23 -2
  99. data/lib/bosh/director/jobs/delete_deployment_snapshots.rb +1 -1
  100. data/lib/bosh/director/jobs/delete_orphan_disks.rb +2 -2
  101. data/lib/bosh/director/jobs/delete_release.rb +2 -2
  102. data/lib/bosh/director/jobs/delete_stemcell.rb +1 -1
  103. data/lib/bosh/director/jobs/export_release.rb +4 -2
  104. data/lib/bosh/director/jobs/fetch_logs.rb +1 -1
  105. data/lib/bosh/director/jobs/helpers/blob_deleter.rb +1 -1
  106. data/lib/bosh/director/jobs/helpers/name_version_release_deleter.rb +3 -3
  107. data/lib/bosh/director/jobs/helpers/release_version_deleter.rb +1 -1
  108. data/lib/bosh/director/jobs/helpers/stemcell_deleter.rb +2 -12
  109. data/lib/bosh/director/jobs/release/release_job.rb +13 -28
  110. data/lib/bosh/director/jobs/run_errand.rb +6 -6
  111. data/lib/bosh/director/jobs/scheduled_backup.rb +1 -1
  112. data/lib/bosh/director/jobs/scheduled_events_cleanup.rb +31 -0
  113. data/lib/bosh/director/jobs/scheduled_orphan_cleanup.rb +1 -1
  114. data/lib/bosh/director/jobs/snapshot_deployment.rb +4 -1
  115. data/lib/bosh/director/jobs/ssh.rb +36 -14
  116. data/lib/bosh/director/jobs/update_deployment.rb +28 -6
  117. data/lib/bosh/director/jobs/update_release.rb +31 -41
  118. data/lib/bosh/director/jobs/update_stemcell.rb +4 -4
  119. data/lib/bosh/director/jobs/vm_state.rb +1 -2
  120. data/lib/bosh/director/lock.rb +30 -55
  121. data/lib/bosh/director/logs_fetcher.rb +2 -3
  122. data/lib/bosh/director/manifest/changeset.rb +88 -42
  123. data/lib/bosh/director/manifest/manifest.rb +1 -1
  124. data/lib/bosh/director/models.rb +3 -0
  125. data/lib/bosh/director/models/event.rb +18 -0
  126. data/lib/bosh/director/models/lock.rb +9 -0
  127. data/lib/bosh/director/models/release_version.rb +3 -1
  128. data/lib/bosh/director/problem_handlers/base.rb +3 -3
  129. data/lib/bosh/director/problem_handlers/inactive_disk.rb +4 -4
  130. data/lib/bosh/director/problem_handlers/missing_disk.rb +3 -3
  131. data/lib/bosh/director/problem_handlers/missing_vm.rb +1 -1
  132. data/lib/bosh/director/problem_handlers/mount_info_mismatch.rb +3 -3
  133. data/lib/bosh/director/problem_handlers/unresponsive_agent.rb +2 -2
  134. data/lib/bosh/director/problem_resolver.rb +5 -5
  135. data/lib/bosh/director/problem_scanner/problem_register.rb +1 -1
  136. data/lib/bosh/director/problem_scanner/scanner.rb +3 -2
  137. data/lib/bosh/director/scheduler.rb +3 -3
  138. data/lib/bosh/director/sequel.rb +1 -3
  139. data/lib/bosh/director/stopper.rb +1 -1
  140. data/lib/bosh/director/validation_helper.rb +60 -37
  141. data/lib/bosh/director/version.rb +1 -1
  142. data/lib/bosh/director/vm_creator.rb +39 -7
  143. data/lib/bosh/director/vm_deleter.rb +29 -2
  144. data/lib/bosh/director/vm_metadata_updater.rb +4 -0
  145. data/lib/bosh/director/worker.rb +52 -0
  146. metadata +47 -61
  147. data/lib/bosh/director/manifest/redactor.rb +0 -44
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: faf6283449ed9e2f917191f99c686b67dca177af
4
- data.tar.gz: 53ccfd5747076bf4105787ab11568471ddfbf5cc
3
+ metadata.gz: 3be5b66fb713f0101c8fdd159b0bc3032a717f1d
4
+ data.tar.gz: 0429e247b484b8ef9bbefb29282112be66ad596c
5
5
  SHA512:
6
- metadata.gz: 431bd32c3d55f3f581ea2c068ee69d20c86e49de4645bd758a331fd43e7fc15cd207e854569f2e883e2f82f9cf5e06edfe839141afaa8c1c82ab0b40cc380dc9
7
- data.tar.gz: 3ccbba5d34e8b4ba95508c91c13cb741ba241a7aeb25c9faaaef998d70a353182c0ae6fff743c6bb20008d7b3593e8ae37b61e4cd19541aa6a3424342f8f2b0b
6
+ metadata.gz: d6cbcbff8db5ec4b94178b51753fd51c024064d336d92c65c661fa7cdc5ff3c7a8b52bf9d07301fbccc30ba5c017984e48f6b20ccdbd9b846b8e530f8555ea63
7
+ data.tar.gz: 7f5c5e5f696bb7d1a8bdfab55631dd198ddcd3d8c7db624722aa4428500319a0857b424301413587ecc0a5ae47d3a99418739995386942a8ae5b4c8255fc7456
@@ -66,7 +66,7 @@ def config
66
66
  BD::Config
67
67
  end
68
68
 
69
- [:redis, :blobstore, :nats, :cloud].each do |helper|
69
+ [:blobstore, :nats, :cloud].each do |helper|
70
70
  self.class.send(:define_method, helper) do
71
71
  config.send(helper)
72
72
  end
@@ -22,16 +22,22 @@ config = Bosh::Director::Config.load_file(config_file)
22
22
 
23
23
  Bosh::Director::App.new(config)
24
24
 
25
+ Delayed::Worker.logger = config.worker_logger
25
26
  logger = Bosh::Director::Config.logger
26
27
 
28
+ Delayed::Worker.backend = :sequel
29
+
27
30
  loop do
28
31
  logger.info('Checking for any workers that are still processing..')
29
32
 
30
- worker = Resque::Worker.all.find(&:working?)
31
- if worker.nil?
33
+ locked_jobs = Delayed::Job.exclude(:locked_by => nil)
34
+
35
+ if locked_jobs.count == 0
32
36
  active_worker = 0
33
37
  logger.info('All workers are idle')
34
38
  break
39
+ else
40
+ worker = locked_jobs.first[:locked_by]
35
41
  end
36
42
 
37
43
  break if report
@@ -2,74 +2,55 @@
2
2
 
3
3
  require 'erb'
4
4
  require 'bosh/director'
5
- require 'resque/failure/backtrace'
6
5
 
7
6
  config_file = nil
8
7
  index = nil
9
8
  erb = false
10
9
 
11
- opts = OptionParser.new do |op|
12
- op.on('-c', '--config [ARG]', 'Configuration File') do |opt|
13
- config_file = opt
14
- end
10
+ begin
11
+ opts = OptionParser.new do |op|
12
+ op.on('-c', '--config [ARG]', 'Configuration File') do |opt|
13
+ config_file = opt
14
+ end
15
15
 
16
- op.on('-i', '--index [ARG]', Integer, 'Worker Index') do |opt|
17
- index = opt
18
- end
16
+ op.on('-i', '--index [ARG]', Integer, 'Worker Index') do |opt|
17
+ index = opt
18
+ end
19
19
 
20
- op.on('-e', '--[no-]erb', 'Treat Configuration as ERB Template') do |opt|
21
- erb = opt
20
+ op.on('-e', '--[no-]erb', 'Treat Configuration as ERB Template') do |opt|
21
+ erb = opt
22
+ end
22
23
  end
23
- end
24
24
 
25
- opts.parse!(ARGV.dup)
25
+ opts.parse!(ARGV.dup)
26
26
 
27
- config_file ||= ::File.expand_path('../../config/bosh-director.yml', __FILE__)
28
- config = nil
27
+ config_file ||= ::File.expand_path('../../config/bosh-director.yml', __FILE__)
28
+ config = nil
29
29
 
30
30
  # Is this code even used anymore?
31
- if erb
32
- class ConfigBindingHelper
33
- attr_reader :index
31
+ if erb
32
+ class ConfigBindingHelper
33
+ attr_reader :index
34
34
 
35
- def initialize(index)
36
- @index = index
37
- end
35
+ def initialize(index)
36
+ @index = index
37
+ end
38
38
 
39
- def get_binding
40
- binding
39
+ def get_binding
40
+ binding
41
+ end
41
42
  end
42
- end
43
-
44
- template = ERB.new(File.read(config_file), 0, '%<>-')
45
- contents = template.result(ConfigBindingHelper.new(index).get_binding)
46
- config_hash = Psych.load(contents)
47
- config = Bosh::Director::Config.load_hash(config_hash)
48
- else
49
- config = Bosh::Director::Config.load_file(config_file)
50
- end
51
-
52
- Bosh::Director::App.new(config)
53
-
54
- Resque.logger = config.resque_logger
55
43
 
56
- worker = nil
57
- queues = (ENV['QUEUES'] || ENV['QUEUE']).to_s.split(',')
58
-
59
- begin
60
- worker = Resque::Worker.new(*queues)
61
- worker.term_child = true
62
- rescue Resque::NoQueueError
63
- abort 'set QUEUE env var, e.g. $ QUEUE=critical,high rake resque:work'
64
- end
44
+ template = ERB.new(File.read(config_file), 0, '%<>-')
45
+ contents = template.result(ConfigBindingHelper.new(index).get_binding)
46
+ config_hash = Psych.load(contents)
47
+ config = Bosh::Director::Config.load_hash(config_hash)
48
+ else
49
+ config = Bosh::Director::Config.load_file(config_file)
50
+ end
51
+ config.db
65
52
 
66
- Resque.after_fork do
67
- EM.error_handler { |e| puts "Error raised during event loop: #{e.inspect}, backtrace: #{e.backtrace}" }
68
- Thread.new { EM.run }
53
+ worker = Bosh::Director::Worker.new(config, index)
54
+ worker.prep
55
+ worker.start
69
56
  end
70
-
71
- Resque::Failure.backend = Resque::Failure::Backtrace
72
-
73
- worker.log "Starting worker #{worker}"
74
-
75
- worker.work(ENV['INTERVAL'] || 5) # interval, will block
@@ -13,13 +13,13 @@ Sequel.migration do
13
13
  manifest = Psych.load(deployment[:manifest])
14
14
 
15
15
  unless manifest.is_a?(Hash) && manifest["release"] && manifest["release"]["version"]
16
- raise "Invalid manifest for `#{deployment[:name]}', no version data"
16
+ raise "Invalid manifest for '#{deployment[:name]}', no version data"
17
17
  end
18
18
 
19
19
  release_version = self[:release_versions].filter(:release_id => deployment[:release_id], :version => manifest["release"]["version"].to_s).first
20
20
 
21
21
  if release_version.nil?
22
- raise "Release version #{manifest["release"]["version"]} referenced by `#{deployment[:name]}' manifest not found"
22
+ raise "Release version #{manifest["release"]["version"]} referenced by '#{deployment[:name]}' manifest not found"
23
23
  end
24
24
 
25
25
  self[:deployments_release_versions].insert(:release_version_id => release_version[:id], :deployment_id => deployment[:id])
@@ -7,28 +7,28 @@ Sequel.migration do
7
7
  add_index :description
8
8
  end
9
9
 
10
- self[:tasks].filter(:description => "create deployment").
11
- update(:type => "update_deployment")
12
- self[:tasks].filter(:description.like("delete deployment:%")).
13
- update(:type => "delete_deployment")
14
- self[:tasks].filter(:description => "fetch logs").
15
- update(:type => "fetch_logs")
16
- self[:tasks].filter(:description.like("ssh:%")).
17
- update(:type => "ssh")
18
- self[:tasks].filter(:description => "scan cloud").
19
- update(:type => "cck_scan")
20
- self[:tasks].filter(:description => "apply resolutions").
21
- update(:type => "cck_apply")
22
- self[:tasks].filter(:description => "retrieve vm-stats").
23
- update(:type => "vms")
24
- self[:tasks].filter(:description => "create release").
25
- update(:type => "update_release")
26
- self[:tasks].filter(:description.like("delete release:%")).
27
- update(:type => "delete_release")
28
- self[:tasks].filter(:description => "create stemcell").
29
- update(:type => "update_stemcell")
30
- self[:tasks].filter(:description.like("delete stemcell:%")).
31
- update(:type => "delete_stemcell")
10
+ self[:tasks].filter(description: 'create deployment').
11
+ update(:type => 'update_deployment')
12
+ self[:tasks].grep(:description, 'delete deployment:%').
13
+ update(:type => 'delete_deployment')
14
+ self[:tasks].filter(:description => 'fetch logs').
15
+ update(:type => 'fetch_logs')
16
+ self[:tasks].grep(:description, 'ssh:%').
17
+ update(:type => 'ssh')
18
+ self[:tasks].filter(:description => 'scan cloud').
19
+ update(:type => 'cck_scan')
20
+ self[:tasks].filter(:description => 'apply resolutions').
21
+ update(:type => 'cck_apply')
22
+ self[:tasks].filter(:description => 'retrieve vm-stats').
23
+ update(:type => 'vms')
24
+ self[:tasks].filter(:description => 'create release').
25
+ update(:type => 'update_release')
26
+ self[:tasks].grep(:description, 'delete release:%').
27
+ update(:type => 'delete_release')
28
+ self[:tasks].filter(:description => 'create stemcell').
29
+ update(:type => 'update_stemcell')
30
+ self[:tasks].grep(:description, 'delete stemcell:%').
31
+ update(:type => 'delete_stemcell')
32
32
 
33
33
  alter_table :tasks do
34
34
  set_column_allow_null :type, false
@@ -41,4 +41,4 @@ Sequel.migration do
41
41
  drop_index :description
42
42
  end
43
43
  end
44
- end
44
+ end
@@ -1,8 +1,7 @@
1
1
  Sequel.migration do
2
2
  up do
3
3
  create_table(:director_attributes) do
4
- primary_key :uuid
5
- String :uuid, unique: true, null: false
4
+ String :uuid, unique: true, null: false, primary_key: true
6
5
  end
7
6
  end
8
7
 
@@ -3,8 +3,7 @@ Sequel.migration do
3
3
  rename_table(:director_attributes, :old_director_attributes)
4
4
 
5
5
  create_table(:director_attributes) do
6
- primary_key :name
7
- String :name, unique: true, null: false
6
+ String :name, unique: true, null: false, primary_key: true
8
7
  String :value
9
8
  end
10
9
 
@@ -23,25 +23,23 @@ 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
-
35
26
  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
36
30
  alter_table(:compiled_packages) do
37
31
  drop_index(nil, name: build_index)
38
32
  end
39
33
  elsif [:postgres].include?(adapter_scheme)
34
+ build_index = build_indexes.empty? ? 'compiled_packages_package_id_stemcell_id_build_key' : build_indexes.first.first
40
35
  alter_table(:compiled_packages) do
41
36
  drop_constraint(build_index)
42
37
  end
43
38
  end
44
39
 
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
+
45
43
  alter_table(:compiled_packages) do
46
44
  drop_constraint(stemcell_foreign_key_name, :type => :foreign_key)
47
45
  add_index [:package_id, :stemcell_os, :stemcell_version, :build], unique: true, name: 'package_stemcell_build_idx'
@@ -0,0 +1,22 @@
1
+ Sequel.migration do
2
+ up do
3
+ create_table :events do
4
+ primary_key :id
5
+ Integer :parent_id
6
+ String :user, :null => false
7
+ Time :timestamp, :index => true, :null => false
8
+ String :action, :null => false
9
+ String :object_type, :null => false
10
+ String :object_name
11
+ String :error, :text => true
12
+ String :task
13
+ String :deployment
14
+ String :instance
15
+ String :context_json, :text => true
16
+ end
17
+ end
18
+
19
+ down do
20
+ drop_table :events
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ Sequel.migration do
2
+ up do
3
+ create_table :delayed_jobs, force: true do |table|
4
+ primary_key :id
5
+ table.Integer :priority, default: 0, null: false # Allows some jobs to jump to the front of the queue
6
+ table.Integer :attempts, default: 0, null: false # Provides for retries, but still fail eventually.
7
+ table.String :handler, :text => true, null: false # YAML-encoded string of the object that will do work
8
+ table.String :last_error, :text => true # reason for last failure (See Note below)
9
+ table.Time :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
10
+ table.Time :locked_at # Set when a client is working on this object
11
+ table.Time :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
12
+ table.String :locked_by # Who is working on this object (if locked)
13
+ table.String :queue # The name of the queue this job is in
14
+ end
15
+
16
+ add_index :delayed_jobs, [:priority, :run_at], name: "delayed_jobs_priority"
17
+ end
18
+
19
+ down do
20
+ drop_table :delayed_jobs
21
+ end
22
+ end
@@ -0,0 +1,15 @@
1
+ Sequel.migration do
2
+ up do
3
+ create_table :locks do
4
+ primary_key :id
5
+ Time :expired_at, :null => false
6
+ String :name, :unique => true, :null => false
7
+ String :uid, :unique => true, :null => false
8
+ index :name, :unique => true
9
+ end
10
+ end
11
+
12
+ down do
13
+ drop_table :locks
14
+ end
15
+ end
@@ -0,0 +1,15 @@
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
@@ -0,0 +1,9 @@
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
@@ -0,0 +1,9 @@
1
+ # Copyright (c) 2009-2012 VMware, Inc.
2
+
3
+ Sequel.migration do
4
+ change do
5
+ alter_table(:tasks) do
6
+ add_column(:started_at, Time)
7
+ end
8
+ end
9
+ end
@@ -28,13 +28,14 @@ require 'bcrypt'
28
28
  require 'blobstore_client'
29
29
  require 'eventmachine'
30
30
  require 'netaddr'
31
- require 'resque'
31
+ require 'delayed_job'
32
32
  require 'sequel'
33
33
  require 'sinatra/base'
34
34
  require 'securerandom'
35
35
  require 'yajl'
36
36
  require 'nats/client'
37
37
  require 'securerandom'
38
+ require 'delayed_job_sequel'
38
39
 
39
40
  require 'common/thread_formatter'
40
41
  require 'bosh/core/encryption_handler'
@@ -65,6 +66,7 @@ require 'bosh/director/package_dependencies_manager'
65
66
  require 'bosh/director/job_renderer'
66
67
  require 'bosh/director/cycle_helper'
67
68
  require 'bosh/director/encryption_helper'
69
+ require 'bosh/director/worker'
68
70
  require 'bosh/director/password_helper'
69
71
  require 'bosh/director/vm_creator'
70
72
  require 'bosh/director/vm_recreator'
@@ -98,10 +100,10 @@ require 'bosh/director/deployment_deleter'
98
100
  require 'bosh/director/permission_authorizer'
99
101
  require 'bosh/director/transactor'
100
102
  require 'bosh/director/sequel'
103
+ require 'bosh/director/arp_flusher'
101
104
  require 'common/thread_pool'
102
105
 
103
106
  require 'bosh/director/manifest/manifest'
104
- require 'bosh/director/manifest/redactor'
105
107
  require 'bosh/director/manifest/changeset'
106
108
  require 'bosh/director/manifest/diff_lines'
107
109
 
@@ -121,6 +123,7 @@ require 'bosh/director/jobs/base_job'
121
123
  require 'bosh/director/jobs/backup'
122
124
  require 'bosh/director/jobs/scheduled_backup'
123
125
  require 'bosh/director/jobs/scheduled_orphan_cleanup'
126
+ require 'bosh/director/jobs/scheduled_events_cleanup'
124
127
  require 'bosh/director/jobs/create_snapshot'
125
128
  require 'bosh/director/jobs/snapshot_deployment'
126
129
  require 'bosh/director/jobs/snapshot_deployments'
@@ -146,6 +149,7 @@ require 'bosh/director/jobs/release/release_job'
146
149
  require 'bosh/director/jobs/ssh'
147
150
  require 'bosh/director/jobs/attach_disk'
148
151
  require 'bosh/director/jobs/helpers'
152
+ require 'bosh/director/jobs/db_job'
149
153
 
150
154
  require 'bosh/director/models/helpers/model_helper'
151
155
 
@@ -154,6 +158,7 @@ require 'bosh/director/blobstores'
154
158
  require 'bosh/director/api/director_uuid_provider'
155
159
  require 'bosh/director/api/local_identity_provider'
156
160
  require 'bosh/director/api/uaa_identity_provider'
161
+ require 'bosh/director/api/event_manager'
157
162
  require 'bosh/director/app'
158
163
 
159
164
  module Bosh::Director
@@ -162,6 +167,7 @@ end
162
167
 
163
168
  require 'bosh/director/thread_pool'
164
169
  require 'bosh/director/api/extensions/scoping'
170
+ require 'bosh/director/api/extensions/syslog_request_logger'
165
171
  require 'bosh/director/api/controllers/backups_controller'
166
172
  require 'bosh/director/api/controllers/cleanup_controller'
167
173
  require 'bosh/director/api/controllers/deployments_controller'
@@ -179,4 +185,5 @@ require 'bosh/director/api/controllers/cloud_configs_controller'
179
185
  require 'bosh/director/api/controllers/runtime_configs_controller'
180
186
  require 'bosh/director/api/controllers/locks_controller'
181
187
  require 'bosh/director/api/controllers/restore_controller'
188
+ require 'bosh/director/api/controllers/events_controller'
182
189
  require 'bosh/director/api/route_configuration'