vm_shepherd 3.1.8 → 3.2.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.
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