Skip to content
This repository has been archived by the owner on Aug 27, 2020. It is now read-only.

Commit

Permalink
fix add / delete nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Vermaak committed Apr 11, 2012
1 parent 138c81b commit 5947fad
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 33 deletions.
20 changes: 10 additions & 10 deletions lib/chef/knife/rackspace_load_balancer_add_node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,13 @@ def run
target_load_balancers = lb_connection.list_load_balancers

if config[:only]
only = config[:only].split(",")
target_load_balancers = target_load_balancers.select {|lb| lb.id == id}
only = config[:only].split(",").map(&:to_s)
target_load_balancers = target_load_balancers.select {|lb| only.include? lb[:id].to_s}
end

if config[:except]
except = config[:except].split(",")
target_load_balancers = target_load_balancers.reject {|lb| lb.id == id}
except = config[:except].split(",").map(&:to_s)
target_load_balancers = target_load_balancers.reject {|lb| exclude.include? lb[:id].to_s}
end

if target_load_balancers.empty?
Expand All @@ -106,20 +106,21 @@ def run
end

ui.output(format_for_display({
:targets => target_load_balancers,
:targets => target_load_balancers.map {|lb| lb[:name]},
:nodes => nodes
}))

unless config[:force]
ui.confirm("Do you really want to add these nodes?")
ui.confirm("Do you really want to add these nodes")
end

target_load_balancers.each do |lb|
ui.output("Opening #{lb.name}")
ui.output("Opening #{lb[:name]}")
balancer = lb_connection.get_load_balancer(lb[:id])

nodes.each do |node|
ui.output("Adding node #{node[:ip]}")
if lb.create_node(node)
ui.output("Adding node #{node[:address]}")
if balancer.create_node(node)
ui.output(ui.color("Success", :green))
else
ui.output(ui.color("Failed", :red))
Expand All @@ -131,4 +132,3 @@ def run
end
end
end

43 changes: 20 additions & 23 deletions lib/chef/knife/rackspace_load_balancer_delete_node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
require 'cloudlb'

module KnifePlugins
class RackspaceLoadBalancerRemoveNode < Chef::Knife
class RackspaceLoadBalancerDeleteNode < Chef::Knife
include Chef::Knife::RackspaceBase
include Chef::Knife::RackspaceLoadBalancerBase
include Chef::Knife::RackspaceLoadBalancerNodes

banner "knife rackspace load balancer remove node (options)"
banner "knife rackspace load balancer delete node (options)"

option :force,
:long => "--force",
Expand Down Expand Up @@ -60,12 +60,7 @@ def run
})

nodes = node_ips.map do |ip|
{
:address => ip,
:port => config[:port],
:condition => config[:condition],
:weight => config[:weight]
}
{ :address => ip }
end

if nodes.empty?
Expand All @@ -76,13 +71,13 @@ def run
target_load_balancers = lb_connection.list_load_balancers

if config[:only]
only = config[:only].split(",")
target_load_balancers = target_load_balancers.select {|lb| lb.id == id}
only = config[:only].split(",").map(&:to_s)
target_load_balancers = target_load_balancers.select {|lb| only.include? lb[:id].to_s}
end

if config[:except]
except = config[:except].split(",")
target_load_balancers = target_load_balancers.reject {|lb| lb.id == id}
except = config[:except].split(",").map(&:to_s)
target_load_balancers = target_load_balancers.reject {|lb| exclude.include? lb[:id].to_s}
end

if target_load_balancers.empty?
Expand All @@ -91,24 +86,26 @@ def run
end

ui.output(format_for_display({
:targets => target_load_balancers,
:targets => target_load_balancers.map {|lb| lb[:name]},
:nodes => nodes
}))

unless config[:force]
ui.confirm("Do you really want to remove these nodes?")
ui.confirm("Do you really want to remove these nodes")
end

target_load_balancers.each do |lb|
ui.output("Opening #{lb.name}")

nodes.each do |node|
ui.output("Removing node #{node[:ip]}")
if lb_node = lb.get_node(node) && lb_node.destroy!
ui.output(ui.color("Success", :green))
else
# node.destroy! would raise an exception
ui.output(ui.color("Failed", :red))
ui.output("Opening #{lb[:name]}")
balancer = lb_connection.get_load_balancer(lb[:id])

lb_nodes = balancer.list_nodes
lb_nodes.each do |lb_node_hash|
if node_ips.include? lb_node_hash[:address].to_s
lb_node = balancer.get_node(lb_node_hash[:id])
ui.output("Removing node #{lb_node.address}")
if lb_node.destroy!
ui.output(ui.color("Success", :green))
end
end
end
end
Expand Down

0 comments on commit 5947fad

Please sign in to comment.