Module: OpsworksRollingDeploy::ElbMethods
- Included in:
- Services::DeployService
- Defined in:
- lib/opsworks_rolling_deploy/elb_methods.rb
Constant Summary collapse
- ELB_STATUS_INSERVICE =
"InService"- ELB_STATUS_OUTOFSERVICE =
"OutOfService"
Instance Method Summary collapse
- #add_into_pools(_stack, instance, pools) ⇒ Object
- #deregister_instances_from_load_balancer(elb, instance_id) ⇒ Object
- #get_elb_status(elb, instance_id) ⇒ Object
- #pools_of_instance(_stack, instance) ⇒ Object
- #register_instances_with_load_balancer(elb, instance_id) ⇒ Object
- #remove_from_pools(stack, _app, instance) ⇒ Object
- #wait_status(elb, instance_id, status) ⇒ Object
Instance Method Details
#add_into_pools(_stack, instance, pools) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/opsworks_rolling_deploy/elb_methods.rb', line 26 def add_into_pools(_stack, instance, pools) pools.each do |elb| info 'Instance', instance.hostname, instance.ec2_instance_id, "Adding back to pool #{elb.elastic_load_balancer_name}" register_instances_with_load_balancer(elb, instance.ec2_instance_id) unless pretend? end pools.each do |elb| wait_status(elb, instance.ec2_instance_id, ELB_STATUS_INSERVICE) end unless pretend? end |
#deregister_instances_from_load_balancer(elb, instance_id) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/opsworks_rolling_deploy/elb_methods.rb', line 37 def deregister_instances_from_load_balancer(elb, instance_id) elb_client(elb.region).deregister_instances_from_load_balancer({ load_balancer_name: elb.elastic_load_balancer_name, instances: [ # required { instance_id: instance_id } ] }) end |
#get_elb_status(elb, instance_id) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/opsworks_rolling_deploy/elb_methods.rb', line 55 def get_elb_status(elb, instance_id) elb_client(elb.region).describe_instance_health({ load_balancer_name: elb.elastic_load_balancer_name, instances: [ {instance_id: instance_id} ] }).instance_states.last.state end |
#pools_of_instance(_stack, instance) ⇒ Object
6 7 8 9 10 |
# File 'lib/opsworks_rolling_deploy/elb_methods.rb', line 6 def pools_of_instance(_stack, instance) ops_client.describe_elastic_load_balancers({ layer_ids: instance.layer_ids, }).elastic_load_balancers end |
#register_instances_with_load_balancer(elb, instance_id) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/opsworks_rolling_deploy/elb_methods.rb', line 46 def register_instances_with_load_balancer(elb, instance_id) elb_client(elb.region).register_instances_with_load_balancer({ load_balancer_name: elb.elastic_load_balancer_name, instances: [ # required { instance_id: instance_id } ] }) end |
#remove_from_pools(stack, _app, instance) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/opsworks_rolling_deploy/elb_methods.rb', line 12 def remove_from_pools(stack, _app, instance) # XXX I did not figure out how to filter instances running the app pools = pools_of_instance(stack, instance).each do |elb| info 'Instance', instance.hostname, instance.ec2_instance_id, "Remove from pool #{elb.elastic_load_balancer_name}" deregister_instances_from_load_balancer(elb, instance.ec2_instance_id) unless pretend? end pools.each do |elb| wait_status(elb, instance.ec2_instance_id, ELB_STATUS_OUTOFSERVICE) end unless pretend? pools end |
#wait_status(elb, instance_id, status) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/opsworks_rolling_deploy/elb_methods.rb', line 62 def wait_status(elb, instance_id, status) $stdout.write get_elb_status(elb, instance_id) 100.times do $stdout.write '.' instance_status = get_elb_status(elb, instance_id) if instance_status == status puts instance_status return true end sleep 5 end fail "Time out while waiting status" end |