class AwsBlueGreenDeploy::DeployController
Public Class Methods
new(as_controller, lb_controller)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 3 def initialize(as_controller, lb_controller) @as_controller = as_controller @lb_controller = lb_controller end
Public Instance Methods
create_new_launch_config(name, image, instance_type, key_pair, security_groups, user_data)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 8 def create_new_launch_config(name, image, instance_type, key_pair, security_groups, user_data) options = {:key_pair => key_pair, :security_groups => security_groups, :user_data => user_data} launch_config = @as_controller.launch_configurations.create(name, image, instance_type, options) end
in_rotation_groups(elb_name)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 26 def in_rotation_groups(elb_name) target_groups = groups_associated_to_elb(elb_name) in_rotation_groups = [] in_rotation_instances = @lb_controller.load_balancers[elb_name].instances.map{|instance| instance.id} target_groups.each do |group| group_instances = group.ec2_instances.map{|instance| instance.id} if (in_rotation_instances & group_instances).count > 0 in_rotation_groups.push(group) end end in_rotation_groups end
out_rotation_groups(elb_name)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 13 def out_rotation_groups(elb_name) target_groups = groups_associated_to_elb(elb_name) in_rotation_groups = in_rotation_groups(elb_name) out_rotation_groups = [] target_groups.each do |target_group| in_rotation_groups.each do |ir_group| out_rotation_groups.push(target_group) unless target_group.name == ir_group.name end end out_rotation_groups.each{|group| puts group.name} end
rotate_groups(groups, elb_name)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 43 def rotate_groups(groups, elb_name) instance_ids = [] groups.each do |group| group.ec2_instances.each{|instance| instance_ids.push(instance.instance_id)} end instance_ids.each{|instance_id| puts instance_id} instance_ids.each{|instance_id| @lb_controller.load_balancers[elb_name].instances.deregister(instance_id)} end
update_groups_lc_and_scale_up(autoscaling_groups, launch_config, asg_size)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 39 def update_groups_lc_and_scale_up(autoscaling_groups, launch_config, asg_size) autoscaling_groups.each{|group| replace_launch_config(group, launch_config, asg_size)} end
Private Instance Methods
groups_associated_to_elb(elb_name)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 57 def groups_associated_to_elb(elb_name) @as_controller.groups.select{|group| group.load_balancer_names.include?(elb_name)} end
replace_launch_config(group, launch_config, asg_size)
click to toggle source
# File lib/aws_blue_green_deploy/deploy_controller.rb, line 53 def replace_launch_config(group, launch_config, asg_size) group.update(desired_capacity: asg_size, min_size: asg_size, max_size: asg_size, launch_configuration: launch_config) end