bosh-director 1.2131.0 → 1.2168.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,125 @@
1
+ require 'common/deep_copy'
2
+
3
+ module Bosh::Director
4
+ module DeploymentPlan
5
+ class DeploymentSpecParser
6
+ include DnsHelper
7
+ include ValidationHelper
8
+
9
+ def initialize(event_log)
10
+ @event_log = event_log
11
+ end
12
+
13
+ # @param [Hash] manifest Raw deployment manifest
14
+ # @return [DeploymentPlan::Planner] Deployment as build from deployment_spec
15
+ def parse(manifest, options = {})
16
+ @manifest = manifest
17
+
18
+ @job_states = safe_property(options, 'job_states',
19
+ :class => Hash, :default => {})
20
+
21
+ @deployment = Planner.new(parse_name, options)
22
+
23
+ parse_properties
24
+ parse_releases
25
+ parse_networks
26
+ parse_compilation
27
+ parse_update
28
+ parse_resource_pools
29
+ parse_jobs
30
+
31
+ @deployment
32
+ end
33
+
34
+ private
35
+
36
+ def parse_name
37
+ safe_property(@manifest, 'name', :class => String)
38
+ end
39
+
40
+ def parse_properties
41
+ @deployment.properties = safe_property(@manifest, 'properties',
42
+ :class => Hash, :default => {})
43
+ end
44
+
45
+ def parse_releases
46
+ release_specs = []
47
+
48
+ if @manifest.has_key?('release')
49
+ if @manifest.has_key?('releases')
50
+ raise DeploymentAmbiguousReleaseSpec,
51
+ "Deployment manifest contains both 'release' and 'releases' " +
52
+ 'sections, please use one of the two.'
53
+ end
54
+ release_specs << @manifest['release']
55
+ else
56
+ safe_property(@manifest, 'releases', :class => Array).each do |release|
57
+ release_specs << release
58
+ end
59
+ end
60
+
61
+ release_specs.each do |release_spec|
62
+ @deployment.add_release(ReleaseVersion.new(@deployment, release_spec))
63
+ end
64
+ end
65
+
66
+ def parse_networks
67
+ networks = safe_property(@manifest, 'networks', :class => Array)
68
+ networks.each do |network_spec|
69
+ type = safe_property(network_spec, 'type', :class => String,
70
+ :default => 'manual')
71
+
72
+ case type
73
+ when 'manual'
74
+ network = ManualNetwork.new(@deployment, network_spec)
75
+ when 'dynamic'
76
+ network = DynamicNetwork.new(@deployment, network_spec)
77
+ when 'vip'
78
+ network = VipNetwork.new(@deployment, network_spec)
79
+ else
80
+ raise DeploymentInvalidNetworkType,
81
+ "Invalid network type `#{type}'"
82
+ end
83
+
84
+ @deployment.add_network(network)
85
+ end
86
+
87
+ if @deployment.networks.empty?
88
+ raise DeploymentNoNetworks, 'No networks specified'
89
+ end
90
+ end
91
+
92
+ def parse_compilation
93
+ compilation_spec = safe_property(@manifest, 'compilation', :class => Hash)
94
+ @deployment.compilation = CompilationConfig.new(@deployment, compilation_spec)
95
+ end
96
+
97
+ def parse_update
98
+ update_spec = safe_property(@manifest, 'update', :class => Hash)
99
+ @deployment.update = UpdateConfig.new(update_spec)
100
+ end
101
+
102
+ def parse_resource_pools
103
+ resource_pools = safe_property(@manifest, 'resource_pools', :class => Array)
104
+ resource_pools.each do |rp_spec|
105
+ @deployment.add_resource_pool(ResourcePool.new(@deployment, rp_spec))
106
+ end
107
+
108
+ # Uncomment when integration test fixed
109
+ # raise "No resource pools specified." if @resource_pools.empty?
110
+ end
111
+
112
+ def parse_jobs
113
+ jobs = safe_property(@manifest, 'jobs', :class => Array, :default => [])
114
+ jobs.each do |job_spec|
115
+ state_overrides = @job_states[job_spec['name']]
116
+ if state_overrides
117
+ job_spec.recursive_merge!(state_overrides)
118
+ end
119
+
120
+ @deployment.add_job(Job.parse(@deployment, job_spec, @event_log))
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -141,7 +141,7 @@ module Bosh::Director
141
141
  ##
142
142
  # Take any existing valid network reservations
143
143
  #
144
- # @param [Hash<String, NetworkReservation] reservations
144
+ # @param [Hash<String, NetworkReservation>] reservations
145
145
  # @return [void]
