vm_shepherd 3.1.8 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ce3022dc144a0fbacf8b1f888dee0bb1d7ecd62
4
- data.tar.gz: f4b46bc9b6a7b628e55197eebe7e5b2edbf852af
3
+ metadata.gz: 7934b21954a88c73bdfb023a264734be53b0ce6d
4
+ data.tar.gz: 9d0c1971e9eab775684389e200f1f826827d325a
5
5
  SHA512:
6
- metadata.gz: f42509c409a72903021dc28fc309ad2b3cc932cc4cb221b914ef39e0a5be9c50ac2264b272ec60e71db4b117fb8c1028f262b8b3abfc2312932053fd046e7369
7
- data.tar.gz: 35646ccd3fa5b9cb4e1aedf84a390d54a9dd719e7e7d54e5140bfed557f56d3b23f6af66a0002947f308fdd0a2cc4b4274d86ec0b4593a09b6c36ac919256e60
6
+ metadata.gz: b182c70312c21509a5536e84669520c757381cf4068de1cc676ff54c77b0dde8c4fac6e188bec2a995c72d7af3c67217b45f60228aa5add9a129444ae7105e32
7
+ data.tar.gz: 918c50edb94876dc9638d9858804409a907690100136bf1b53b747617fc5d6417f3fb39cebd50f157fb131415d27ec6f25ce7de0a7bc26d60a0c06f0c6c199f3
@@ -50,7 +50,7 @@ module VmShepherd
50
50
  else
51
51
  if ROLLBACK_COMPLETE == status
52
52
  logger.info("Rolling back stack [#{stack.name}]; events listed below")
53
- stack.events.select{|event| event.resource_status_reason}.each do |failed_event|
53
+ stack.events.select { |event| event.resource_status_reason }.each do |failed_event|
54
54
  logger.info("#{failed_event.resource_properties} #{failed_event.resource_status_reason}")
55
55
  end
56
56
  stack.delete
@@ -213,9 +213,7 @@ module VmShepherd
213
213
  end
214
214
 
215
215
  def create_elb(stack, elb_config)
216
- elb = AWS::ELB.new
217
216
  elb_params = {
218
- load_balancer_name: elb_config['name'],
219
217
  listeners: [],
220
218
  subnets: [subnet_id(stack, elb_config)],
221
219
  security_groups: [create_security_group(stack, elb_config).security_group_id]
@@ -228,8 +226,18 @@ module VmShepherd
228
226
  }
229
227
  end
230
228
 
231
- logger.info('Creating an ELB')
232
- elb.client.create_load_balancer(elb_params)
229
+ logger.info("Creating #{elb_config['name']} ELB")
230
+ elb = AWS::ELB.new.load_balancers.create(elb_config['name'], elb_params)
231
+ port = elb_config.fetch('health_check', {})['ping_target'] || 'TCP:80'
232
+ elb.configure_health_check(
233
+ {
234
+ target: port,
235
+ healthy_threshold: 2,
236
+ unhealthy_threshold: 5,
237
+ interval: 5,
238
+ timeout: 2,
239
+ }
240
+ )
233
241
  end
234
242
 
235
243
  def create_security_group(stack, elb_config)
@@ -220,19 +220,8 @@ module VmShepherd
220
220
  end
221
221
 
222
222
  def ami_elb_config
223
- if @env_config.dig('elbs')
224
- {
225
- 'elbs' => @env_config.dig('elbs').map do |elb|
226
- {
227
- 'name' => elb.dig('name'),
228
- 'port_mappings' => elb.dig('port_mappings'),
229
- 'stack_output_keys' => elb.dig('stack_output_keys'),
230
- }
231
- end
232
- }
233
- else
234
- {}
235
- end
223
+ return {} unless @env_config.dig('elbs')
224
+ {'elbs' => @env_config.dig('elbs')}
236
225
  end
237
226
 
238
227
  def openstack_vm_manager(vm_shepherd_config)
@@ -1,3 +1,3 @@
1
1
  module VmShepherd
2
- VERSION = '3.1.8'.freeze
2
+ VERSION = '3.2.0'.freeze
3
3
  end
@@ -61,8 +61,8 @@ module VmShepherd
61
61
  let(:cfm) { instance_double(AWS::CloudFormation, stacks: stack_collection) }
62
62
  let(:stack) { instance_double(AWS::CloudFormation::Stack, status: 'CREATE_COMPLETE') }
