diff options
| author | Oliver Hookins <ohookins@gmail.com> | 2011-05-02 22:15:21 +0200 |
|---|---|---|
| committer | Max Martin <max@puppetlabs.com> | 2011-05-13 14:45:15 -0700 |
| commit | 8b76be30cc1b015d17c5596c3d1b2be86572f9b8 (patch) | |
| tree | 74363cc166b49590547be5683ccbd77373dd3294 | |
| parent | 1f438da968e1583d900903407c2e5b17648fa937 (diff) | |
| download | puppet-8b76be30cc1b015d17c5596c3d1b2be86572f9b8.tar.gz puppet-8b76be30cc1b015d17c5596c3d1b2be86572f9b8.tar.xz puppet-8b76be30cc1b015d17c5596c3d1b2be86572f9b8.zip | |
(#3836) External nodes should only capture stdout
This patch prevents stdout and stderr from being combined by Puppet::Util.execute, when used by Puppet::Indirector::Exec for external nodes.
| -rw-r--r-- | lib/puppet/indirector/exec.rb | 6 | ||||
| -rwxr-xr-x | spec/unit/indirector/exec_spec.rb | 8 | ||||
| -rwxr-xr-x | spec/unit/indirector/node/exec_spec.rb | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/lib/puppet/indirector/exec.rb b/lib/puppet/indirector/exec.rb index 4683eda0f..8ea13ff95 100644 --- a/lib/puppet/indirector/exec.rb +++ b/lib/puppet/indirector/exec.rb @@ -16,8 +16,8 @@ class Puppet::Indirector::Exec < Puppet::Indirector::Terminus private # Proxy the execution, so it's easier to test. - def execute(command) - Puppet::Util.execute(command) + def execute(command, arguments) + Puppet::Util.execute(command,arguments) end # Call the external command and see if it returns our output. @@ -33,7 +33,7 @@ class Puppet::Indirector::Exec < Puppet::Indirector::Terminus # Add our name to it. external_command << name begin - output = execute(external_command) + output = execute(external_command, :combine => false) rescue Puppet::ExecutionFailure => detail raise Puppet::Error, "Failed to find #{name} via exec: #{detail}" end diff --git a/spec/unit/indirector/exec_spec.rb b/spec/unit/indirector/exec_spec.rb index de37f2775..89d91a3ee 100755 --- a/spec/unit/indirector/exec_spec.rb +++ b/spec/unit/indirector/exec_spec.rb @@ -33,22 +33,22 @@ describe Puppet::Indirector::Exec do end it "should execute the command with the object name as the only argument" do - @searcher.expects(:execute).with(%w{/echo foo}) + @searcher.expects(:execute).with(%w{/echo foo}, :combine => false) @searcher.find(@request) end it "should return the output of the script" do - @searcher.expects(:execute).with(%w{/echo foo}).returns("whatever") + @searcher.expects(:execute).with(%w{/echo foo}, :combine => false).returns("whatever") @searcher.find(@request).should == "whatever" end it "should return nil when the command produces no output" do - @searcher.expects(:execute).with(%w{/echo foo}).returns(nil) + @searcher.expects(:execute).with(%w{/echo foo}, :combine => false).returns(nil) @searcher.find(@request).should be_nil end it "should raise an exception if there's an execution failure" do - @searcher.expects(:execute).with(%w{/echo foo}).raises(Puppet::ExecutionFailure.new("message")) + @searcher.expects(:execute).with(%w{/echo foo}, :combine => false).raises(Puppet::ExecutionFailure.new("message")) lambda {@searcher.find(@request)}.should raise_exception(Puppet::Error, 'Failed to find foo via exec: message') end diff --git a/spec/unit/indirector/node/exec_spec.rb b/spec/unit/indirector/node/exec_spec.rb index d214a5ef6..ebf28bd9a 100755 --- a/spec/unit/indirector/node/exec_spec.rb +++ b/spec/unit/indirector/node/exec_spec.rb @@ -32,7 +32,7 @@ describe Puppet::Node::Exec do @result = {} # Use a local variable so the reference is usable in the execute definition. result = @result - @searcher.meta_def(:execute) do |command| + @searcher.meta_def(:execute) do |command, arguments| return YAML.dump(result) end |
