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.
- checksums.yaml +4 -4
- data/bin/bosh-director-console +1 -1
- data/bin/bosh-director-drain-workers +8 -2
- data/bin/bosh-director-worker +34 -53
- data/db/migrations/director/20110617211923_add_deployments_release_versions.rb +2 -2
- data/db/migrations/director/20120524175805_add_task_type.rb +23 -23
- data/db/migrations/director/20130531172604_add_director_attributes.rb +1 -2
- data/db/migrations/director/20140116002324_pivot_director_attributes.rb +1 -2
- data/db/migrations/director/20160210201838_denormalize_compiled_package_stemcell_id_to_stemcell_name_and_version.rb +7 -9
- data/db/migrations/director/20160211174110_add_events.rb +22 -0
- data/db/migrations/director/20160324181932_create_delayed_jobs.rb +22 -0
- data/db/migrations/director/20160324182211_add_locks.rb +15 -0
- data/db/migrations/director/20160329201256_set_instances_with_nil_serial_to_false.rb +15 -0
- data/db/migrations/director/20160331225404_backfill_stemcell_os.rb +9 -0
- data/db/migrations/director/20160411104407_add_task_started_at.rb +9 -0
- data/lib/bosh/director.rb +9 -2
- data/lib/bosh/director/agent_client.rb +22 -9
- data/lib/bosh/director/api.rb +0 -1
- data/lib/bosh/director/api/api_helper.rb +1 -1
- data/lib/bosh/director/api/controllers/base_controller.rb +5 -1
- data/lib/bosh/director/api/controllers/cloud_configs_controller.rb +18 -2
- data/lib/bosh/director/api/controllers/deployments_controller.rb +16 -9
- data/lib/bosh/director/api/controllers/events_controller.rb +37 -0
- data/lib/bosh/director/api/controllers/locks_controller.rb +7 -11
- data/lib/bosh/director/api/controllers/packages_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/runtime_configs_controller.rb +18 -2
- data/lib/bosh/director/api/controllers/tasks_controller.rb +7 -2
- data/lib/bosh/director/api/deployment_lookup.rb +1 -1
- data/lib/bosh/director/api/deployment_manager.rb +1 -1
- data/lib/bosh/director/api/event_manager.rb +68 -0
- data/lib/bosh/director/api/extensions/scoping.rb +2 -2
- data/lib/bosh/director/api/extensions/syslog_request_logger.rb +75 -0
- data/lib/bosh/director/api/instance_lookup.rb +2 -2
- data/lib/bosh/director/api/instance_manager.rb +2 -2
- data/lib/bosh/director/api/local_identity_provider.rb +8 -0
- data/lib/bosh/director/api/property_manager.rb +6 -5
- data/lib/bosh/director/api/release_manager.rb +3 -3
- data/lib/bosh/director/api/resource_manager.rb +2 -2
- data/lib/bosh/director/api/resurrector_manager.rb +1 -1
- data/lib/bosh/director/api/route_configuration.rb +1 -0
- data/lib/bosh/director/api/stemcell_manager.rb +5 -5
- data/lib/bosh/director/api/task_manager.rb +1 -0
- data/lib/bosh/director/api/task_remover.rb +1 -1
- data/lib/bosh/director/api/uaa_identity_provider.rb +9 -1
- data/lib/bosh/director/api/user/database_user_manager.rb +1 -1
- data/lib/bosh/director/app.rb +1 -1
- data/lib/bosh/director/arp_flusher.rb +23 -0
- data/lib/bosh/director/cloudcheck_helper.rb +4 -3
- data/lib/bosh/director/compile_task.rb +6 -6
- data/lib/bosh/director/compile_task_generator.rb +6 -6
- data/lib/bosh/director/compiled_release_downloader.rb +4 -4
- data/lib/bosh/director/config.rb +29 -87
- data/lib/bosh/director/deployment_deleter.rb +6 -6
- data/lib/bosh/director/deployment_plan/agent_state_migrator.rb +2 -2
- data/lib/bosh/director/deployment_plan/assembler.rb +1 -1
- data/lib/bosh/director/deployment_plan/compilation_instance_pool.rb +26 -1
- data/lib/bosh/director/deployment_plan/deployment_repo.rb +1 -1
- data/lib/bosh/director/deployment_plan/disk_type.rb +1 -1
- data/lib/bosh/director/deployment_plan/instance.rb +2 -2
- data/lib/bosh/director/deployment_plan/instance_plan.rb +2 -2
- data/lib/bosh/director/deployment_plan/instance_spec.rb +2 -0
- data/lib/bosh/director/deployment_plan/ip_provider/ip_provider.rb +7 -3
- data/lib/bosh/director/deployment_plan/job.rb +12 -10
- data/lib/bosh/director/deployment_plan/job_spec_parser.rb +4 -4
- data/lib/bosh/director/deployment_plan/links/link.rb +1 -0
- data/lib/bosh/director/deployment_plan/links/link_path.rb +18 -19
- data/lib/bosh/director/deployment_plan/links/links_resolver.rb +2 -0
- data/lib/bosh/director/deployment_plan/links/template_link.rb +1 -1
- data/lib/bosh/director/deployment_plan/manual_network.rb +1 -1
- data/lib/bosh/director/deployment_plan/manual_network_subnet.rb +6 -6
- data/lib/bosh/director/deployment_plan/planner.rb +3 -3
- data/lib/bosh/director/deployment_plan/planner_factory.rb +38 -40
- data/lib/bosh/director/deployment_plan/release_version.rb +5 -5
- data/lib/bosh/director/deployment_plan/runtime_manifest_parser.rb +22 -18
- data/lib/bosh/director/deployment_plan/steps/package_compile_step.rb +14 -16
- data/lib/bosh/director/deployment_plan/steps/update_step.rb +5 -5
- data/lib/bosh/director/deployment_plan/template.rb +61 -1
- data/lib/bosh/director/deployment_plan/update_config.rb +1 -1
- data/lib/bosh/director/disk_manager.rb +49 -40
- data/lib/bosh/director/dns/canonicalizer.rb +2 -2
- data/lib/bosh/director/dns/dns_manager.rb +2 -2
- data/lib/bosh/director/dns/powerdns.rb +2 -2
- data/lib/bosh/director/download_helper.rb +5 -5
- data/lib/bosh/director/errand/job_manager.rb +5 -6
- data/lib/bosh/director/errand/result.rb +1 -1
- data/lib/bosh/director/errand/runner.rb +2 -3
- data/lib/bosh/director/event_log.rb +1 -7
- data/lib/bosh/director/ext.rb +0 -6
- data/lib/bosh/director/instance_deleter.rb +23 -2
- data/lib/bosh/director/instance_updater.rb +62 -6
- data/lib/bosh/director/instance_updater/state_applier.rb +2 -2
- data/lib/bosh/director/job_queue.rb +4 -2
- data/lib/bosh/director/job_runner.rb +3 -8
- data/lib/bosh/director/jobs/backup.rb +1 -1
- data/lib/bosh/director/jobs/base_job.rb +10 -6
- data/lib/bosh/director/jobs/cleanup_artifacts.rb +6 -6
- data/lib/bosh/director/jobs/db_job.rb +87 -0
- data/lib/bosh/director/jobs/delete_deployment.rb +23 -2
- data/lib/bosh/director/jobs/delete_deployment_snapshots.rb +1 -1
- data/lib/bosh/director/jobs/delete_orphan_disks.rb +2 -2
- data/lib/bosh/director/jobs/delete_release.rb +2 -2
- data/lib/bosh/director/jobs/delete_stemcell.rb +1 -1
- data/lib/bosh/director/jobs/export_release.rb +4 -2
- data/lib/bosh/director/jobs/fetch_logs.rb +1 -1
- data/lib/bosh/director/jobs/helpers/blob_deleter.rb +1 -1
- data/lib/bosh/director/jobs/helpers/name_version_release_deleter.rb +3 -3
- data/lib/bosh/director/jobs/helpers/release_version_deleter.rb +1 -1
- data/lib/bosh/director/jobs/helpers/stemcell_deleter.rb +2 -12
- data/lib/bosh/director/jobs/release/release_job.rb +13 -28
- data/lib/bosh/director/jobs/run_errand.rb +6 -6
- data/lib/bosh/director/jobs/scheduled_backup.rb +1 -1
- data/lib/bosh/director/jobs/scheduled_events_cleanup.rb +31 -0
- data/lib/bosh/director/jobs/scheduled_orphan_cleanup.rb +1 -1
- data/lib/bosh/director/jobs/snapshot_deployment.rb +4 -1
- data/lib/bosh/director/jobs/ssh.rb +36 -14
- data/lib/bosh/director/jobs/update_deployment.rb +28 -6
- data/lib/bosh/director/jobs/update_release.rb +31 -41
- data/lib/bosh/director/jobs/update_stemcell.rb +4 -4
- data/lib/bosh/director/jobs/vm_state.rb +1 -2
- data/lib/bosh/director/lock.rb +30 -55
- data/lib/bosh/director/logs_fetcher.rb +2 -3
- data/lib/bosh/director/manifest/changeset.rb +88 -42
- data/lib/bosh/director/manifest/manifest.rb +1 -1
- data/lib/bosh/director/models.rb +3 -0
- data/lib/bosh/director/models/event.rb +18 -0
- data/lib/bosh/director/models/lock.rb +9 -0
- data/lib/bosh/director/models/release_version.rb +3 -1
- data/lib/bosh/director/problem_handlers/base.rb +3 -3
- data/lib/bosh/director/problem_handlers/inactive_disk.rb +4 -4
- data/lib/bosh/director/problem_handlers/missing_disk.rb +3 -3
- data/lib/bosh/director/problem_handlers/missing_vm.rb +1 -1
- data/lib/bosh/director/problem_handlers/mount_info_mismatch.rb +3 -3
- data/lib/bosh/director/problem_handlers/unresponsive_agent.rb +2 -2
- data/lib/bosh/director/problem_resolver.rb +5 -5
- data/lib/bosh/director/problem_scanner/problem_register.rb +1 -1
- data/lib/bosh/director/problem_scanner/scanner.rb +3 -2
- data/lib/bosh/director/scheduler.rb +3 -3
- data/lib/bosh/director/sequel.rb +1 -3
- data/lib/bosh/director/stopper.rb +1 -1
- data/lib/bosh/director/validation_helper.rb +60 -37
- data/lib/bosh/director/version.rb +1 -1
- data/lib/bosh/director/vm_creator.rb +39 -7
- data/lib/bosh/director/vm_deleter.rb +29 -2
- data/lib/bosh/director/vm_metadata_updater.rb +4 -0
- data/lib/bosh/director/worker.rb +52 -0
- metadata +47 -61
- data/lib/bosh/director/manifest/redactor.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3be5b66fb713f0101c8fdd159b0bc3032a717f1d
|
4
|
+
data.tar.gz: 0429e247b484b8ef9bbefb29282112be66ad596c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6cbcbff8db5ec4b94178b51753fd51c024064d336d92c65c661fa7cdc5ff3c7a8b52bf9d07301fbccc30ba5c017984e48f6b20ccdbd9b846b8e530f8555ea63
|
7
|
+
data.tar.gz: 7f5c5e5f696bb7d1a8bdfab55631dd198ddcd3d8c7db624722aa4428500319a0857b424301413587ecc0a5ae47d3a99418739995386942a8ae5b4c8255fc7456
|
data/bin/bosh-director-console
CHANGED
@@ -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
|
-
|
31
|
-
|
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
|
data/bin/bosh-director-worker
CHANGED
@@ -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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
16
|
+
op.on('-i', '--index [ARG]', Integer, 'Worker Index') do |opt|
|
17
|
+
index = opt
|
18
|
+
end
|
19
19
|
|
20
|
-
|
21
|
-
|
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
|
-
|
33
|
-
|
31
|
+
if erb
|
32
|
+
class ConfigBindingHelper
|
33
|
+
attr_reader :index
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
def initialize(index)
|
36
|
+
@index = index
|
37
|
+
end
|
38
38
|
|
39
|
-
|
40
|
-
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
-
|
67
|
-
|
68
|
-
|
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
|
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
|
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(:
|
11
|
-
update(:type =>
|
12
|
-
self[:tasks].
|
13
|
-
update(:type =>
|
14
|
-
self[:tasks].filter(:description =>
|
15
|
-
update(:type =>
|
16
|
-
self[:tasks].
|
17
|
-
update(:type =>
|
18
|
-
self[:tasks].filter(:description =>
|
19
|
-
update(:type =>
|
20
|
-
self[:tasks].filter(:description =>
|
21
|
-
update(:type =>
|
22
|
-
self[:tasks].filter(:description =>
|
23
|
-
update(:type =>
|
24
|
-
self[:tasks].filter(:description =>
|
25
|
-
update(:type =>
|
26
|
-
self[:tasks].
|
27
|
-
update(:type =>
|
28
|
-
self[:tasks].filter(:description =>
|
29
|
-
update(:type =>
|
30
|
-
self[:tasks].
|
31
|
-
update(:type =>
|
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
|
@@ -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
|
-
|
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
|
data/lib/bosh/director.rb
CHANGED
@@ -28,13 +28,14 @@ require 'bcrypt'
|
|
28
28
|
require 'blobstore_client'
|
29
29
|
require 'eventmachine'
|
30
30
|
require 'netaddr'
|
31
|
-
require '
|
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'
|