bosh-director 1.3160.0 → 1.3163.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-worker +2 -14
- data/db/migrations/director/20150513225143_ip_addresses.rb +11 -0
- data/db/migrations/director/20150702004608_add_links.rb +8 -0
- data/db/migrations/director/20150708231924_add_link_spec.rb +7 -0
- data/db/migrations/director/20150724183256_add_debugging_to_ip_addresses.rb +8 -0
- data/db/migrations/director/20150730225029_add_uuid_to_instances.rb +16 -0
- data/db/migrations/director/20150803215805_add_availabililty_zone_and_cloud_properties_to_instances.rb +8 -0
- data/db/migrations/director/20150804211419_add_compilation_flag_to_instance.rb +7 -0
- data/db/migrations/director/20150918003455_add_bootstrap_node_to_instance.rb +7 -0
- data/db/migrations/director/20151008232214_add_dns_records.rb +7 -0
- data/db/migrations/director/20151015172551_add_orphan_disks_and_snapshots.rb +29 -0
- data/db/migrations/director/20151030222853_add_templates_to_instance.rb +10 -0
- data/db/migrations/director/20151031001039_add_spec_to_instance.rb +19 -0
- data/db/migrations/director/20151109190602_rename_orphan_columns.rb +13 -0
- data/lib/bosh/director.rb +19 -9
- data/lib/bosh/director/agent_client.rb +0 -17
- data/lib/bosh/director/api/cloud_config_manager.rb +7 -5
- data/lib/bosh/director/api/controllers/base_controller.rb +3 -2
- data/lib/bosh/director/api/controllers/cleanup_controller.rb +15 -0
- data/lib/bosh/director/api/controllers/deployments_controller.rb +38 -26
- data/lib/bosh/director/api/controllers/disks_controller.rb +20 -0
- data/lib/bosh/director/api/controllers/info_controller.rb +2 -2
- data/lib/bosh/director/api/controllers/releases_controller.rb +1 -16
- data/lib/bosh/director/api/controllers/stemcells_controller.rb +1 -9
- data/lib/bosh/director/api/deployment_manager.rb +2 -1
- data/lib/bosh/director/api/instance_lookup.rb +17 -0
- data/lib/bosh/director/api/instance_manager.rb +20 -10
- data/lib/bosh/director/api/release_manager.rb +28 -8
- data/lib/bosh/director/api/resurrector_manager.rb +9 -2
- data/lib/bosh/director/api/route_configuration.rb +2 -0
- data/lib/bosh/director/api/snapshot_manager.rb +9 -5
- data/lib/bosh/director/api/stemcell_manager.rb +50 -0
- data/lib/bosh/director/app.rb +1 -1
- data/lib/bosh/director/cloudcheck_helper.rb +119 -132
- data/lib/bosh/director/compile_task.rb +1 -1
- data/lib/bosh/director/compile_task_generator.rb +2 -2
- data/lib/bosh/director/config.rb +21 -12
- data/lib/bosh/director/deployment_deleter.rb +69 -0
- data/lib/bosh/director/deployment_plan.rb +35 -4
- data/lib/bosh/director/deployment_plan/agent_state_migrator.rb +47 -0
- data/lib/bosh/director/deployment_plan/assembler.rb +115 -241
- data/lib/bosh/director/deployment_plan/availability_zone.rb +27 -0
- data/lib/bosh/director/deployment_plan/cloud_manifest_parser.rb +144 -35
- data/lib/bosh/director/deployment_plan/compilation_config.rb +21 -19
- data/lib/bosh/director/deployment_plan/compilation_instance_pool.rb +169 -0
- data/lib/bosh/director/deployment_plan/deployment_repo.rb +4 -8
- data/lib/bosh/director/deployment_plan/deployment_spec_parser.rb +13 -1
- data/lib/bosh/director/deployment_plan/deployment_validator.rb +17 -0
- data/lib/bosh/director/deployment_plan/desired_instance.rb +15 -0
- data/lib/bosh/director/deployment_plan/{disk_pool.rb → disk_type.rb} +14 -19
- data/lib/bosh/director/deployment_plan/dynamic_network.rb +105 -53
- data/lib/bosh/director/deployment_plan/dynamic_network_subnet.rb +13 -0
- data/lib/bosh/director/deployment_plan/env.rb +18 -0
- data/lib/bosh/director/deployment_plan/global_network_resolver.rb +77 -0
- data/lib/bosh/director/deployment_plan/instance.rb +222 -390
- data/lib/bosh/director/deployment_plan/instance_network_reservations.rb +71 -0
- data/lib/bosh/director/deployment_plan/instance_plan.rb +336 -0
- data/lib/bosh/director/deployment_plan/instance_plan_factory.rb +54 -0
- data/lib/bosh/director/deployment_plan/instance_plan_sorter.rb +61 -0
- data/lib/bosh/director/deployment_plan/instance_planner.rb +101 -0
- data/lib/bosh/director/deployment_plan/instance_repository.rb +36 -0
- data/lib/bosh/director/deployment_plan/instance_spec.rb +154 -0
- data/lib/bosh/director/deployment_plan/ip_provider/database_ip_repo.rb +136 -0
- data/lib/bosh/director/deployment_plan/ip_provider/in_memory_ip_repo.rb +81 -0
- data/lib/bosh/director/deployment_plan/ip_provider/ip_provider.rb +153 -0
- data/lib/bosh/director/deployment_plan/ip_provider/ip_provider_factory.rb +22 -0
- data/lib/bosh/director/deployment_plan/job.rb +116 -53
- data/lib/bosh/director/deployment_plan/job_availability_zone_parser.rb +49 -0
- data/lib/bosh/director/deployment_plan/job_migrator.rb +90 -0
- data/lib/bosh/director/deployment_plan/job_network.rb +42 -0
- data/lib/bosh/director/deployment_plan/job_network_parser.rb +118 -0
- data/lib/bosh/director/deployment_plan/job_spec_parser.rb +123 -126
- data/lib/bosh/director/deployment_plan/links/link.rb +30 -0
- data/lib/bosh/director/deployment_plan/links/link_lookup.rb +66 -0
- data/lib/bosh/director/deployment_plan/links/link_path.rb +27 -0
- data/lib/bosh/director/deployment_plan/links/links_resolver.rb +70 -0
- data/lib/bosh/director/deployment_plan/links/template_link.rb +21 -0
- data/lib/bosh/director/deployment_plan/manifest_migrator.rb +3 -17
- data/lib/bosh/director/deployment_plan/manifest_validator.rb +46 -0
- data/lib/bosh/director/deployment_plan/manual_network.rb +70 -97
- data/lib/bosh/director/deployment_plan/manual_network_subnet.rb +148 -0
- data/lib/bosh/director/deployment_plan/network.rb +50 -39
- data/lib/bosh/director/deployment_plan/network_planner.rb +4 -0
- data/lib/bosh/director/deployment_plan/network_planner/plan.rb +26 -0
- data/lib/bosh/director/deployment_plan/network_planner/planner.rb +21 -0
- data/lib/bosh/director/deployment_plan/network_planner/reservation_reconciler.rb +81 -0
- data/lib/bosh/director/deployment_plan/network_planner/vip_static_ips_planner.rb +50 -0
- data/lib/bosh/director/deployment_plan/network_settings.rb +65 -0
- data/lib/bosh/director/deployment_plan/options/skip_drain.rb +7 -0
- data/lib/bosh/director/deployment_plan/package_validator.rb +79 -0
- data/lib/bosh/director/deployment_plan/placement_planner.rb +8 -0
- data/lib/bosh/director/deployment_plan/placement_planner/availability_zone_picker.rb +90 -0
- data/lib/bosh/director/deployment_plan/placement_planner/bruteforce_ip_allocation.rb +124 -0
- data/lib/bosh/director/deployment_plan/placement_planner/index_assigner.rb +32 -0
- data/lib/bosh/director/deployment_plan/placement_planner/networks_to_static_ips.rb +125 -0
- data/lib/bosh/director/deployment_plan/placement_planner/placed_desired_instances.rb +40 -0
- data/lib/bosh/director/deployment_plan/placement_planner/plan.rb +42 -0
- data/lib/bosh/director/deployment_plan/placement_planner/static_ips_availability_zone_picker.rb +237 -0
- data/lib/bosh/director/deployment_plan/placement_planner/unplaced_existing_instances.rb +53 -0
- data/lib/bosh/director/deployment_plan/planner.rb +186 -74
- data/lib/bosh/director/deployment_plan/planner_factory.rb +30 -147
- data/lib/bosh/director/deployment_plan/release_version.rb +3 -3
- data/lib/bosh/director/deployment_plan/resource_pool.rb +2 -174
- data/lib/bosh/director/deployment_plan/stemcell.rb +57 -14
- data/lib/bosh/director/deployment_plan/steps/package_compile_step.rb +28 -135
- data/lib/bosh/director/deployment_plan/steps/update_step.rb +23 -44
- data/lib/bosh/director/deployment_plan/template.rb +15 -4
- data/lib/bosh/director/deployment_plan/vip_network.rb +14 -42
- data/lib/bosh/director/deployment_plan/vm.rb +1 -99
- data/lib/bosh/director/deployment_plan/vm_type.rb +27 -0
- data/lib/bosh/director/disk_manager.rb +268 -0
- data/lib/bosh/director/dns/canonicalizer.rb +28 -0
- data/lib/bosh/director/dns/dns_manager.rb +163 -0
- data/lib/bosh/director/dns/local_dns_repo.rb +20 -0
- data/lib/bosh/director/dns/powerdns.rb +170 -0
- data/lib/bosh/director/errand/job_manager.rb +18 -29
- data/lib/bosh/director/error_ignorer.rb +16 -0
- data/lib/bosh/director/errors.rb +51 -20
- data/lib/bosh/director/event_log.rb +6 -0
- data/lib/bosh/director/instance_deleter.rb +53 -81
- data/lib/bosh/director/instance_reuser.rb +89 -0
- data/lib/bosh/director/instance_updater.rb +139 -281
- data/lib/bosh/director/instance_updater/preparer.rb +8 -5
- data/lib/bosh/director/instance_updater/state_applier.rb +21 -0
- data/lib/bosh/director/ip_util.rb +46 -26
- data/lib/bosh/director/job_renderer.rb +22 -10
- data/lib/bosh/director/job_runner.rb +1 -4
- data/lib/bosh/director/job_updater.rb +47 -35
- data/lib/bosh/director/job_updater_factory.rb +5 -4
- data/lib/bosh/director/jobs/base_job.rb +8 -0
- data/lib/bosh/director/jobs/cleanup_artifacts.rb +93 -0
- data/lib/bosh/director/jobs/delete_deployment.rb +10 -154
- data/lib/bosh/director/jobs/delete_deployment_snapshots.rb +1 -1
- data/lib/bosh/director/jobs/delete_orphan_disks.rb +44 -0
- data/lib/bosh/director/jobs/delete_release.rb +19 -196
- data/lib/bosh/director/jobs/delete_stemcell.rb +10 -76
- data/lib/bosh/director/jobs/export_release.rb +41 -121
- data/lib/bosh/director/jobs/fetch_logs.rb +0 -6
- data/lib/bosh/director/jobs/helpers.rb +10 -0
- data/lib/bosh/director/jobs/helpers/blob_deleter.rb +24 -0
- data/lib/bosh/director/jobs/helpers/compiled_package_deleter.rb +24 -0
- data/lib/bosh/director/jobs/helpers/name_version_release_deleter.rb +48 -0
- data/lib/bosh/director/jobs/helpers/package_deleter.rb +33 -0
- data/lib/bosh/director/jobs/helpers/release_deleter.rb +52 -0
- data/lib/bosh/director/jobs/helpers/release_version_deleter.rb +115 -0
- data/lib/bosh/director/jobs/helpers/releases_to_delete_picker.rb +31 -0
- data/lib/bosh/director/jobs/helpers/stemcell_deleter.rb +61 -0
- data/lib/bosh/director/jobs/helpers/stemcells_to_delete_picker.rb +30 -0
- data/lib/bosh/director/jobs/helpers/template_deleter.rb +20 -0
- data/lib/bosh/director/jobs/release/release_job.rb +18 -7
- data/lib/bosh/director/jobs/run_errand.rb +57 -36
- data/lib/bosh/director/jobs/scheduled_orphan_cleanup.rb +46 -0
- data/lib/bosh/director/jobs/ssh.rb +50 -17
- data/lib/bosh/director/jobs/update_deployment.rb +29 -11
- data/lib/bosh/director/jobs/update_release.rb +25 -4
- data/lib/bosh/director/jobs/vm_state.rb +23 -32
- data/lib/bosh/director/lock.rb +13 -8
- data/lib/bosh/director/logs_fetcher.rb +1 -1
- data/lib/bosh/director/models.rb +3 -0
- data/lib/bosh/director/models/compiled_package.rb +3 -3
- data/lib/bosh/director/models/deployment.rb +10 -0
- data/lib/bosh/director/models/instance.rb +77 -1
- data/lib/bosh/director/models/ip_address.rb +26 -0
- data/lib/bosh/director/models/orphan_disk.rb +23 -0
- data/lib/bosh/director/models/orphan_snapshot.rb +14 -0
- data/lib/bosh/director/models/template.rb +32 -9
- data/lib/bosh/director/models/vm.rb +5 -8
- data/lib/bosh/director/network_reservation.rb +69 -99
- data/lib/bosh/director/problem_handlers/inactive_disk.rb +5 -20
- data/lib/bosh/director/problem_handlers/missing_disk.rb +2 -13
- data/lib/bosh/director/problem_resolver.rb +2 -2
- data/lib/bosh/director/problem_scanner/vm_scan_stage.rb +2 -21
- data/lib/bosh/director/scheduler.rb +23 -6
- data/lib/bosh/director/{instance_updater/stopper.rb → stopper.rb} +24 -18
- data/lib/bosh/director/tagged_logger.rb +30 -0
- data/lib/bosh/director/transactor.rb +9 -0
- data/lib/bosh/director/version.rb +1 -1
- data/lib/bosh/director/vm_creator.rb +91 -19
- data/lib/bosh/director/vm_deleter.rb +25 -0
- data/lib/bosh/director/vm_recreator.rb +15 -0
- data/lib/cloud/dummy.rb +381 -94
- metadata +110 -30
- data/lib/bosh/director/deployment_plan/dns_binder.rb +0 -45
- data/lib/bosh/director/deployment_plan/instance_vm_binder.rb +0 -37
- data/lib/bosh/director/deployment_plan/network_subnet.rb +0 -166
- data/lib/bosh/director/deployment_plan/resource_pools.rb +0 -68
- data/lib/bosh/director/dns_helper.rb +0 -223
- data/lib/bosh/director/instance_updater/network_updater.rb +0 -110
- data/lib/bosh/director/instance_updater/vm_updater.rb +0 -189
- data/lib/bosh/director/problem_handlers/out_of_sync_vm.rb +0 -64
- data/lib/bosh/director/problem_handlers/unbound_instance_vm.rb +0 -85
- data/lib/bosh/director/resource_pool_updater.rb +0 -174
- data/lib/bosh/director/vm_data.rb +0 -63
- data/lib/bosh/director/vm_reuser.rb +0 -63
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1587b4eccc78429904cf066ccf184484654ce06
|
4
|
+
data.tar.gz: 7894455133a637d96a5e3e33d01fb82e65d6ad3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc9f2d84ad6a67d3497c88ec62d42a9a49f3811c1039dabe5e81fc75f1ef5e3adc9266990ebdbf3b86573c73ab9c2c258494142c73244a990fbdf9dc153e5cb8
|
7
|
+
data.tar.gz: 2f758e5cc31f37714690cdd13114f2999a0779d241307ac2b6479914727187d3338b8d0912ea417f677496de55f81c3544b4201e742338bebd6254964e73b9c1
|
data/bin/bosh-director-worker
CHANGED
@@ -70,18 +70,6 @@ end
|
|
70
70
|
|
71
71
|
Resque::Failure.backend = Resque::Failure::Backtrace
|
72
72
|
|
73
|
-
|
74
|
-
@resque_retries ||= 0
|
75
|
-
worker.log "Starting worker #{worker}. Resque info:\n#{Resque.info.inspect}"
|
76
|
-
worker.work(ENV['INTERVAL'] || 5) # interval, will block
|
77
|
-
rescue Redis::TimeoutError => e
|
78
|
-
worker.log "Redis timeout [#{@resque_retries}]. Error : #{e.inspect}"
|
79
|
-
while @resque_retries < 10
|
80
|
-
@resque_retries += 1
|
81
|
-
sleep 0.5
|
82
|
-
retry
|
83
|
-
end
|
73
|
+
worker.log "Starting worker #{worker}"
|
84
74
|
|
85
|
-
|
86
|
-
raise e
|
87
|
-
end
|
75
|
+
worker.work(ENV['INTERVAL'] || 5) # interval, will block
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require('securerandom')
|
2
|
+
|
3
|
+
Sequel.migration do
|
4
|
+
up do
|
5
|
+
alter_table(:instances) do
|
6
|
+
add_column :uuid, String, unique: true
|
7
|
+
end
|
8
|
+
self[:instances].each { |row| self[:instances].filter(id: row[:id]).update(uuid: SecureRandom.uuid) }
|
9
|
+
end
|
10
|
+
|
11
|
+
down do
|
12
|
+
alter_table(:instances) do
|
13
|
+
drop_column :uuid
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table(:orphan_disks) do
|
4
|
+
primary_key :id
|
5
|
+
String :disk_cid, :null => false, :unique => true
|
6
|
+
Integer :size
|
7
|
+
String :availability_zone
|
8
|
+
String :deployment_name, :null => false
|
9
|
+
String :instance_name, :null => false
|
10
|
+
String :cloud_properties_json, :text => true
|
11
|
+
Time :orphaned_at, :null => false, :index => true
|
12
|
+
end
|
13
|
+
|
14
|
+
create_table(:orphan_snapshots) do
|
15
|
+
primary_key :id
|
16
|
+
foreign_key :orphan_disk_id, :orphan_disks, :null => false
|
17
|
+
String :snapshot_cid, :unique => true, :null => false
|
18
|
+
Boolean :clean, :default => false
|
19
|
+
Time :created_at, :null => false
|
20
|
+
Time :orphaned_at, :null => false, :index => true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
down do
|
25
|
+
drop_table(:orphan_snapshots)
|
26
|
+
drop_table(:orphan_disks)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
change do
|
3
|
+
alter_table(:instances) do
|
4
|
+
add_column :spec_json, String, text: true
|
5
|
+
end
|
6
|
+
|
7
|
+
self[:instances].each do |instance|
|
8
|
+
next unless instance[:vm_id]
|
9
|
+
|
10
|
+
vm = self[:vms].filter(id: instance[:vm_id]).first
|
11
|
+
|
12
|
+
self[:instances].filter(id: instance[:id]).update(spec_json: vm[:apply_spec_json])
|
13
|
+
end
|
14
|
+
|
15
|
+
alter_table(:vms) do
|
16
|
+
drop_column(:apply_spec_json)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
change do
|
3
|
+
alter_table :orphan_disks do
|
4
|
+
rename_column :orphaned_at, :created_at
|
5
|
+
end
|
6
|
+
|
7
|
+
alter_table :orphan_snapshots do
|
8
|
+
drop_column :created_at
|
9
|
+
rename_column :orphaned_at, :created_at
|
10
|
+
add_column :snapshot_created_at, Time
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/bosh/director.rb
CHANGED
@@ -39,13 +39,16 @@ require 'securerandom'
|
|
39
39
|
require 'common/thread_formatter'
|
40
40
|
require 'bosh/core/encryption_handler'
|
41
41
|
require 'bosh/director/api'
|
42
|
-
require 'bosh/director/
|
42
|
+
require 'bosh/director/dns/canonicalizer'
|
43
|
+
require 'bosh/director/dns/dns_manager'
|
44
|
+
require 'bosh/director/dns/local_dns_repo'
|
43
45
|
require 'bosh/director/errors'
|
44
46
|
require 'bosh/director/ext'
|
45
47
|
require 'bosh/director/ip_util'
|
46
48
|
require 'bosh/director/lock_helper'
|
47
49
|
require 'bosh/director/validation_helper'
|
48
50
|
require 'bosh/director/download_helper'
|
51
|
+
require 'bosh/director/tagged_logger'
|
49
52
|
|
50
53
|
require 'bosh/director/version'
|
51
54
|
require 'bosh/director/config'
|
@@ -60,9 +63,10 @@ require 'bosh/director/job_renderer'
|
|
60
63
|
require 'bosh/director/cycle_helper'
|
61
64
|
require 'bosh/director/encryption_helper'
|
62
65
|
require 'bosh/director/vm_creator'
|
66
|
+
require 'bosh/director/vm_recreator'
|
67
|
+
require 'bosh/director/vm_deleter'
|
63
68
|
require 'bosh/director/vm_metadata_updater'
|
64
|
-
require 'bosh/director/
|
65
|
-
require 'bosh/director/vm_reuser'
|
69
|
+
require 'bosh/director/instance_reuser'
|
66
70
|
require 'bosh/director/deployment_plan'
|
67
71
|
require 'bosh/director/errand'
|
68
72
|
require 'bosh/director/duration'
|
@@ -70,9 +74,9 @@ require 'bosh/director/hash_string_vals'
|
|
70
74
|
require 'bosh/director/instance_deleter'
|
71
75
|
require 'bosh/director/instance_updater'
|
72
76
|
require 'bosh/director/instance_updater/preparer'
|
73
|
-
require 'bosh/director/instance_updater/
|
74
|
-
require 'bosh/director/
|
75
|
-
require 'bosh/director/
|
77
|
+
require 'bosh/director/instance_updater/state_applier'
|
78
|
+
require 'bosh/director/disk_manager'
|
79
|
+
require 'bosh/director/stopper'
|
76
80
|
require 'bosh/director/job_runner'
|
77
81
|
require 'bosh/director/job_updater'
|
78
82
|
require 'bosh/director/job_updater_factory'
|
@@ -82,7 +86,9 @@ require 'bosh/director/nats_rpc'
|
|
82
86
|
require 'bosh/director/network_reservation'
|
83
87
|
require 'bosh/director/problem_scanner/scanner'
|
84
88
|
require 'bosh/director/problem_resolver'
|
85
|
-
require 'bosh/director/
|
89
|
+
require 'bosh/director/error_ignorer'
|
90
|
+
require 'bosh/director/deployment_deleter'
|
91
|
+
require 'bosh/director/transactor'
|
86
92
|
require 'bosh/director/sequel'
|
87
93
|
require 'common/thread_pool'
|
88
94
|
|
@@ -94,15 +100,14 @@ require 'bosh/director/problem_handlers/base'
|
|
94
100
|
require 'bosh/director/problem_handlers/invalid_problem'
|
95
101
|
require 'bosh/director/problem_handlers/inactive_disk'
|
96
102
|
require 'bosh/director/problem_handlers/missing_disk'
|
97
|
-
require 'bosh/director/problem_handlers/out_of_sync_vm'
|
98
103
|
require 'bosh/director/problem_handlers/unresponsive_agent'
|
99
|
-
require 'bosh/director/problem_handlers/unbound_instance_vm'
|
100
104
|
require 'bosh/director/problem_handlers/mount_info_mismatch'
|
101
105
|
require 'bosh/director/problem_handlers/missing_vm'
|
102
106
|
|
103
107
|
require 'bosh/director/jobs/base_job'
|
104
108
|
require 'bosh/director/jobs/backup'
|
105
109
|
require 'bosh/director/jobs/scheduled_backup'
|
110
|
+
require 'bosh/director/jobs/scheduled_orphan_cleanup'
|
106
111
|
require 'bosh/director/jobs/create_snapshot'
|
107
112
|
require 'bosh/director/jobs/snapshot_deployment'
|
108
113
|
require 'bosh/director/jobs/snapshot_deployments'
|
@@ -111,7 +116,9 @@ require 'bosh/director/jobs/delete_deployment'
|
|
111
116
|
require 'bosh/director/jobs/delete_deployment_snapshots'
|
112
117
|
require 'bosh/director/jobs/delete_release'
|
113
118
|
require 'bosh/director/jobs/delete_snapshots'
|
119
|
+
require 'bosh/director/jobs/delete_orphan_disks'
|
114
120
|
require 'bosh/director/jobs/delete_stemcell'
|
121
|
+
require 'bosh/director/jobs/cleanup_artifacts'
|
115
122
|
require 'bosh/director/jobs/export_release'
|
116
123
|
require 'bosh/director/jobs/update_deployment'
|
117
124
|
require 'bosh/director/jobs/update_release'
|
@@ -124,6 +131,7 @@ require 'bosh/director/jobs/cloud_check/scan_and_fix'
|
|
124
131
|
require 'bosh/director/jobs/cloud_check/apply_resolutions'
|
125
132
|
require 'bosh/director/jobs/release/release_job'
|
126
133
|
require 'bosh/director/jobs/ssh'
|
134
|
+
require 'bosh/director/jobs/helpers'
|
127
135
|
|
128
136
|
require 'bosh/director/models/helpers/model_helper'
|
129
137
|
|
@@ -141,7 +149,9 @@ end
|
|
141
149
|
require 'bosh/director/thread_pool'
|
142
150
|
require 'bosh/director/api/extensions/scoping'
|
143
151
|
require 'bosh/director/api/controllers/backups_controller'
|
152
|
+
require 'bosh/director/api/controllers/cleanup_controller'
|
144
153
|
require 'bosh/director/api/controllers/deployments_controller'
|
154
|
+
require 'bosh/director/api/controllers/disks_controller'
|
145
155
|
require 'bosh/director/api/controllers/packages_controller'
|
146
156
|
require 'bosh/director/api/controllers/info_controller'
|
147
157
|
require 'bosh/director/api/controllers/releases_controller'
|
@@ -19,11 +19,6 @@ module Bosh::Director
|
|
19
19
|
|
20
20
|
attr_accessor :id
|
21
21
|
|
22
|
-
def self.with_defaults(id, options = {})
|
23
|
-
vm = Bosh::Director::Models::Vm.find(:agent_id => id)
|
24
|
-
with_vm(vm, options)
|
25
|
-
end
|
26
|
-
|
27
22
|
def self.with_vm(vm, options = {})
|
28
23
|
defaults = {
|
29
24
|
retry_methods: {
|
@@ -70,14 +65,6 @@ module Bosh::Director
|
|
70
65
|
send_message(:list_disk, *args)
|
71
66
|
end
|
72
67
|
|
73
|
-
def prepare_configure_networks(*args)
|
74
|
-
send_message(:prepare_configure_networks, *args)
|
75
|
-
end
|
76
|
-
|
77
|
-
def prepare_network_change(*args)
|
78
|
-
send_message(:prepare_network_change, *args)
|
79
|
-
end
|
80
|
-
|
81
68
|
def start(*args)
|
82
69
|
send_message(:start, *args)
|
83
70
|
end
|
@@ -158,10 +145,6 @@ module Bosh::Director
|
|
158
145
|
task['value']
|
159
146
|
end
|
160
147
|
|
161
|
-
def configure_networks(*args)
|
162
|
-
send_message(:configure_networks, *args)
|
163
|
-
end
|
164
|
-
|
165
148
|
def wait_until_ready(deadline = 600)
|
166
149
|
old_timeout = @timeout
|
167
150
|
@timeout = 1.0
|
@@ -6,7 +6,7 @@ module Bosh
|
|
6
6
|
cloud_config = Bosh::Director::Models::CloudConfig.new(
|
7
7
|
properties: cloud_config_yaml
|
8
8
|
)
|
9
|
-
validate_manifest(cloud_config)
|
9
|
+
validate_manifest!(cloud_config)
|
10
10
|
cloud_config.save
|
11
11
|
end
|
12
12
|
|
@@ -20,10 +20,12 @@ module Bosh
|
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
|
-
def validate_manifest(cloud_config)
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
def validate_manifest!(cloud_config)
|
24
|
+
# FIXME: we really just need to validate the manifest, we don't care about the subnets being able to reserve IPs here
|
25
|
+
global_network_resolver = Bosh::Director::DeploymentPlan::NullGlobalNetworkResolver.new
|
26
|
+
|
27
|
+
parser = Bosh::Director::DeploymentPlan::CloudManifestParser.new(Config.logger)
|
28
|
+
_ = parser.parse(cloud_config.manifest, global_network_resolver, nil) # valid if this doesn't blow up
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
@@ -4,11 +4,11 @@ module Bosh::Director
|
|
4
4
|
class BaseController < Sinatra::Base
|
5
5
|
include ApiHelper
|
6
6
|
include Http
|
7
|
-
include DnsHelper
|
8
7
|
|
9
8
|
def initialize(config)
|
10
9
|
super()
|
11
10
|
@config = config
|
11
|
+
@logger = Config.logger
|
12
12
|
@identity_provider = config.identity_provider
|
13
13
|
@deployment_manager = DeploymentManager.new
|
14
14
|
@backup_manager = BackupManager.new
|
@@ -21,7 +21,8 @@ module Bosh::Director
|
|
21
21
|
@stemcell_manager = StemcellManager.new
|
22
22
|
@task_manager = TaskManager.new
|
23
23
|
@vm_state_manager = VmStateManager.new
|
24
|
-
@
|
24
|
+
@dns_manager = DnsManager.create
|
25
|
+
@disk_manager = DiskManager.new(nil, @logger)
|
25
26
|
end
|
26
27
|
|
27
28
|
register Bosh::Director::Api::Extensions::Scoping
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bosh/director/api/controllers/base_controller'
|
2
|
+
|
3
|
+
module Bosh::Director
|
4
|
+
module Api::Controllers
|
5
|
+
class CleanupController < BaseController
|
6
|
+
post '/', :consumes => :json do
|
7
|
+
job_queue = JobQueue.new
|
8
|
+
payload = json_decode(request.body)
|
9
|
+
task = Bosh::Director::Jobs::CleanupArtifacts.enqueue(current_user, payload['config'], job_queue)
|
10
|
+
|
11
|
+
redirect "/tasks/#{task.id}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -3,13 +3,14 @@ require 'bosh/director/api/controllers/base_controller'
|
|
3
3
|
module Bosh::Director
|
4
4
|
module Api::Controllers
|
5
5
|
class DeploymentsController < BaseController
|
6
|
-
get '/:deployment/jobs/:job/:
|
7
|
-
instance = @instance_manager.find_by_name(params[:deployment], params[:job], params[:
|
6
|
+
get '/:deployment/jobs/:job/:index_or_id' do
|
7
|
+
instance = @instance_manager.find_by_name(params[:deployment], params[:job], params[:index_or_id])
|
8
8
|
|
9
9
|
response = {
|
10
10
|
deployment: params[:deployment],
|
11
11
|
job: instance.job,
|
12
12
|
index: instance.index,
|
13
|
+
id: instance.uuid,
|
13
14
|
state: instance.state,
|
14
15
|
disks: instance.persistent_disks.map {|d| d.disk_cid}
|
15
16
|
}
|
@@ -40,21 +41,20 @@ module Bosh::Director
|
|
40
41
|
options['job_rename']['force'] = true if params['force'] == 'true'
|
41
42
|
end
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
44
|
+
deployment = @deployment_manager.find_by_name(params[:deployment])
|
45
|
+
manifest = ((request.content_length.nil? || request.content_length.to_i == 0) && (params['state'])) ? StringIO.new(deployment.manifest) : request.body
|
46
|
+
|
46
47
|
latest_cloud_config = Bosh::Director::Api::CloudConfigManager.new.latest
|
47
|
-
task = @deployment_manager.create_deployment(current_user,
|
48
|
+
task = @deployment_manager.create_deployment(current_user, manifest, latest_cloud_config, options)
|
48
49
|
redirect "/tasks/#{task.id}"
|
49
50
|
end
|
50
51
|
|
51
52
|
# PUT /deployments/foo/jobs/dea/2?state={started,stopped,detached,restart,recreate}&skip_drain=true
|
52
|
-
put '/:deployment/jobs/:job/:
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
53
|
+
put '/:deployment/jobs/:job/:index_or_id', :consumes => :yaml do
|
54
|
+
validate_instance_index_or_id(params[:index_or_id])
|
55
|
+
|
56
|
+
instance = @instance_manager.find_by_name(params[:deployment], params[:job], params[:index_or_id])
|
57
|
+
index = instance.index
|
58
58
|
|
59
59
|
options = {
|
60
60
|
'job_states' => {
|
@@ -68,24 +68,24 @@ module Bosh::Director
|
|
68
68
|
options['skip_drain'] = params[:job] if params['skip_drain'] == 'true'
|
69
69
|
|
70
70
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
71
|
-
manifest = (request.content_length.nil? || request.content_length == 0) ? StringIO.new(deployment.manifest) : request.body
|
71
|
+
manifest = (request.content_length.nil? || request.content_length.to_i == 0) ? StringIO.new(deployment.manifest) : request.body
|
72
72
|
latest_cloud_config = Bosh::Director::Api::CloudConfigManager.new.latest
|
73
73
|
task = @deployment_manager.create_deployment(current_user, manifest, latest_cloud_config, options)
|
74
74
|
redirect "/tasks/#{task.id}"
|
75
75
|
end
|
76
76
|
|
77
77
|
# GET /deployments/foo/jobs/dea/2/logs
|
78
|
-
get '/:deployment/jobs/:job/:
|
78
|
+
get '/:deployment/jobs/:job/:index_or_id/logs' do
|
79
79
|
deployment = params[:deployment]
|
80
80
|
job = params[:job]
|
81
|
-
|
81
|
+
index_or_id = params[:index_or_id]
|
82
82
|
|
83
83
|
options = {
|
84
84
|
'type' => params[:type].to_s.strip,
|
85
85
|
'filters' => params[:filters].to_s.strip.split(/[\s\,]+/)
|
86
86
|
}
|
87
87
|
|
88
|
-
task = @instance_manager.fetch_logs(current_user, deployment, job,
|
88
|
+
task = @instance_manager.fetch_logs(current_user, deployment, job, index_or_id, options)
|
89
89
|
redirect "/tasks/#{task.id}"
|
90
90
|
end
|
91
91
|
|
@@ -108,14 +108,18 @@ module Bosh::Director
|
|
108
108
|
redirect "/tasks/#{task.id}"
|
109
109
|
end
|
110
110
|
|
111
|
-
put '/:deployment/jobs/:job/:
|
111
|
+
put '/:deployment/jobs/:job/:index_or_id/resurrection', consumes: :json do
|
112
112
|
payload = json_decode(request.body)
|
113
113
|
|
114
|
-
@resurrector_manager.set_pause_for_instance(params[:deployment], params[:job], params[:
|
114
|
+
@resurrector_manager.set_pause_for_instance(params[:deployment], params[:job], params[:index_or_id], payload['resurrection_paused'])
|
115
115
|
end
|
116
116
|
|
117
|
-
post '/:deployment/jobs/:job/:
|
118
|
-
|
117
|
+
post '/:deployment/jobs/:job/:index_or_id/snapshots' do
|
118
|
+
if params[:index_or_id].to_s =~ /^\d+$/
|
119
|
+
instance = @instance_manager.find_by_name(params[:deployment], params[:job], params[:index_or_id])
|
120
|
+
else
|
121
|
+
instance = @instance_manager.filter_by(uuid: params[:index_or_id]).first
|
122
|
+
end
|
119
123
|
# until we can tell the agent to flush and wait, all snapshots are considered dirty
|
120
124
|
options = {clean: false}
|
121
125
|
|
@@ -296,7 +300,7 @@ module Bosh::Director
|
|
296
300
|
end
|
297
301
|
|
298
302
|
get '/:deployment_name/errands', scope: :read do
|
299
|
-
deployment_plan =
|
303
|
+
deployment_plan = load_deployment_plan
|
300
304
|
|
301
305
|
errands = deployment_plan.jobs.select(&:can_run_as_errand?)
|
302
306
|
|
@@ -309,13 +313,11 @@ module Bosh::Director
|
|
309
313
|
|
310
314
|
private
|
311
315
|
|
312
|
-
def
|
316
|
+
def load_deployment_plan
|
313
317
|
deployment_model = @deployment_manager.find_by_name(params[:deployment_name])
|
314
|
-
manifest_hash = Psych.load(deployment_model.manifest)
|
315
|
-
cloud_config_model = deployment_model.cloud_config
|
316
318
|
|
317
|
-
planner_factory = Bosh::Director::DeploymentPlan::PlannerFactory.create(Config.
|
318
|
-
planner_factory.
|
319
|
+
planner_factory = Bosh::Director::DeploymentPlan::PlannerFactory.create(Config.logger)
|
320
|
+
planner_factory.create_from_model(deployment_model)
|
319
321
|
end
|
320
322
|
|
321
323
|
def convert_job_instance_hash(hash)
|
@@ -334,6 +336,16 @@ module Bosh::Director
|
|
334
336
|
instances = @instance_manager.filter_by(filter)
|
335
337
|
instances.any?
|
336
338
|
end
|
339
|
+
|
340
|
+
def validate_instance_index_or_id(str)
|
341
|
+
begin
|
342
|
+
Integer(str)
|
343
|
+
rescue ArgumentError
|
344
|
+
if str !~ /^[A-Fa-f0-9]{8}-[A-Fa-f0-9-]{27}$/
|
345
|
+
raise InstanceInvalidIndex, "Invalid instance index or id `#{str}'"
|
346
|
+
end
|
347
|
+
end
|
348
|
+
end
|
337
349
|
end
|
338
350
|
end
|
339
351
|
end
|