class Chef::Provider::Package::Zypper
Public Instance Methods
get_candidate_versions()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 65 def get_candidate_versions package_name_array.map do |package_name| versions[package_name][:candidate_version] end end
get_current_versions()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 71 def get_current_versions package_name_array.map do |package_name| versions[package_name][:current_version] end end
get_versions(package_name)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 33 def get_versions(package_name) candidate_version = current_version = nil is_installed = false logger.trace("#{new_resource} checking zypper") status = shell_out_compact_timeout!("zypper", "--non-interactive", "info", package_name) status.stdout.each_line do |line| case line when /^Version *: (.+) *$/ candidate_version = $1.strip logger.trace("#{new_resource} version #{candidate_version}") when /^Installed *: Yes.*$/ # http://rubular.com/r/9StcAMjOn6 is_installed = true logger.trace("#{new_resource} is installed") when /^Status *: out-of-date \(version (.+) installed\) *$/ current_version = $1.strip logger.trace("#{new_resource} out of date version #{current_version}") end end current_version = candidate_version if is_installed { current_version: current_version, candidate_version: candidate_version } end
install_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 100 def install_package(name, version) zypper_package("install", *options, "--auto-agree-with-licenses", allow_downgrade, name, version) end
load_current_resource()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 85 def load_current_resource @current_resource = Chef::Resource::ZypperPackage.new(new_resource.name) current_resource.package_name(new_resource.package_name) @candidate_version = get_candidate_versions current_resource.version(get_current_versions) current_resource end
lock_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 117 def lock_package(name, version) zypper_package("addlock", *options, name, version) end
package_locked(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 77 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 } end
purge_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 113 def purge_package(name, version) zypper_package("remove", *options, "--clean-deps", name, version) end
remove_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 109 def remove_package(name, version) zypper_package("remove", *options, name, version) end
unlock_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 121 def unlock_package(name, version) zypper_package("removelock", *options, name, version) end
upgrade_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 104 def upgrade_package(name, version) # `zypper install` upgrades packages, we rely on the idempotency checks to get action :install behavior install_package(name, version) end
versions()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 55 def versions @versions ||= begin raw_versions = package_name_array.map do |package_name| get_versions(package_name) end Hash[*package_name_array.zip(raw_versions).flatten] end end
zypper_version()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 95 def zypper_version @zypper_version ||= `zypper -V 2>&1`.scan(/\d+/).join(".").to_f end
Private Instance Methods
allow_downgrade()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 146 def allow_downgrade "--oldpackage" if new_resource.allow_downgrade end
gpg_checks()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 142 def gpg_checks "--no-gpg-checks" unless new_resource.gpg_check end
zip(names, versions)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 127 def zip(names, versions) names.zip(versions).map do |n, v| (v.nil? || v.empty?) ? n : "#{n}=#{v}" end end
zypper_package(command, *options, names, versions)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 133 def zypper_package(command, *options, names, versions) zipped_names = zip(names, versions) if zypper_version < 1.0 shell_out_compact_timeout!("zypper", gpg_checks, command, *options, "-y", names) else shell_out_compact_timeout!("zypper", "--non-interactive", gpg_checks, command, *options, zipped_names) end end