146
146
  def take_network_reservations(reservations)
147
147
  reservations.each do |name, provided_reservation|
@@ -31,7 +31,7 @@ module Bosh::Director
31
31
  # be run in
32
32
  attr_accessor :resource_pool
33
33
 
34
- # @return [DeploymentPlan::Network Job default network
34
+ # @return [DeploymentPlan::Network] Job default network
35
35
  attr_accessor :default_network
36
36
 
37
37
  # @return [Array<DeploymentPlan::Template] Templates included into the job
@@ -66,12 +66,13 @@ module Bosh::Director
66
66
 
67
67
  attr_accessor :all_properties
68
68
 
69
- # @param [Bosh::Director::DeploymentPlan] deployment Deployment plan
69
+ # @param [Bosh::Director::DeploymentPlan::Planner]
70
+ # deployment Deployment plan
70
71
  # @param [Hash] job_spec Raw job spec from the deployment manifest
71
72
  # @return [Bosh::Director::DeploymentPlan::Job]
72
73
  def self.parse(deployment, job_spec, event_log)
73
- job_parser = JobSpecParser.new(deployment, event_log)
74
- job_parser.parse(job_spec)
74
+ parser = JobSpecParser.new(deployment, event_log)
75
+ parser.parse(job_spec)
75
76
  end
76
77
 
77
78
  # @param [Bosh::Director::DeploymentPlan] deployment Deployment plan
@@ -67,7 +67,7 @@ module Bosh::Director
67
67
  if template_names
68
68
  if template_names.is_a?(Array)
69
69
  @event_log.warn_deprecated(
70
- "Please use `templates' when specifying multiple templates for a job. "\
70
+ "Please use `templates' when specifying multiple templates for a job. " +
71
71
  "`template' for multiple templates will soon be unsupported."
72
72
  )
73
73
  end
@@ -1,3 +1,5 @@
1
+ require 'bosh/director/deployment_plan/deployment_spec_parser'
2
+
1
3
  module Bosh::Director
2
4
  # Encapsulates essential director data structures retrieved
3
5
  # from the deployment manifest and the running environment.
@@ -8,66 +10,89 @@ module Bosh::Director
8
10
 
9
11
  # @return [String] Deployment name
10
12
  attr_reader :name
13
+
11
14
  # @return [String] Deployment canonical name (for DNS)
12
15
  attr_reader :canonical_name
16
+
13
17
  # @return [Models::Deployment] Deployment DB model
14
18
  attr_reader :model
15
19
 
16
20
  attr_accessor :properties
21
+
22
+ # @return [Bosh::Director::DeploymentPlan::CompilationConfig]
23
+ # Resource pool and other configuration for compilation workers
17
24
  attr_accessor :compilation
25
+
26
+ # @return [Bosh::Director::DeploymentPlan::UpdateConfig]
27
+ # Default job update configuration
18
28
  attr_accessor :update
29
+
30
+ # @return [Array<Bosh::Director::DeploymentPlan::Job>]
31
+ # All jobs in the deployment
32
+ attr_reader :jobs
33
+
19
34
  attr_accessor :unneeded_instances
20
35
  attr_accessor :unneeded_vms
21
36
  attr_accessor :dns_domain
22
37
 
23
- attr_reader :jobs
24
38
  attr_reader :job_rename
39
+
40
+ # @return [Boolean] Indicates whether VMs should be recreated
25
41
  attr_reader :recreate
26
42
 
27
- def initialize(manifest, options = {})
28
- @manifest = manifest
29
- @recreate = !!options['recreate']
30
- @job_states = safe_property(options, 'job_states',
31
- :class => Hash, :default => {})
43
+ # @param [Hash] manifest Raw deployment manifest
44
+ # @param [Bosh::Director::EventLog::Log]
45
+ # event_log Event log for recording deprecations
46
+ # @param [Hash] options Additional options for deployment
47
+ # (e.g. job_states, job_rename)
48
+ # @return [Bosh::Director::DeploymentPlan::Planner]
49
+ def self.parse(manifest, event_log, options)
50
+ parser = DeploymentSpecParser.new(event_log)
51
+ parser.parse(manifest, options)
52
+ end
53
+
54
+ def initialize(name, options = {})
55
+ raise ArgumentError, 'name must not be nil' unless name
56
+ @name = name
57
+ @model = nil
58
+
59
+ @properties = {}
60
+ @releases = {}
61
+ @networks = {}
62
+ @networks_canonical_name_index = Set.new
63
+
64
+ @resource_pools = {}
65
+
66
+ @jobs = []
67
+ @jobs_name_index = {}
68
+ @jobs_canonical_name_index = Set.new
32
69
 
