bosh-director 1.2606.0 → 1.2611.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.
|
@@ -5,7 +5,6 @@ module Bosh::Director
|
|
|
5
5
|
include LockHelper
|
|
6
6
|
include IpUtil
|
|
7
7
|
|
|
8
|
-
# @param [DeploymentPlan] deployment_plan Deployment plan
|
|
9
8
|
def initialize(deployment_plan)
|
|
10
9
|
@deployment_plan = deployment_plan
|
|
11
10
|
@cloud = Config.cloud
|
|
@@ -115,23 +114,31 @@ module Bosh::Director
|
|
|
115
114
|
end
|
|
116
115
|
end
|
|
117
116
|
|
|
118
|
-
|
|
119
|
-
if (job = @deployment_plan.job(instance_model.job)) &&
|
|
120
|
-
(instance = job.instance(instance_model.index))
|
|
117
|
+
instance_name = "#{instance_model.job}/#{instance_model.index}"
|
|
121
118
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
119
|
+
job = @deployment_plan.job(instance_model.job)
|
|
120
|
+
unless job
|
|
121
|
+
@logger.debug("Job '#{instance_model.job}' not found, marking for deletion")
|
|
122
|
+
@deployment_plan.delete_instance(instance_model)
|
|
123
|
+
return
|
|
124
|
+
end
|
|
128
125
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
@logger.debug('Job/instance not found, marking for deletion')
|
|
126
|
+
instance = job.instance(instance_model.index)
|
|
127
|
+
unless instance
|
|
128
|
+
@logger.debug("Job instance #{instance_name} not found, marking for deletion")
|
|
133
129
|
@deployment_plan.delete_instance(instance_model)
|
|
130
|
+
return
|
|
134
131
|
end
|
|
132
|
+
|
|
133
|
+
@logger.debug("Found job instance #{instance_name}")
|
|
134
|
+
instance.use_model(instance_model)
|
|
135
|
+
instance.current_state = state
|
|
136
|
+
|
|
137
|
+
@logger.debug("Copying job instance #{instance_name} network reservations")
|
|
138
|
+
instance.take_network_reservations(reservations)
|
|
139
|
+
|
|
140
|
+
@logger.debug("Copying job instance #{instance_name} resource pool reservation")
|
|
141
|
+
job.resource_pool.mark_active_vm
|
|
135
142
|
end
|
|
136
143
|
|
|
137
144
|
def get_network_reservations(state)
|
|
@@ -35,6 +35,9 @@ module Bosh::Director
|
|
|
35
35
|
# @return [Integer] Number of active resource pool VMs
|
|
36
36
|
attr_reader :active_vm_count
|
|
37
37
|
|
|
38
|
+
# @return [Integer] Number of VMs reserved
|
|
39
|
+
attr_reader :reserved_capacity
|
|
40
|
+
|
|
38
41
|
# @param [DeploymentPlan] deployment_plan Deployment plan
|
|
39
42
|
# @param [Hash] spec Raw resource pool spec from the deployment manifest
|
|
40
43
|
def initialize(deployment_plan, spec)
|
|
@@ -63,8 +66,8 @@ module Bosh::Director
|
|
|
63
66
|
@idle_vms = []
|
|
64
67
|
@allocated_vms = []
|
|
65
68
|
@active_vm_count = 0
|
|
66
|
-
@
|
|
67
|
-
@
|
|
69
|
+
@reserved_capacity = 0
|
|
70
|
+
@reserved_errand_capacity = 0
|
|
68
71
|
end
|
|
69
72
|
|
|
70
73
|
# Returns resource pools spec as Hash (usually for agent to serialize)
|
|
@@ -101,13 +104,6 @@ module Bosh::Director
|
|
|
101
104
|
reservation
|
|
102
105
|
end
|
|
103
106
|
|
|
104
|
-
# Returns a number of VMs that need to be created in order to bring
|
|
105
|
-
# this resource pool to a desired size
|
|
106
|
-
# @return [Integer]
|
|
107
|
-
def missing_vm_count
|
|
108
|
-
@size - @active_vm_count - @idle_vms.size
|
|
109
|
-
end
|
|
110
|
-
|
|
111
107
|
# Adds a new VM to a list of managed idle VMs
|
|
112
108
|
def add_idle_vm
|
|
113
109
|
idle_vm = IdleVm.new(self)
|
|
@@ -134,27 +130,43 @@ module Bosh::Director
|
|
|
134
130
|
@active_vm_count += 1
|
|
135
131
|
end
|
|
136
132
|
|
|
137
|
-
# Checks if there is enough capacity to run
|
|
133
|
+
# Checks if there is enough capacity to run _extra_ N VMs,
|
|
138
134
|
# raise error if not enough capacity
|
|
139
135
|
# @raise [ResourcePoolNotEnoughCapacity]
|
|
140
136
|
# @return [void]
|
|
141
137
|
def reserve_capacity(n)
|
|
142
|
-
@
|
|
143
|
-
if
|
|
138
|
+
needed = @reserved_capacity + n
|
|
139
|
+
if needed > @size
|
|
144
140
|
raise ResourcePoolNotEnoughCapacity,
|
|
145
141
|
"Resource pool `#{@name}' is not big enough: " +
|
|
146
|
-
"#{
|
|
142
|
+
"#{needed} VMs needed, capacity is #{@size}"
|
|
147
143
|
end
|
|
144
|
+
@reserved_capacity = needed
|
|
148
145
|
end
|
|
149
146
|
|
|
147
|
+
# Checks if there is enough capacity to run _up to_ N VMs,
|
|
148
|
+
# raise error if not enough capacity.
|
|
149
|
+
# Only enough capacity to run the largest errand is required,
|
|
150
|
+
# because errands can only run one at a time.
|
|
151
|
+
# @raise [ResourcePoolNotEnoughCapacity]
|
|
152
|
+
# @return [void]
|
|
150
153
|
def reserve_errand_capacity(n)
|
|
151
|
-
needed = n - @
|
|
154
|
+
needed = n - @reserved_errand_capacity
|
|
152
155
|
|
|
153
156
|
if needed > 0
|
|
154
157
|
reserve_capacity(needed)
|
|
155
|
-
@
|
|
158
|
+
@reserved_errand_capacity = n
|
|
156
159
|
end
|
|
157
160
|
end
|
|
161
|
+
|
|
162
|
+
private
|
|
163
|
+
|
|
164
|
+
# Returns a number of VMs that need to be created in order to bring
|
|
165
|
+
# this resource pool to a desired size
|
|
166
|
+
# @return [Integer]
|
|
167
|
+
def missing_vm_count
|
|
168
|
+
@size - @active_vm_count - @idle_vms.size
|
|
169
|
+
end
|
|
158
170
|
end
|
|
159
171
|
end
|
|
160
172
|
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.2611.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-06-
|
|
12
|
+
date: 2014-06-18 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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.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.2611.0
|
|
174
174
|
- !ruby/object:Gem::Dependency
|
|
175
175
|
name: bosh_vcloud_cpi
|
|
176
176
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -493,7 +493,7 @@ dependencies:
|
|
|
493
493
|
version: '0'
|
|
494
494
|
description: ! 'BOSH Director
|
|
495
495
|
|
|
496
|
-
|
|
496
|
+
6129ec'
|
|
497
497
|
email: support@cloudfoundry.com
|
|
498
498
|
executables:
|
|
499
499
|
- bosh-director
|
|
@@ -754,7 +754,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
754
754
|
version: '0'
|
|
755
755
|
segments:
|
|
756
756
|
- 0
|
|
757
|
-
hash:
|
|
757
|
+
hash: -4501133307616993299
|
|
758
758
|
requirements: []
|
|
759
759
|
rubyforge_project:
|
|
760
760
|
rubygems_version: 1.8.23.2
|