diff --git a/lib/chef/knife/rackspace_load_balancer_add_node.rb b/lib/chef/knife/rackspace_load_balancer_add_node.rb index 980341e..067d1d6 100644 --- a/lib/chef/knife/rackspace_load_balancer_add_node.rb +++ b/lib/chef/knife/rackspace_load_balancer_add_node.rb @@ -121,6 +121,8 @@ def run target_load_balancers.each do |lb| ui.output("Opening #{lb[:name]}") balancer = lb_connection.get_load_balancer(lb[:id]) + lb_nodes = balancer.list_nodes + lb_node_ips = lb_nodes.map {|lbn| lbn[:address]} if config[:auto_resolve_port] nodes_for_balancer = nodes.dup @@ -136,11 +138,15 @@ def run end nodes_for_balancer.each do |node| - ui.output("Adding node #{node[:address]}") - if balancer.create_node(node) - ui.output(ui.color("Success", :green)) + if lb_node_ips.include?(node[:address]) + ui.warn("Skipping node #{node[:address]}") else - ui.output(ui.color("Failed", :red)) + ui.output("Adding node #{node[:address]}") + if balancer.create_node(node) + ui.output(ui.color("Success", :green)) + else + ui.output(ui.color("Failed", :red)) + end end end end diff --git a/lib/chef/knife/rackspace_load_balancer_show.rb b/lib/chef/knife/rackspace_load_balancer_show.rb index 61ff633..be1aa3f 100644 --- a/lib/chef/knife/rackspace_load_balancer_show.rb +++ b/lib/chef/knife/rackspace_load_balancer_show.rb @@ -24,6 +24,7 @@ def run load_balancer_info = { :name => load_balancer.name, + :id => load_balancer.id, :protocol => load_balancer.protocol, :port => load_balancer.port, :status => ui.color(load_balancer.status, load_balancer.status == "ACTIVE" ? :green : :red)