33
- @job_rename = safe_property(options, 'job_rename',
34
- :class => Hash, :default => {})
35
70
  @unneeded_vms = []
36
71
  @unneeded_instances = []
37
72
  @dns_domain = nil
38
73
 
39
- @name = nil
40
- @canonical_name = nil
41
- @model = nil
74
+ @job_rename = safe_property(options, 'job_rename',
75
+ :class => Hash, :default => {})
76
+
77
+ @recreate = !!options['recreate']
42
78
  end
43
79
 
44
- def parse(event_log)
45
- parse_name
46
- parse_properties
47
- parse_releases
48
- parse_networks
49
- parse_compilation
50
- parse_update
51
- parse_resource_pools
52
- parse_jobs(event_log)
80
+ def canonical_name
81
+ canonical(@name)
53
82
  end
54
83
 
55
84
  # Looks up deployment model in DB or creates one if needed
56
85
  # @return [void]
57
86
  def bind_model
58
- if @name.nil? || @canonical_name.nil?
59
- raise DirectorError,
60
- 'Unable to bind model, name and/or canonical name unknown'
61
- end
62
-
63
87
  attrs = {:name => @name}
64
88
 
65
89
  Models::Deployment.db.transaction do
66
90
  deployment = Models::Deployment.find(attrs)
91
+
67
92
  # Canonical uniqueness is not enforced in the DB
68
93
  if deployment.nil?
69
94
  Models::Deployment.each do |other|
70
- if canonical(other.name) == @canonical_name
95
+ if canonical(other.name) == canonical_name
71
96
  raise DeploymentCanonicalNameTaken,
72
97
  "Invalid deployment name `#{@name}', " +
73
98
  'canonical name already taken'
@@ -75,6 +100,7 @@ module Bosh::Director
75
100
  end
76
101
  deployment = Models::Deployment.create(attrs)
77
102
  end
103
+
78
104
  @model = deployment
79
105
  end
80
106
  end
@@ -88,11 +114,17 @@ module Bosh::Director
88
114
  @model.vms
89
115
  end
90
116
 
91
- # Returns a named job
92
- # @param [String] name Job name
93
- # @return [Bosh::Director::DeploymentPlan::Job] Job
94
- def job(name)
95
- @jobs_name_index[name]
117
+ # Adds a network by name
118
+ # @param [Bosh::Director::DeploymentPlan::Network] network
119
+ def add_network(network)
120
+ if @networks_canonical_name_index.include?(network.canonical_name)
121
+ raise DeploymentCanonicalNetworkNameTaken,
122
+ "Invalid network name `#{network.name}', " +
123
+ 'canonical name already taken'
124
+ end
125
+
126
+ @networks[network.name] = network
127
+ @networks_canonical_name_index << network.canonical_name
96
128
  end
97
129
 
98
130
  # Returns all networks in a deployment plan
@@ -108,6 +140,16 @@ module Bosh::Director
108
140
  @networks[name]
109
141
  end
110
142
 
143
+ # Adds a resource pool by name
144
+ # @param [Bosh::Director::DeploymentPlan::ResourcePool] resource_pool
145
+ def add_resource_pool(resource_pool)
146
+ if @resource_pools[resource_pool.name]
147
+ raise DeploymentDuplicateResourcePoolName,
148
+ "Duplicate resource pool name `#{resource_pool.name}'"
149
+ end
150
+ @resource_pools[resource_pool.name] = resource_pool
151
+ end
152
+
111
153
  # Returns all resource pools in a deployment plan
112
154
  # @return [Array<Bosh::Director::DeploymentPlan::ResourcePool>]
113
155
  def resource_pools
@@ -121,6 +163,16 @@ module Bosh::Director
121
163
  @resource_pools[name]
122
164
  end
123
165
 
166
+ # Adds a release by name
167
+ # @param [Bosh::Director::DeploymentPlan::ReleaseVersion] release
168
+ def add_release(release)
169
+ if @releases.has_key?(release.name)
170
+ raise DeploymentDuplicateReleaseName,
171
+ "Duplicate release name `#{release.name}'"
172
+ end
173
+ @releases[release.name] = release
174
+ end
175
+
124
176
  # Returns all releases in a deployment plan
125
177
  # @return [Array<Bosh::Director::DeploymentPlan::ReleaseVersion>]
126
178
  def releases
