Skip to content

Commit

Permalink
Calling "pkg update -n" on Solaris too frequently causes problems wit…
Browse files Browse the repository at this point in the history
…h zones

On a Solaris system, running "pkg update -n" in the global zone at the same time that it is running in a non-global zone, can cause the command to fail in one or the other.

If we have puppet running this command, it causes the puppet run to fail for that specific resource.

This patch removes some unnecessary calls to this command, and appropriately updates rspec.
  • Loading branch information
alanhargreaves committed Mar 25, 2024
1 parent 1a53bf7 commit 3fd65d7
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
4 changes: 4 additions & 0 deletions lib/puppet/provider/package/pkg.rb
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,10 @@ def insync?(is)
warning(_("Implicit version %{should} has %{n} possible matches") % { should: should, n: n })
end
potential_matches.each { |p|
# If the version that we match is installed then we don't need
# to check if it's installed (or installable), just return true
return true if is != :absent && p[:status] == 'installed'

command = is == :absent ? 'install' : 'update'
options = ['-n']
options.concat(join_options(@resource[:install_options])) if @resource[:install_options]
Expand Down
18 changes: 6 additions & 12 deletions spec/unit/provider/package/pkg_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -286,13 +286,9 @@ def self.it_should_respond_to(*actions)

it "should install specific version(2)" do
resource[:ensure] = '0.0.8'
expect(provider).to receive(:properties).and_return({:mark => :hold})
expect(Puppet::Util::Execution).to receive(:execute)
.with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
expect(Puppet::Util::Execution).to receive(:execute)
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
.and_return(Puppet::Util::Execution::ProcessOutput.new('pkg://foo/dummy@0.0.7,5.11-0.151006:20131230T130000Z installed -----', 0))
expect(Puppet::Util::Execution).to receive(:execute)
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
.and_return(Puppet::Util::Execution::ProcessOutput.new('pkg://foo/dummy@0.0.7,5.11-0.151006:20131230T13000 installed -----', 0)).exactly(2).times
expect(Puppet::Util::Execution).to receive(:execute)
.with(['/bin/pkg', 'update', *hash[:flags], 'dummy@0.0.8'], {:failonfail => false, :combine => true})
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
Expand All @@ -301,11 +297,9 @@ def self.it_should_respond_to(*actions)

it "should downgrade to specific version" do
resource[:ensure] = '0.0.7'
expect(provider).to receive(:properties).and_return({:mark => :hold})
expect(provider).to receive(:query).with(no_args).and_return({:ensure => '0.0.8,5.11-0.151106:20131230T130000Z'})
expect(Puppet::Util::Execution).to receive(:execute)
.with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
expect(Puppet::Util::Execution).to receive(:execute)
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
.and_return(Puppet::Util::Execution::ProcessOutput.new('pkg://foo/dummy@0.0.8,5.11-0.151106:20131230T130000Z installed -----', 0)).exactly(2).times
expect(Puppet::Util::Execution).to receive(:execute)
.with(['/bin/pkg', 'update', *hash[:flags], 'dummy@0.0.7'], {:failonfail => false, :combine => true})
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
Expand Down

0 comments on commit 3fd65d7

Please sign in to comment.