63
63
  let(:stack_collection) { instance_double(AWS::CloudFormation::StackCollection) }
64
- let(:elb) { instance_double(AWS::ELB, client: elb_client) }
65
- let(:elb_client) { double(AWS::ELB::Client) }
64
+ let(:elb) { instance_double(AWS::ELB, load_balancers: load_balancers) }
65
+ let(:load_balancers) { instance_double(AWS::ELB::LoadBalancerCollection) }
66
66
 
67
67
  before do
68
68
  allow(AWS::CloudFormation).to receive(:new).and_return(cfm)
@@ -120,6 +120,9 @@ module VmShepherd
120
120
  {
121
121
  'name' => 'elb-1-name',
122
122
  'port_mappings' => [[1111, 11]],
123
+ 'health_check' => {
124
+ 'ping_target' => 'TCP:1234',
125
+ },
123
126
  'stack_output_keys' => {
124
127
  'vpc_id' => 'vpc_id',
125
128
  'subnet_id' => 'private_subnet',
@@ -166,6 +169,9 @@ module VmShepherd
166
169
  let(:elb_1_security_group) { instance_double(AWS::EC2::SecurityGroup, security_group_id: 'elb-1-security-group-id') }
167
170
  let(:elb_2_security_group) { instance_double(AWS::EC2::SecurityGroup, security_group_id: 'elb-2-security-group-id') }
168
171
 
172
+ let(:elb_1) { instance_double(AWS::ELB::LoadBalancer, configure_health_check: nil) }
173
+ let(:elb_2) { instance_double(AWS::ELB::LoadBalancer) }
174
+
169
175
  before do
170
176
  allow(ec2).to receive(:client).and_return(ec2_client)
171
177
  allow(ec2_client).to receive(:create_security_group).with(hash_including(group_name: 'fake-stack-name_elb-1-name')).
@@ -175,7 +181,7 @@ module VmShepherd
175
181
  allow(ec2).to receive(:security_groups).and_return(security_groups)
176
182
  allow(elb_1_security_group).to receive(:authorize_ingress)
177
183
  allow(elb_2_security_group).to receive(:authorize_ingress)
178
- allow(elb_client).to receive(:create_load_balancer)
184
+ allow(load_balancers).to receive(:create).and_return(elb_1)
179
185
  end
180
186
 
181
187
  it 'creates and attaches a security group for the ELBs' do
@@ -199,21 +205,30 @@ module VmShepherd
199
205
  end
200
206
 
201
207
  it 'attaches an elb with the name of the stack for the ELBs' do
208
+ health_check_params = {
209
+ healthy_threshold: 2,
210
+ unhealthy_threshold: 5,
211
+ interval: 5,
212
+ timeout: 2,
213
+ }
202
214
  elb_1_params = {
203
- load_balancer_name: 'elb-1-name',
204
215
  listeners: [{protocol: 'TCP', load_balancer_port: 1111, instance_protocol: 'TCP', instance_port: 11}],
205
216
  subnets: ['fake-subnet-id'],
206
217
  security_groups: ['elb-1-security-group-id']
207
218
  }
208
- expect(elb_client).to receive(:create_load_balancer).with(elb_1_params)
219
+ expect(load_balancers).to receive(:create).with('elb-1-name', elb_1_params).and_return(elb_1)
220
+ expect(elb_1).to receive(:configure_health_check).with(
221
+ health_check_params.merge(target: 'TCP:1234')
222
+ )
209
223
  elb_2_params = {
210
- load_balancer_name: 'elb-2-name',
211
224
  listeners: [{protocol: 'TCP', load_balancer_port: 2222, instance_protocol: 'TCP', instance_port: 22}],
212
225
  subnets: ['fake-subnet-id'],
213
226
  security_groups: ['elb-2-security-group-id']
214
227
  }
215
- expect(elb_client).to receive(:create_load_balancer).with(elb_2_params)
216
-
228
+ expect(load_balancers).to receive(:create).with('elb-2-name', elb_2_params).and_return(elb_2)
229
+ expect(elb_2).to receive(:configure_health_check).with(
230
+ health_check_params.merge(target: 'TCP:80')
231
+ )
217
232
  ami_manager.prepare_environment(cloudformation_template_file.path)
218
233
  end
219
234
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vm_shepherd
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.8
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ops Manager Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-20 00:00:00.000000000 Z
11
+ date: 2016-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-v1