@@ -135,7 +187,6 @@ module Bosh::Director
135
187
 
136
188
  # Adds a VM to deletion queue
137
189
  # @param [Bosh::Director::Models::Vm] vm VM DB model
138
- #
139
190
  def delete_vm(vm)
140
191
  @unneeded_vms << vm
141
192
  end
@@ -150,138 +201,34 @@ module Bosh::Director
150
201
  end
151
202
  end
152
203
 
153
- def rename_in_progress?
154
- @job_rename['old_name'] && @job_rename['new_name']
155
- end
156
-
157
- def parse_name
158
- @name = safe_property(@manifest, 'name', :class => String)
159
- @canonical_name = canonical(@name)
160
- end
161
-
162
- def parse_properties
163
- @properties = safe_property(@manifest, 'properties',
164
- :class => Hash, :default => {})
165
- end
166
-
167
- def parse_releases
168
- release_specs = []
169
-
170
- if @manifest.has_key?('release')
171
- if @manifest.has_key?('releases')
172
- raise DeploymentAmbiguousReleaseSpec,
173
- "Deployment manifest contains both 'release' and 'releases' " +
174
- 'sections, please use one of the two.'
175
- end
176
- release_specs << @manifest['release']
177
- else
178
- safe_property(@manifest, 'releases', :class => Array).each do |release|
179
- release_specs << release
180
- end
181
- end
182
-
183
- @releases = {}
184
- release_specs.each do |release_spec|
185
- release = ReleaseVersion.new(self, release_spec)
186
- if @releases.has_key?(release.name)
187
- raise DeploymentDuplicateReleaseName,
188
- "Duplicate release name `#{release.name}'"
189
- end
190
- @releases[release.name] = release
191
- end
192
- end
193
-
194
- def parse_resource_pools
195
- @resource_pools = {}
196
- resource_pools = safe_property(@manifest, 'resource_pools',
197
- :class => Array)
198
- resource_pools.each do |spec|
199
- resource_pool = ResourcePool.new(self, spec)
200
- if @resource_pools[resource_pool.name]
201
- raise DeploymentDuplicateResourcePoolName,
202
- "Duplicate resource pool name `#{resource_pool.name}'"
203
- end
204
- @resource_pools[resource_pool.name] = resource_pool
204
+ # Adds a job by name
205
+ # @param [Bosh::Director::DeploymentPlan::Job] job
206
+ def add_job(job)
207
+ if rename_in_progress? && @job_rename['old_name'] == job.name
208
+ raise DeploymentRenamedJobNameStillUsed,
209
+ "Renamed job `#{job.name}' is still referenced in " +
210
+ 'deployment manifest'
205
211
  end
206
212
 
207
- # Uncomment when integration test fixed
208
- # raise "No resource pools specified." if @resource_pools.empty?
209
- end
210
-
211
- def parse_jobs(event_log)
212
- @jobs = []
213
- @jobs_name_index = {}
214
- @jobs_canonical_name_index = Set.new
215
-
216
- jobs = safe_property(@manifest, 'jobs', :class => Array, :default => [])
217
-
218
- jobs.each do |job|
219
- state_overrides = @job_states[job['name']]
220
-
221
- if state_overrides
222
- job.recursive_merge!(state_overrides)
223
- end
224
-
225
- if rename_in_progress? && @job_rename['old_name'] == job['name']
226
- raise DeploymentRenamedJobNameStillUsed,
227
- "Renamed job `#{job['name']}' is still referenced in " +
228
- 'deployment manifest'
229
- end
230
-
231
- job = Job.parse(self, job, event_log)
232
-
233
- if @jobs_canonical_name_index.include?(job.canonical_name)
234
- raise DeploymentCanonicalJobNameTaken,
235
- "Invalid job name `#{job.name}', canonical name already taken"
236
- end
237
-
238
- @jobs << job
239
- @jobs_name_index[job.name] = job
240
- @jobs_canonical_name_index << job.canonical_name
241
- end
242
- end
243
-
244
- def parse_networks
245
- @networks = {}
246
- @networks_canonical_name_index = Set.new
247
- networks = safe_property(@manifest, 'networks', :class => Array)
248
- networks.each do |network_spec|
249
- type = safe_property(network_spec, 'type', :class => String,
250
- :default => 'manual')
251
- case type
252
- when 'manual'
253
- network = ManualNetwork.new(self, network_spec)
254
- when 'dynamic'
255
- network = DynamicNetwork.new(self, network_spec)
256
- when 'vip'
257
- network = VipNetwork.new(self, network_spec)
258
- else
259
- raise DeploymentInvalidNetworkType,
260
- "Invalid network type `#{type}'"
261
- end
262
-
263
- if @networks_canonical_name_index.include?(network.canonical_name)
264
- raise DeploymentCanonicalNetworkNameTaken,
265
- "Invalid network name `#{network.name}', " +
266
- 'canonical name already taken'
267
- end
268
- @networks[network.name] = network
269
- @networks_canonical_name_index << network.canonical_name
213
+ if @jobs_canonical_name_index.include?(job.canonical_name)
214
+ raise DeploymentCanonicalJobNameTaken,
215
+ "Invalid job name `#{job.name}', canonical name already taken"
270
216
  end
