From 0af933d68afa8b9ec8999ab789baad152aa6c8ef Mon Sep 17 00:00:00 2001 From: raghavendra talur Date: Sun, 6 Sep 2015 17:14:06 +0530 Subject: [PATCH] Add dnf bucket This patchset adds dnf as a bucket. Adds the keepcache line if it is not found in dnf.conf. Signed-off-by: raghavendra talur --- lib/vagrant-cachier/bucket.rb | 1 + lib/vagrant-cachier/bucket/dnf.rb | 29 +++++++++++++++++++ .../cap/redhat/dnf_cache_dir.rb | 13 +++++++++ lib/vagrant-cachier/capabilities.rb | 5 ++++ 4 files changed, 48 insertions(+) create mode 100644 lib/vagrant-cachier/bucket/dnf.rb create mode 100644 lib/vagrant-cachier/cap/redhat/dnf_cache_dir.rb diff --git a/lib/vagrant-cachier/bucket.rb b/lib/vagrant-cachier/bucket.rb index 4d392a6..483f782 100644 --- a/lib/vagrant-cachier/bucket.rb +++ b/lib/vagrant-cachier/bucket.rb @@ -102,3 +102,4 @@ require_relative "bucket/npm" require_relative "bucket/zypper" require_relative "bucket/generic" require_relative "bucket/pip" +require_relative "bucket/dnf" diff --git a/lib/vagrant-cachier/bucket/dnf.rb b/lib/vagrant-cachier/bucket/dnf.rb new file mode 100644 index 0000000..aeb6071 --- /dev/null +++ b/lib/vagrant-cachier/bucket/dnf.rb @@ -0,0 +1,29 @@ +module VagrantPlugins + module Cachier + class Bucket + class Dnf < Bucket + def self.capability + :dnf_cache_dir + end + + def install + if guest.capability?(:dnf_cache_dir) + guest_path = guest.capability(:dnf_cache_dir) + return if @env[:cache_dirs].include?(guest_path) + + # Ensure caching is enabled + if !comm.sudo("grep -q 'keepcache=' /etc/dnf/dnf.conf", error_check: false) + comm.sudo("sed -i 's/keepcache=0/keepcache=1/g' /etc/dnf/dnf.conf") + else + comm.sudo("echo 'keepcache=1' >> /etc/dnf/dnf.conf") + end + + symlink(guest_path) + else + @env[:ui].info I18n.t('vagrant_cachier.skipping_bucket', bucket: 'Dnf') + end + end + end + end + end +end diff --git a/lib/vagrant-cachier/cap/redhat/dnf_cache_dir.rb b/lib/vagrant-cachier/cap/redhat/dnf_cache_dir.rb new file mode 100644 index 0000000..5723a96 --- /dev/null +++ b/lib/vagrant-cachier/cap/redhat/dnf_cache_dir.rb @@ -0,0 +1,13 @@ +module VagrantPlugins + module Cachier + module Cap + module RedHat + module DnfCacheDir + def self.dnf_cache_dir(machine) + '/var/cache/dnf' + end + end + end + end + end +end diff --git a/lib/vagrant-cachier/capabilities.rb b/lib/vagrant-cachier/capabilities.rb index fab48c2..ce73499 100644 --- a/lib/vagrant-cachier/capabilities.rb +++ b/lib/vagrant-cachier/capabilities.rb @@ -61,6 +61,11 @@ module VagrantPlugins Cap::RedHat::YumCacheDir end + guest_capability 'redhat', 'dnf_cache_dir' do + require_relative 'cap/redhat/dnf_cache_dir' + Cap::RedHat::DnfCacheDir + end + guest_capability 'suse', 'yum_cache_dir' do # Disable Yum on suse guests end