summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@chef.io>2019-07-19 12:51:27 -0700
committerGitHub <noreply@github.com>2019-07-19 12:51:27 -0700
commit34332e0b8132936234014eed32614894e21d3ee5 (patch)
tree98d3fb7d45c0dc4ab19f67dd192d1104333083d2
parent37f0c23e93a346428919da44b85d22e11c3d8fb1 (diff)
parenta4f2ed66decfa4dd5e7c66d0288953ca457cea3a (diff)
downloadchef-34332e0b8132936234014eed32614894e21d3ee5.tar.gz
dnf_package fixes for RHEL8 (#8754)
dnf_package fixes for RHEL8
-rw-r--r--lib/chef/provider/package/dnf/dnf_helper.py16
-rw-r--r--lib/chef/resource/dnf_package.rb4
-rw-r--r--spec/functional/resource/dnf_package_spec.rb10
-rw-r--r--spec/spec_helper.rb2
-rw-r--r--spec/support/platform_helpers.rb8
5 files changed, 32 insertions, 8 deletions
diff --git a/lib/chef/provider/package/dnf/dnf_helper.py b/lib/chef/provider/package/dnf/dnf_helper.py
index 501d6fceee..0859348212 100644
--- a/lib/chef/provider/package/dnf/dnf_helper.py
+++ b/lib/chef/provider/package/dnf/dnf_helper.py
@@ -14,8 +14,22 @@ def get_sack():
global base
if base is None:
base = dnf.Base()
+ conf = base.conf
+ conf.read()
+ conf.installroot = '/'
+ subst = conf.substitutions
+ subst.update_from_etc(conf.installroot)
+ try:
+ base.init_plugins()
+ base.pre_configure_plugins()
+ except AttributeError:
+ pass
base.read_all_repos()
- base.fill_sack()
+ try:
+ base.configure_plugins()
+ except AttributeError:
+ pass
+ base.fill_sack(load_system_repo='auto')
return base.sack
# FIXME: leaks memory and does not work
diff --git a/lib/chef/resource/dnf_package.rb b/lib/chef/resource/dnf_package.rb
index c90e135335..d115c4d5a8 100644
--- a/lib/chef/resource/dnf_package.rb
+++ b/lib/chef/resource/dnf_package.rb
@@ -1,5 +1,5 @@
#
-# Copyright:: Copyright 2016-2017, Chef Software Inc.
+# Copyright:: Copyright 2016-2019, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -73,7 +73,7 @@ class Chef
unless arg.nil?
Chef.deprecated(:dnf_package_allow_downgrade, "the allow_downgrade property on the dnf_package provider is not used, DNF supports downgrades by default.")
end
- false
+ true
end
end
end
diff --git a/spec/functional/resource/dnf_package_spec.rb b/spec/functional/resource/dnf_package_spec.rb
index 392c3d4012..0e7009f003 100644
--- a/spec/functional/resource/dnf_package_spec.rb
+++ b/spec/functional/resource/dnf_package_spec.rb
@@ -1,5 +1,5 @@
#
-# Copyright:: Copyright 2016, Chef Software Inc.
+# Copyright:: Copyright 2016-2019, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -190,8 +190,8 @@ describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
end
- it "matches with a vr glob" do
- pending "doesn't work on command line either"
+ # only works on rhel >= 8, was broken on old dnf
+ it "matches with a vr glob", :rhel_gte_8 do
flush_cache
dnf_package.package_name("chef_rpm")
dnf_package.version("1.10-1*")
@@ -200,8 +200,8 @@ describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
end
- it "matches with an evr glob" do
- pending "doesn't work on command line either"
+ # only works on rhel >= 8, was broken on old dnf
+ it "matches with an evr glob", :rhel_gte_8 do
flush_cache
dnf_package.package_name("chef_rpm")
dnf_package.version("0:1.10-1*")
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 9b54761df5..5ab97a8320 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -188,6 +188,8 @@ RSpec.configure do |config|
config.filter_run_excluding rhel: true unless rhel?
config.filter_run_excluding rhel6: true unless rhel6?
config.filter_run_excluding rhel7: true unless rhel7?
+ config.filter_run_excluding rhel8: true unless rhel8?
+ config.filter_run_excluding rhel_gte_8: true unless rhel_gte_8?
config.filter_run_excluding intel_64bit: true unless intel_64bit?
config.filter_run_excluding not_rhel: true if rhel?
config.filter_run_excluding not_rhel6: true if rhel6?
diff --git a/spec/support/platform_helpers.rb b/spec/support/platform_helpers.rb
index 509ca6e71e..0b13169ac1 100644
--- a/spec/support/platform_helpers.rb
+++ b/spec/support/platform_helpers.rb
@@ -175,6 +175,14 @@ def rhel7?
rhel? && !!(ohai[:platform_version].to_i == 7)
end
+def rhel8?
+ rhel? && !!(ohai[:platform_version].to_i == 8)
+end
+
+def rhel_gte_8?
+ rhel? && !!(ohai[:platform_version].to_i >= 8)
+end
+
def debian_family?
!!(ohai[:platform_family] == "debian")
end