summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlinyows <linyows@gmail.com>2018-02-13 10:02:48 +0900
committerlinyows <linyows@gmail.com>2018-02-13 10:02:48 +0900
commit7ddea53f8ad94b71a2b7cb14c30e41d9a5717ce4 (patch)
treee7e40d58e87d312f33eb365b5f166000a4d2ca8b
parent7219d80a59571e99f4b78104b5a3b6b6011afa27 (diff)
downloadchef-7ddea53f8ad94b71a2b7cb14c30e41d9a5717ce4.tar.gz
support behavior for duplicated_fqdns option
Signed-off-by: linyows <linyows@gmail.com>
-rw-r--r--lib/chef/knife/ssh.rb18
-rw-r--r--spec/unit/knife/ssh_spec.rb6
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],