summaryrefslogtreecommitdiff
path: root/lib/chef
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2018-04-26 15:10:19 -0700
committerGitHub <noreply@github.com>2018-04-26 15:10:19 -0700
commit4155c46cdc4bca49f75229589a875e1bba7baf09 (patch)
treef407039d73729398614fe3c82480aa24d43b03f4 /lib/chef
parent0a102728d4d9bda79a073c4ed8519297cfff7d52 (diff)
parent5ba51335a24fe014b938df9c4983b1e2f3336210 (diff)
downloadchef-4155c46cdc4bca49f75229589a875e1bba7baf09.tar.gz
Merge pull request #7138 from RoboticCheese/roboticcheese/package-locking-nomethoderror
Fix NoMethodError when (un)locking single packages in apt and zypper
Diffstat (limited to 'lib/chef')
-rw-r--r--lib/chef/provider/package/apt.rb22
-rw-r--r--lib/chef/provider/package/zypper.rb22
2 files changed, 32 insertions, 12 deletions
diff --git a/lib/chef/provider/package/apt.rb b/lib/chef/provider/package/apt.rb
index 2692ec9f15..798abf4680 100644
--- a/lib/chef/provider/package/apt.rb
+++ b/lib/chef/provider/package/apt.rb
@@ -70,12 +70,22 @@ class Chef
@candidate_version ||= get_candidate_versions
end
- def package_locked(name, version)
- locked = shell_out_compact_timeout!("apt-mark", "showhold")
- locked_packages = locked.stdout.each_line.map do |line|
- line.strip
- end
- name.all? { |n| locked_packages.include? n }
+ def packages_all_locked?(names, versions)
+ names.all? { |n| locked_packages.include? n }
+ end
+
+ def packages_all_unlocked?(names, versions)
+ names.all? { |n| !locked_packages.include? n }
+ end
+
+ def locked_packages
+ @locked_packages ||=
+ begin
+ locked = shell_out_compact_timeout!("apt-mark", "showhold")
+ locked.stdout.each_line.map do |line|
+ line.strip
+ end
+ end
end
def install_package(name, version)
diff --git a/lib/chef/provider/package/zypper.rb b/lib/chef/provider/package/zypper.rb
index 7d97bf310d..c2638fbfc1 100644
--- a/lib/chef/provider/package/zypper.rb
+++ b/lib/chef/provider/package/zypper.rb
@@ -75,12 +75,22 @@ class Chef
end
end
- def package_locked(name, version)
- locked = shell_out_compact_timeout!("zypper", "locks")
- locked_packages = locked.stdout.each_line.map do |line|
- line.split("|").shift(2).last.strip
- end
- name.all? { |n| locked_packages.include? n }
+ def packages_all_locked?(names, versions)
+ names.all? { |n| locked_packages.include? n }
+ end
+
+ def packages_all_unlocked?(names, versions)
+ names.all? { |n| !locked_packages.include? n }
+ end
+
+ def locked_packages
+ @locked_packages ||=
+ begin
+ locked = shell_out_compact_timeout!("zypper", "locks")
+ locked.stdout.each_line.map do |line|
+ line.split("|").shift(2).last.strip
+ end
+ end
end
def load_current_resource