bosh-director 1.3169.0 → 1.3173.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bosh/director.rb +1 -0
- data/lib/bosh/director/agent_client.rb +3 -4
- data/lib/bosh/director/api.rb +1 -0
- data/lib/bosh/director/api/controllers/base_controller.rb +1 -0
- data/lib/bosh/director/api/controllers/deployments_controller.rb +3 -0
- data/lib/bosh/director/api/controllers/restore_controller.rb +13 -0
- data/lib/bosh/director/api/instance_manager.rb +1 -1
- data/lib/bosh/director/api/restore_manager.rb +33 -0
- data/lib/bosh/director/api/route_configuration.rb +1 -0
- data/lib/bosh/director/api/task_helper.rb +1 -1
- data/lib/bosh/director/api/task_remover.rb +4 -4
- data/lib/bosh/director/cloudcheck_helper.rb +1 -1
- data/lib/bosh/director/config.rb +2 -2
- data/lib/bosh/director/deployment_plan/agent_state_migrator.rb +1 -1
- data/lib/bosh/director/deployment_plan/instance.rb +1 -1
- data/lib/bosh/director/disk_manager.rb +2 -2
- data/lib/bosh/director/instance_updater.rb +1 -1
- data/lib/bosh/director/jobs/vm_state.rb +1 -1
- data/lib/bosh/director/models/instance.rb +0 -4
- data/lib/bosh/director/problem_scanner/vm_scan_stage.rb +1 -1
- data/lib/bosh/director/stopper.rb +1 -1
- data/lib/bosh/director/version.rb +1 -1
- data/lib/bosh/director/vm_creator.rb +1 -1
- metadata +18 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d4567ce799c76f18ac7476b9b1e15b2a2894921
|
4
|
+
data.tar.gz: 7f0bd2519325e7456084327985f5f6c2b9866603
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2592d11e754ce910e9ee1a454041d590f3a5d94057fadea2d765e16f6a3d9e9f8ef34a1d16cfb11fa11d67f20fbb4861b14c77b8c47a569d2af6d68c6448ce4
|
7
|
+
data.tar.gz: 5e601ad6cb42e5e6e2b3b6eb158e033bb8ddea9b6e6fa617be2518f1f6862b38c16024a100416a50c35166f89e801ad55968adfb2762b91e0034634f8d13f4bb
|
data/lib/bosh/director.rb
CHANGED
@@ -163,4 +163,5 @@ require 'bosh/director/api/controllers/task_controller'
|
|
163
163
|
require 'bosh/director/api/controllers/users_controller'
|
164
164
|
require 'bosh/director/api/controllers/cloud_configs_controller'
|
165
165
|
require 'bosh/director/api/controllers/locks_controller'
|
166
|
+
require 'bosh/director/api/controllers/restore_controller'
|
166
167
|
require 'bosh/director/api/route_configuration'
|
@@ -19,7 +19,7 @@ module Bosh::Director
|
|
19
19
|
|
20
20
|
attr_accessor :id
|
21
21
|
|
22
|
-
def self.
|
22
|
+
def self.with_vm_credentials_and_agent_id(vm_credentials, agent_id, options = {})
|
23
23
|
defaults = {
|
24
24
|
retry_methods: {
|
25
25
|
get_state: GET_STATE_MAX_RETRIES,
|
@@ -27,10 +27,9 @@ module Bosh::Director
|
|
27
27
|
}
|
28
28
|
}
|
29
29
|
|
30
|
-
credentials
|
31
|
-
defaults.merge!(credentials: credentials) if credentials
|
30
|
+
defaults.merge!(credentials: vm_credentials) if vm_credentials
|
32
31
|
|
33
|
-
self.new('agent',
|
32
|
+
self.new('agent', agent_id, defaults.merge(options))
|
34
33
|
end
|
35
34
|
|
36
35
|
def initialize(service_name, client_id, options = {})
|
data/lib/bosh/director/api.rb
CHANGED
@@ -26,6 +26,7 @@ require 'bosh/director/api/user/user_manager_provider'
|
|
26
26
|
require 'bosh/director/api/vm_state_manager'
|
27
27
|
require 'bosh/director/api/backup_manager'
|
28
28
|
require 'bosh/director/api/resurrector_manager'
|
29
|
+
require 'bosh/director/api/restore_manager'
|
29
30
|
require 'bosh/director/api/cloud_config_manager'
|
30
31
|
|
31
32
|
require 'bosh/director/api/instance_lookup'
|
@@ -12,6 +12,7 @@ module Bosh::Director
|
|
12
12
|
@identity_provider = config.identity_provider
|
13
13
|
@deployment_manager = DeploymentManager.new
|
14
14
|
@backup_manager = BackupManager.new
|
15
|
+
@restore_manager = RestoreManager.new
|
15
16
|
@instance_manager = InstanceManager.new
|
16
17
|
@resurrector_manager = ResurrectorManager.new
|
17
18
|
@problem_manager = ProblemManager.new(@deployment_manager)
|
@@ -18,6 +18,8 @@ module Bosh::Director
|
|
18
18
|
json_encode(response)
|
19
19
|
end
|
20
20
|
|
21
|
+
# PUT /deployments/foo/jobs/dea?new_name=dea_new or
|
22
|
+
# PUT /deployments/foo/jobs/dea?state={started,stopped,detached,restart,recreate}&skip_drain=true
|
21
23
|
put '/:deployment/jobs/:job', :consumes => :yaml do
|
22
24
|
options = {
|
23
25
|
'job_states' => {
|
@@ -26,6 +28,7 @@ module Bosh::Director
|
|
26
28
|
}
|
27
29
|
}
|
28
30
|
}
|
31
|
+
options['skip_drain'] = params[:job] if params['skip_drain'] == 'true'
|
29
32
|
|
30
33
|
deployment = @deployment_manager.find_by_name(params[:deployment])
|
31
34
|
manifest = ((request.content_length.nil? || request.content_length.to_i == 0) && (params['state'])) ? StringIO.new(deployment.manifest) : request.body
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'bosh/director/api/controllers/base_controller'
|
2
|
+
|
3
|
+
module Bosh::Director
|
4
|
+
module Api::Controllers
|
5
|
+
class RestoreController < BaseController
|
6
|
+
post '/', :consumes => :multipart do
|
7
|
+
@restore_manager.restore_db(params[:nginx_upload_path])
|
8
|
+
|
9
|
+
status 202
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -41,7 +41,7 @@ module Bosh::Director
|
|
41
41
|
raise VmAgentIdMissing, "VM `#{vm.cid}' doesn't have an agent id"
|
42
42
|
end
|
43
43
|
|
44
|
-
AgentClient.
|
44
|
+
AgentClient.with_vm_credentials_and_agent_id(vm.credentials, vm.agent_id)
|
45
45
|
end
|
46
46
|
|
47
47
|
def fetch_logs(username, deployment_name, job, index_or_id, options = {})
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Bosh::Director
|
2
|
+
module Api
|
3
|
+
class RestoreManager
|
4
|
+
def initialize
|
5
|
+
@logger = Config.logger
|
6
|
+
@db_config = Config.db_config
|
7
|
+
end
|
8
|
+
|
9
|
+
def restore_db(path)
|
10
|
+
@logger.debug("Restoring database from db_dump file: #{path}...")
|
11
|
+
|
12
|
+
db_name = @db_config.fetch('database')
|
13
|
+
adapter = @db_config.fetch('adapter')
|
14
|
+
user = @db_config.fetch('user')
|
15
|
+
pass = @db_config.fetch('password')
|
16
|
+
host = @db_config.fetch('host')
|
17
|
+
|
18
|
+
Process.spawn(
|
19
|
+
'sudo',
|
20
|
+
"LD_LIBRARY_PATH=#{ENV['LD_LIBRARY_PATH']}",
|
21
|
+
'restore-db',
|
22
|
+
adapter,
|
23
|
+
host,
|
24
|
+
user,
|
25
|
+
pass,
|
26
|
+
db_name,
|
27
|
+
path,
|
28
|
+
out: '/dev/null'
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -12,6 +12,7 @@ module Bosh
|
|
12
12
|
controllers = {}
|
13
13
|
controllers['/backups'] = Bosh::Director::Api::Controllers::BackupsController.new(@config)
|
14
14
|
controllers['/cleanup'] = Bosh::Director::Api::Controllers::CleanupController.new(@config)
|
15
|
+
controllers['/restore'] = Bosh::Director::Api::Controllers::RestoreController.new(@config)
|
15
16
|
controllers['/cloud_configs'] = Bosh::Director::Api::Controllers::CloudConfigsController.new(@config)
|
16
17
|
controllers['/deployments'] = Bosh::Director::Api::Controllers::DeploymentsController.new(@config)
|
17
18
|
controllers['/disks'] = Bosh::Director::Api::Controllers::DisksController.new(@config)
|
@@ -4,16 +4,16 @@ module Bosh::Director::Api
|
|
4
4
|
@max_tasks = max_tasks
|
5
5
|
end
|
6
6
|
|
7
|
-
def remove
|
8
|
-
removal_candidates_dataset.each do |task|
|
7
|
+
def remove (type)
|
8
|
+
removal_candidates_dataset(type).each do |task|
|
9
9
|
FileUtils.rm_rf(task.output) if task.output
|
10
10
|
task.destroy
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
|
-
def removal_candidates_dataset
|
16
|
-
Bosh::Director::Models::Task.filter("state NOT IN ('processing', 'queued')").
|
15
|
+
def removal_candidates_dataset(type)
|
16
|
+
Bosh::Director::Models::Task.filter("state NOT IN ('processing', 'queued') and type='#{type}'").
|
17
17
|
order{id.desc}.limit(2, @max_tasks)
|
18
18
|
end
|
19
19
|
end
|
@@ -155,7 +155,7 @@ module Bosh::Director
|
|
155
155
|
:retry_methods => { :get_state => retries }
|
156
156
|
}
|
157
157
|
@clients ||= {}
|
158
|
-
@clients[vm.agent_id] ||= AgentClient.
|
158
|
+
@clients[vm.agent_id] ||= AgentClient.with_vm_credentials_and_agent_id(vm.credentials, vm.agent_id, options)
|
159
159
|
end
|
160
160
|
|
161
161
|
def agent_timeout_guard(vm, &block)
|
data/lib/bosh/director/config.rb
CHANGED
@@ -101,8 +101,8 @@ module Bosh::Director
|
|
101
101
|
# the default one does nothing
|
102
102
|
@event_log = EventLog::Log.new
|
103
103
|
|
104
|
-
# by default keep only last
|
105
|
-
@max_tasks = config.fetch('max_tasks',
|
104
|
+
# by default keep only last 100 tasks of each type in disk
|
105
|
+
@max_tasks = config.fetch('max_tasks', 100).to_i
|
106
106
|
|
107
107
|
@max_threads = config.fetch('max_threads', 32).to_i
|
108
108
|
|
@@ -8,7 +8,7 @@ module Bosh::Director
|
|
8
8
|
|
9
9
|
def get_state(vm_model)
|
10
10
|
@logger.debug("Requesting current VM state for: #{vm_model.agent_id}")
|
11
|
-
agent = AgentClient.
|
11
|
+
agent = AgentClient.with_vm_credentials_and_agent_id(vm_model.credentials, vm_model.agent_id)
|
12
12
|
state = agent.get_state
|
13
13
|
|
14
14
|
@logger.debug("Received VM state: #{state.pretty_inspect}")
|
@@ -42,7 +42,7 @@ module Bosh::Director
|
|
42
42
|
vm_model = instance.vm.model
|
43
43
|
begin
|
44
44
|
@cloud.attach_disk(vm_model.cid, disk_cid)
|
45
|
-
AgentClient.
|
45
|
+
AgentClient.with_vm_credentials_and_agent_id(vm_model.credentials, vm_model.agent_id).mount_disk(disk_cid)
|
46
46
|
rescue => e
|
47
47
|
@logger.warn("Failed to attach disk to new VM: #{e.inspect}")
|
48
48
|
raise e
|
@@ -212,7 +212,7 @@ module Bosh::Director
|
|
212
212
|
end
|
213
213
|
|
214
214
|
def agent(instance)
|
215
|
-
AgentClient.
|
215
|
+
AgentClient.with_vm_credentials_and_agent_id(instance.vm.model.credentials, instance.vm.model.agent_id)
|
216
216
|
end
|
217
217
|
|
218
218
|
def create_and_attach_disk(instance_plan, vm_recreator)
|
@@ -37,7 +37,7 @@ module Bosh::Director
|
|
37
37
|
processes = []
|
38
38
|
|
39
39
|
begin
|
40
|
-
agent = AgentClient.
|
40
|
+
agent = AgentClient.with_vm_credentials_and_agent_id(vm.credentials, vm.agent_id, :timeout => TIMEOUT)
|
41
41
|
agent_state = agent.get_state(@format)
|
42
42
|
agent_state['networks'].each_value do |network|
|
43
43
|
ips << network['ip']
|
@@ -58,7 +58,7 @@ module Bosh::Director
|
|
58
58
|
|
59
59
|
instance, mounted_disk_cid = @problem_register.get_vm_instance_and_disk(vm)
|
60
60
|
|
61
|
-
agent = AgentClient.
|
61
|
+
agent = AgentClient.with_vm_credentials_and_agent_id(vm.credentials, vm.agent_id, agent_options)
|
62
62
|
begin
|
63
63
|
state = agent.get_state
|
64
64
|
|
@@ -23,7 +23,7 @@ module Bosh::Director
|
|
23
23
|
private
|
24
24
|
|
25
25
|
def agent_client
|
26
|
-
@agent_client ||= AgentClient.
|
26
|
+
@agent_client ||= AgentClient.with_vm_credentials_and_agent_id(@instance_model.vm.credentials, @instance_model.vm.agent_id)
|
27
27
|
end
|
28
28
|
|
29
29
|
def perform_drain
|
@@ -60,7 +60,7 @@ module Bosh::Director
|
|
60
60
|
instance.bind_to_vm_model(vm_model)
|
61
61
|
VmMetadataUpdater.build.update(vm_model, {})
|
62
62
|
|
63
|
-
agent_client = AgentClient.
|
63
|
+
agent_client = AgentClient.with_vm_credentials_and_agent_id(vm_model.credentials, vm_model.agent_id)
|
64
64
|
agent_client.wait_until_ready
|
65
65
|
instance.update_trusted_certs
|
66
66
|
instance.update_cloud_properties!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-director
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3173.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VMware
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bosh_common
|
@@ -16,98 +16,98 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.3173.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.3173.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bosh_cpi
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.3173.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.3173.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bosh-registry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.3173.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.3173.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: blobstore_client
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.3173.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 1.3173.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bosh-core
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: 1.3173.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
82
|
+
version: 1.3173.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bosh-director-core
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.3173.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: 1.3173.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bosh-template
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.3173.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: 1.3173.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: bosh_openstack_cpi
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -674,6 +674,7 @@ files:
|
|
674
674
|
- lib/bosh/director/api/controllers/packages_controller.rb
|
675
675
|
- lib/bosh/director/api/controllers/releases_controller.rb
|
676
676
|
- lib/bosh/director/api/controllers/resources_controller.rb
|
677
|
+
- lib/bosh/director/api/controllers/restore_controller.rb
|
677
678
|
- lib/bosh/director/api/controllers/resurrection_controller.rb
|
678
679
|
- lib/bosh/director/api/controllers/stemcells_controller.rb
|
679
680
|
- lib/bosh/director/api/controllers/task_controller.rb
|
@@ -691,6 +692,7 @@ files:
|
|
691
692
|
- lib/bosh/director/api/property_manager.rb
|
692
693
|
- lib/bosh/director/api/release_manager.rb
|
693
694
|
- lib/bosh/director/api/resource_manager.rb
|
695
|
+
- lib/bosh/director/api/restore_manager.rb
|
694
696
|
- lib/bosh/director/api/resurrector_manager.rb
|
695
697
|
- lib/bosh/director/api/route_configuration.rb
|
696
698
|
- lib/bosh/director/api/snapshot_manager.rb
|