bosh-director 1.2577.0 → 1.2578.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.
data/lib/bosh/director.rb
CHANGED
|
@@ -73,6 +73,7 @@ require 'bosh/director/instance_deleter'
|
|
|
73
73
|
require 'bosh/director/instance_updater'
|
|
74
74
|
require 'bosh/director/instance_updater/preparer'
|
|
75
75
|
require 'bosh/director/instance_updater/network_updater'
|
|
76
|
+
require 'bosh/director/instance_updater/stopper'
|
|
76
77
|
require 'bosh/director/job_runner'
|
|
77
78
|
require 'bosh/director/job_updater'
|
|
78
79
|
require 'bosh/director/job_queue'
|
|
@@ -31,6 +31,7 @@ module Bosh::Director
|
|
|
31
31
|
@current_state = {}
|
|
32
32
|
|
|
33
33
|
@network_updater = NetworkUpdater.new(@instance, @vm, agent, self, @cloud, @logger)
|
|
34
|
+
@stopper = Stopper.new(@instance, agent, @target_state, Config, @logger)
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
def instance_name
|
|
@@ -140,38 +141,7 @@ module Bosh::Director
|
|
|
140
141
|
end
|
|
141
142
|
|
|
142
143
|
def stop
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if drain_time > 0
|
|
146
|
-
sleep(drain_time)
|
|
147
|
-
else
|
|
148
|
-
wait_for_dynamic_drain(drain_time)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
agent.stop
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def wait_for_dynamic_drain(initial_drain_time)
|
|
155
|
-
drain_time = initial_drain_time
|
|
156
|
-
loop do
|
|
157
|
-
# This could go on forever if drain script is broken, canceling the task is a way out.
|
|
158
|
-
Config.task_checkpoint
|
|
159
|
-
|
|
160
|
-
wait_time = drain_time.abs
|
|
161
|
-
if wait_time > 0
|
|
162
|
-
@logger.info("`#{@instance}' is draining: checking back in #{wait_time}s")
|
|
163
|
-
sleep(wait_time)
|
|
164
|
-
end
|
|
165
|
-
# Positive number always means last drain call:
|
|
166
|
-
break if drain_time >= 0
|
|
167
|
-
|
|
168
|
-
# We used to ignore exceptions from drain status for compatibility
|
|
169
|
-
# with older agents but it doesn't need to happen anymore, as
|
|
170
|
-
# realistically speaking, all agents have already been updated
|
|
171
|
-
# to support drain status mechanism and swallowing real errors
|
|
172
|
-
# would be bad here, as it could mask potential problems.
|
|
173
|
-
drain_time = agent.drain("status")
|
|
174
|
-
end
|
|
144
|
+
@stopper.stop
|
|
175
145
|
end
|
|
176
146
|
|
|
177
147
|
def take_snapshot
|
|
@@ -465,15 +435,6 @@ module Bosh::Director
|
|
|
465
435
|
[min_watch_time] + ([step] * (delta / step).floor)
|
|
466
436
|
end
|
|
467
437
|
|
|
468
|
-
# @return [Boolean] Is instance shutting down for this update?
|
|
469
|
-
def shutting_down?
|
|
470
|
-
@instance.resource_pool_changed? ||
|
|
471
|
-
@instance.persistent_disk_changed? ||
|
|
472
|
-
@instance.networks_changed? ||
|
|
473
|
-
@target_state == "stopped" ||
|
|
474
|
-
@target_state == "detached"
|
|
475
|
-
end
|
|
476
|
-
|
|
477
438
|
def min_watch_time
|
|
478
439
|
canary? ? @update_config.min_canary_watch_time : @update_config.min_update_watch_time
|
|
479
440
|
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Bosh::Director
|
|
2
|
+
class InstanceUpdater::Stopper
|
|
3
|
+
def initialize(instance, agent_client, target_state, config, logger)
|
|
4
|
+
@instance = instance
|
|
5
|
+
@agent_client = agent_client
|
|
6
|
+
@target_state = target_state
|
|
7
|
+
@config = config
|
|
8
|
+
@logger = logger
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def stop
|
|
12
|
+
drain_type = shutting_down? ? 'shutdown' : 'update'
|
|
13
|
+
|
|
14
|
+
# Apply spec might change after shutdown drain (unlike update drain)
|
|
15
|
+
# because instance's VM could be reconfigured.
|
|
16
|
+
# Drain script can still capture intent from non-final apply spec.
|
|
17
|
+
drain_time = @agent_client.drain(drain_type, @instance.spec)
|
|
18
|
+
|
|
19
|
+
if drain_time > 0
|
|
20
|
+
sleep(drain_time)
|
|
21
|
+
else
|
|
22
|
+
wait_for_dynamic_drain(drain_time)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
@agent_client.stop
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def shutting_down?
|
|
31
|
+
@instance.resource_pool_changed? ||
|
|
32
|
+
@instance.persistent_disk_changed? ||
|
|
33
|
+
@instance.networks_changed? ||
|
|
34
|
+
@target_state == 'stopped' ||
|
|
35
|
+
@target_state == 'detached'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def wait_for_dynamic_drain(initial_drain_time)
|
|
39
|
+
drain_time = initial_drain_time
|
|
40
|
+
|
|
41
|
+
loop do
|
|
42
|
+
# This could go on forever if drain script is broken, canceling the task is a way out.
|
|
43
|
+
@config.task_checkpoint
|
|
44
|
+
|
|
45
|
+
wait_time = drain_time.abs
|
|
46
|
+
if wait_time > 0
|
|
47
|
+
@logger.info("`#{@instance}' is draining: checking back in #{wait_time}s")
|
|
48
|
+
sleep(wait_time)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Positive number always means last drain call:
|
|
52
|
+
break if drain_time >= 0
|
|
53
|
+
|
|
54
|
+
# We used to ignore exceptions from drain status for compatibility
|
|
55
|
+
# with older agents but it doesn't need to happen anymore, as
|
|
56
|
+
# realistically speaking, all agents have already been updated
|
|
57
|
+
# to support drain status mechanism and swallowing real errors
|
|
58
|
+
# would be bad here, as it could mask potential problems.
|
|
59
|
+
drain_time = @agent_client.drain('status')
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bosh-director
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2578.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2014-05-
|
|
12
|
+
date: 2014-05-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bcrypt-ruby
|
|
@@ -34,7 +34,7 @@ dependencies:
|
|
|
34
34
|
requirements:
|
|
35
35
|
- - ~>
|
|
36
36
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: 1.
|
|
37
|
+
version: 1.2578.0
|
|
38
38
|
type: :runtime
|
|
39
39
|
prerelease: false
|
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -42,7 +42,7 @@ dependencies:
|
|
|
42
42
|
requirements:
|
|
43
43
|
- - ~>
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 1.
|
|
45
|
+
version: 1.2578.0
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: bosh-core
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -50,7 +50,7 @@ dependencies:
|
|
|
50
50
|
requirements:
|
|
51
51
|
- - ~>
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 1.
|
|
53
|
+
version: 1.2578.0
|
|
54
54
|
type: :runtime
|
|
55
55
|
prerelease: false
|
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -58,7 +58,7 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - ~>
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 1.
|
|
61
|
+
version: 1.2578.0
|
|
62
62
|
- !ruby/object:Gem::Dependency
|
|
63
63
|
name: bosh-director-core
|
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,7 +66,7 @@ dependencies:
|
|
|
66
66
|
requirements:
|
|
67
67
|
- - ~>
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: 1.
|
|
69
|
+
version: 1.2578.0
|
|
70
70
|
type: :runtime
|
|
71
71
|
prerelease: false
|
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -74,7 +74,7 @@ dependencies:
|
|
|
74
74
|
requirements:
|
|
75
75
|
- - ~>
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: 1.
|
|
77
|
+
version: 1.2578.0
|
|
78
78
|
- !ruby/object:Gem::Dependency
|
|
79
79
|
name: bosh_common
|
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -82,7 +82,7 @@ dependencies:
|
|
|
82
82
|
requirements:
|
|
83
83
|
- - ~>
|
|
84
84
|
- !ruby/object:Gem::Version
|
|
85
|
-
version: 1.
|
|
85
|
+
version: 1.2578.0
|
|
86
86
|
type: :runtime
|
|
87
87
|
prerelease: false
|
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -90,7 +90,7 @@ dependencies:
|
|
|
90
90
|
requirements:
|
|
91
91
|
- - ~>
|
|
92
92
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: 1.
|
|
93
|
+
version: 1.2578.0
|
|
94
94
|
- !ruby/object:Gem::Dependency
|
|
95
95
|
name: bosh_cpi
|
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -98,7 +98,7 @@ dependencies:
|
|
|
98
98
|
requirements:
|
|
99
99
|
- - ~>
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: 1.
|
|
101
|
+
version: 1.2578.0
|
|
102
102
|
type: :runtime
|
|
103
103
|
prerelease: false
|
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -106,7 +106,7 @@ dependencies:
|
|
|
106
106
|
requirements:
|
|
107
107
|
- - ~>
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: 1.
|
|
109
|
+
version: 1.2578.0
|
|
110
110
|
- !ruby/object:Gem::Dependency
|
|
111
111
|
name: bosh_openstack_cpi
|
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -114,7 +114,7 @@ dependencies:
|
|
|
114
114
|
requirements:
|
|
115
115
|
- - ~>
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 1.
|
|
117
|
+
version: 1.2578.0
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -122,7 +122,7 @@ dependencies:
|
|
|
122
122
|
requirements:
|
|
123
123
|
- - ~>
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: 1.
|
|
125
|
+
version: 1.2578.0
|
|
126
126
|
- !ruby/object:Gem::Dependency
|
|
127
127
|
name: bosh_aws_cpi
|
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -130,7 +130,7 @@ dependencies:
|
|
|
130
130
|
requirements:
|
|
131
131
|
- - ~>
|
|
132
132
|
- !ruby/object:Gem::Version
|
|
133
|
-
version: 1.
|
|
133
|
+
version: 1.2578.0
|
|
134
134
|
type: :runtime
|
|
135
135
|
prerelease: false
|
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -138,7 +138,7 @@ dependencies:
|
|
|
138
138
|
requirements:
|
|
139
139
|
- - ~>
|
|
140
140
|
- !ruby/object:Gem::Version
|
|
141
|
-
version: 1.
|
|
141
|
+
version: 1.2578.0
|
|
142
142
|
- !ruby/object:Gem::Dependency
|
|
143
143
|
name: bosh_vsphere_cpi
|
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -146,7 +146,7 @@ dependencies:
|
|
|
146
146
|
requirements:
|
|
147
147
|
- - ~>
|
|
148
148
|
- !ruby/object:Gem::Version
|
|
149
|
-
version: 1.
|
|
149
|
+
version: 1.2578.0
|
|
150
150
|
type: :runtime
|
|
151
151
|
prerelease: false
|
|
152
152
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -154,7 +154,7 @@ dependencies:
|
|
|
154
154
|
requirements:
|
|
155
155
|
- - ~>
|
|
156
156
|
- !ruby/object:Gem::Version
|
|
157
|
-
version: 1.
|
|
157
|
+
version: 1.2578.0
|
|
158
158
|
- !ruby/object:Gem::Dependency
|
|
159
159
|
name: bosh_warden_cpi
|
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -162,7 +162,7 @@ dependencies:
|
|
|
162
162
|
requirements:
|
|
163
163
|
- - ~>
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
|
-
version: 1.
|
|
165
|
+
version: 1.2578.0
|
|
166
166
|
type: :runtime
|
|
167
167
|
prerelease: false
|
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -170,7 +170,7 @@ dependencies:
|
|
|
170
170
|
requirements:
|
|
171
171
|
- - ~>
|
|
172
172
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: 1.
|
|
173
|
+
version: 1.2578.0
|
|
174
174
|
- !ruby/object:Gem::Dependency
|
|
175
175
|
name: bosh_vcloud_cpi
|
|
176
176
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -461,7 +461,7 @@ dependencies:
|
|
|
461
461
|
version: 0.0.2
|
|
462
462
|
description: ! 'BOSH Director
|
|
463
463
|
|
|
464
|
-
|
|
464
|
+
38620a'
|
|
465
465
|
email: support@cloudfoundry.com
|
|
466
466
|
executables:
|
|
467
467
|
- bosh-director
|
|
@@ -609,6 +609,7 @@ files:
|
|
|
609
609
|
- lib/bosh/director/instance_updater.rb
|
|
610
610
|
- lib/bosh/director/instance_updater/network_updater.rb
|
|
611
611
|
- lib/bosh/director/instance_updater/preparer.rb
|
|
612
|
+
- lib/bosh/director/instance_updater/stopper.rb
|
|
612
613
|
- lib/bosh/director/ip_util.rb
|
|
613
614
|
- lib/bosh/director/job_queue.rb
|
|
614
615
|
- lib/bosh/director/job_renderer.rb
|
|
@@ -720,7 +721,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
720
721
|
version: '0'
|
|
721
722
|
segments:
|
|
722
723
|
- 0
|
|
723
|
-
hash: -
|
|
724
|
+
hash: -1339974340603859878
|
|
724
725
|
requirements: []
|
|
725
726
|
rubyforge_project:
|
|
726
727
|
rubygems_version: 1.8.23
|