bosh-director 1.3215.4.0 → 1.3232.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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'