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!("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 110 def install_package(name, version) zypper_package("install", global_options, *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 95 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 127 def lock_package(name, version) zypper_package("addlock", global_options, *options, name, version) end
locked_packages()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 85 def locked_packages @locked_packages ||= begin locked = shell_out!("zypper", "locks") locked.stdout.each_line.map do |line| line.split("|").shift(2).last.strip end end end
packages_all_locked?(names, versions)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 77 def packages_all_locked?(names, versions) names.all? { |n| locked_packages.include? n } end
packages_all_unlocked?(names, versions)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 81 def packages_all_unlocked?(names, versions) names.all? { |n| !locked_packages.include? n } end
purge_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 123 def purge_package(name, version) zypper_package("remove", global_options, *options, "--clean-deps", name, version) end
remove_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 119 def remove_package(name, version) zypper_package("remove", global_options, *options, name, version) end
unlock_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 131 def unlock_package(name, version) zypper_package("removelock", global_options, *options, name, version) end
upgrade_package(name, version)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 114 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 105 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 156 def allow_downgrade "--oldpackage" if new_resource.allow_downgrade end
global_options()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 160 def global_options new_resource.global_options if new_resource.global_options end
gpg_checks()
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 152 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 137 def zip(names, versions) names.zip(versions).map do |n, v| (v.nil? || v.empty?) ? n : "#{n}=#{v}" end end
zypper_package(command, global_options, *options, names, versions)
click to toggle source
# File lib/chef/provider/package/zypper.rb, line 143 def zypper_package(command, global_options, *options, names, versions) zipped_names = zip(names, versions) if zypper_version < 1.0 shell_out!("zypper", global_options, gpg_checks, command, *options, "-y", names) else shell_out!("zypper", global_options, "--non-interactive", gpg_checks, command, *options, zipped_names) end end