Class: Elba::Cli
Overview
The Command Line Interface for Elba.
Instance Method Summary collapse
- #attach(*instances) ⇒ Object
- #attached(balancer_name = nil, porcelain = ) ⇒ Object
- #detach(*instances) ⇒ Object
- #list(with_instances = ) ⇒ Object
Instance Method Details
#attach(*instances) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/elba/cli.rb', line 104 def attach(*instances) elb = if [:to] find_elb(name: [:to]) else case when elbs.size == 0 error "No load balancer available" return when elbs.size == 1 warn "Using default load balancer: #{elbs.first.id}" elbs.first when elbs.size > 1 warn "You must specify an ELB" print_table elbs_with_index choice = ask("Use:", :yellow, limited_to: for_choice).to_i find_elb(choice: choice) end end instances.map do |instance| client.attach(instance, elb, on_success: -> { success "#{instance} successfully attached to #{elb.id}" }, on_failure: ->(reason) { error "Unable to attach #{instance} to #{elb.id}" warn "Reason: #{reason}" } ) end end |
#attached(balancer_name = nil, porcelain = ) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/elba/cli.rb', line 76 def attached(balancer_name = nil, porcelain = [:porcelain]) unless balancer_name error "You must specify an ELB" return end elb = find_elb(name: balancer_name) unless elb error "Could not find balancer" return end instances = elb.reload.instances if porcelain say instances.join(' ') else say " * #{elb.id}" instances.each do |instance_id| success " - #{instance_id}" end end end |
#detach(*instances) ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/elba/cli.rb', line 136 def detach(*instances) elbs.reload.select { |elb| (elb.instances & instances).any? }.tap do |lbs| warn "Unable to find any ELB to detach #{instances.join(', ')}" if lbs.empty? lbs.map do |elb| target_instances = elb.instances & instances client.detach(target_instances, elb, on_success: -> { success "#{target_instances.join(', ')} successfully detached from #{elb.id}" }, on_failure: ->(reason) { error "Unable to detach #{target_instances.join(', ')} from #{elb.id}" warn "Reason: #{reason}" } ) end end end |
#list(with_instances = ) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/elba/cli.rb', line 65 def list(with_instances = [:instances]) say "#{elbs.size} ELB found:" elbs.map do |elb| say " * #{elb.id}" elb.instances.map { |i| success " - #{i}" } if with_instances end end |