271
217
 
272
- if @networks.empty?
273
- raise DeploymentNoNetworks, 'No networks specified'
274
- end
218
+ @jobs << job
219
+ @jobs_name_index[job.name] = job
220
+ @jobs_canonical_name_index << job.canonical_name
275
221
  end
276
222
 
277
- def parse_update
278
- @update = UpdateConfig.new(
279
- safe_property(@manifest, 'update', :class => Hash))
223
+ # Returns a named job
224
+ # @param [String] name Job name
225
+ # @return [Bosh::Director::DeploymentPlan::Job] Job
226
+ def job(name)
227
+ @jobs_name_index[name]
280
228
  end
281
229
 
282
- def parse_compilation
283
- @compilation = CompilationConfig.new(self, safe_property(
284
- @manifest, 'compilation', :class => Hash))
230
+ def rename_in_progress?
231
+ @job_rename['old_name'] && @job_rename['new_name']
285
232
  end
286
233
  end
287
234
  end
@@ -27,8 +27,7 @@ module Bosh::Director
27
27
  }
28
28
 
29
29
  manifest_as_hash = Psych.load(@manifest)
30
- @deployment_plan = DeploymentPlan::Planner.new(manifest_as_hash, plan_options)
31
- @deployment_plan.parse(event_log)
30
+ @deployment_plan = DeploymentPlan::Planner.parse(manifest_as_hash, event_log, plan_options)
32
31
  logger.info('Created deployment plan')
33
32
 
34
33
  resource_pools = @deployment_plan.resource_pools
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Director
3
- VERSION = '1.2131.0'
3
+ VERSION = '1.2168.0'
4
4
  end
5
5
  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.2131.0
4
+ version: 1.2168.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-03-06 00:00:00.000000000 Z
12
+ date: 2014-03-11 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.2131.0
37
+ version: 1.2168.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.2131.0
45
+ version: 1.2168.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.2131.0
53
+ version: 1.2168.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.2131.0
61
+ version: 1.2168.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.2131.0
69
+ version: 1.2168.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.2131.0
77
+ version: 1.2168.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.2131.0
85
+ version: 1.2168.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.2131.0
93
+ version: 1.2168.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.2131.0
101
+ version: 1.2168.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.2131.0
109
+ version: 1.2168.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.2131.0
117
+ version: 1.2168.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.2131.0
125
+ version: 1.2168.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.2131.0
133
+ version: 1.2168.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.2131.0
141
+ version: 1.2168.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.2131.0
149
+ version: 1.2168.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.2131.0
157
+ version: 1.2168.0
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: bosh_vcloud_cpi
160
160
  requirement: !ruby/object:Gem::Requirement
@@ -493,7 +493,7 @@ dependencies:
493
493
  version: '1.0'
494
494
  description: ! 'BOSH Director
495
495
 
496
- bee75e'
496
+ 542f8e'
497
497
  email: support@cloudfoundry.com
498
498
  executables:
499
499
  - bosh-director
@@ -601,6 +601,7 @@ files:
601
601
  - lib/bosh/director/deployment_plan/assembler.rb
602
602
  - lib/bosh/director/deployment_plan/compilation_config.rb
603
603
  - lib/bosh/director/deployment_plan/compiled_package.rb
604
+ - lib/bosh/director/deployment_plan/deployment_spec_parser.rb
604
605
  - lib/bosh/director/deployment_plan/dynamic_network.rb
605
606
  - lib/bosh/director/deployment_plan/idle_vm.rb
606
607
  - lib/bosh/director/deployment_plan/instance.rb
@@ -740,7 +741,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
740
741
  version: '0'
741
742
  segments:
742
743
  - 0
743
- hash: 470950328678415738
744
+ hash: -4485791993473408680
744
745
  requirements: []
745
746
  rubyforge_project:
746
747
  rubygems_version: 1.8.23