diff options
author | linyows <linyows@gmail.com> | 2018-02-13 10:02:48 +0900 |
---|---|---|
committer | linyows <linyows@gmail.com> | 2018-02-13 10:02:48 +0900 |
commit | 7ddea53f8ad94b71a2b7cb14c30e41d9a5717ce4 (patch) | |
tree | e7e40d58e87d312f33eb365b5f166000a4d2ca8b | |
parent | 7219d80a59571e99f4b78104b5a3b6b6011afa27 (diff) | |
download | chef-7ddea53f8ad94b71a2b7cb14c30e41d9a5717ce4.tar.gz |
support behavior for duplicated_fqdns option
Signed-off-by: linyows <linyows@gmail.com>
-rw-r--r-- | lib/chef/knife/ssh.rb | 18 | ||||
-rw-r--r-- | spec/unit/knife/ssh_spec.rb | 6 |
2 files changed, 13 insertions, 11 deletions
diff --git a/lib/chef/knife/ssh.rb b/lib/chef/knife/ssh.rb index b824f5262a..abc372dd20 100644 --- a/lib/chef/knife/ssh.rb +++ b/lib/chef/knife/ssh.rb @@ -123,10 +123,11 @@ class Chef :boolean => true, :proc => Proc.new { :raise } - option :skip_on_duplicated_fqdns, - :long => "--skip-on-duplicated-fqdns", - :description => "Skip exits even if FQDNs are duplicated", - :boolean => true + option :duplicated_fqdns, + :long => "--duplicated-fqdns", + :description => "Behavior if FQDNs are duplicated, ignored by default", + :proc => Proc.new { |key| Chef::Config[:knife][:duplicated_fqdns] = key.strip.to_sym }, + :default => :ignore option :tmux_split, :long => "--tmux-split", @@ -182,13 +183,14 @@ class Chef end exit 10 end - unless config[:skip_on_duplicated_fqdns] + if %i(warn fatal).include?(config[:duplicated_fqdns]) fqdns = list.map { |v| v[0] } if fqdns.count != fqdns.uniq.count duplicated_fqdns = fqdns.uniq - ui.warn("SSH #{duplicated_fqdns.count > 1 ? 'nodes are' : 'node is'} " + - "duplicated: #{duplicated_fqdns.join(',')}") - exit 10 + ui.send(config[:duplicated_fqdns], + "SSH #{duplicated_fqdns.count > 1 ? 'nodes are' : 'node is'} " + + "duplicated: #{duplicated_fqdns.join(',')}") + exit 10 if config[:duplicated_fqdns] == :fatal end end session_from_list(list) diff --git a/spec/unit/knife/ssh_spec.rb b/spec/unit/knife/ssh_spec.rb index 1628fa1dad..9d7fcb6f9e 100644 --- a/spec/unit/knife/ssh_spec.rb +++ b/spec/unit/knife/ssh_spec.rb @@ -138,15 +138,15 @@ describe Chef::Knife::Ssh do end end - context "when there are some hosts found but IPs duplicated" do + context "when there are some hosts found but IPs duplicated if duplicated_fqdns option sets :fatal" do before do - @knife.config[:skip_on_duplicated_fqdns] = false + @knife.config[:duplicated_fqdns] = :fatal @node_foo["fqdn"] = "foo.example.org" @node_bar["fqdn"] = "foo.example.org" end it "should raise a specific error" do - expect(@knife.ui).to receive(:warn).with(/^SSH node is duplicated: foo\.example\.org/) + expect(@knife.ui).to receive(:fatal).with(/^SSH node is duplicated: foo\.example\.org/) expect(@knife).to receive(:exit).with(10) expect(@knife).to receive(:session_from_list).with([ ["foo.example.org", nil, nil], |