Blob Blame History Raw
From c4733a02d483818c3e9a99f1e94582d9a43593ae Mon Sep 17 00:00:00 2001
From: Josef Stribny <jstribny@redhat.com>
Date: Tue, 30 Jun 2015 10:21:58 +0200
Subject: [PATCH] Rewrite Red Hat nfs caps based on systemd checks

---
 plugins/guests/redhat/cap/nfs_client.rb | 29 +++++++++++++++++++++--------
 plugins/guests/redhat/plugin.rb         |  5 +++++
 2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/plugins/guests/redhat/cap/nfs_client.rb b/plugins/guests/redhat/cap/nfs_client.rb
index 0e80230..14e69d5 100644
--- a/plugins/guests/redhat/cap/nfs_client.rb
+++ b/plugins/guests/redhat/cap/nfs_client.rb
@@ -3,14 +3,27 @@ module GuestRedHat
     module Cap
       class NFSClient
         def self.nfs_client_install(machine)
-          machine.communicate.tap do |comm|
-            comm.sudo("yum -y install nfs-utils nfs-utils-lib")
-            case machine.guest.capability("flavor")
-            when :rhel_7
-              comm.sudo("/bin/systemctl restart rpcbind nfs")
-            else
-              comm.sudo("/etc/init.d/rpcbind restart; /etc/init.d/nfs restart")
-            end
+          machine.communicate.sudo("yum -y install nfs-utils nfs-utils-lib")
+          restart_nfs(machine)
+        end
+
+        def self.nfs_client_installed(machine)
+          installed = machine.communicate.test("test -x /sbin/mount.nfs")
+          restart_nfs(machine) if installed
+          installed
+        end
+
+        protected
+
+        def self.systemd?
+          `ps -o comm= 1`.chomp == 'systemd'
+        end
+
+        def self.restart_nfs(machine)
+          if systemd?
+            machine.communicate.sudo("/bin/systemctl restart rpcbind nfs")
+          else
+            machine.communicate.sudo("/etc/init.d/rpcbind restart; /etc/init.d/nfs restart")
           end
         end
       end
diff --git a/plugins/guests/redhat/plugin.rb b/plugins/guests/redhat/plugin.rb
index f7a2555..2ea8dce 100644
--- a/plugins/guests/redhat/plugin.rb
+++ b/plugins/guests/redhat/plugin.rb
@@ -36,6 +36,11 @@ class Plugin < Vagrant.plugin("2")
         Cap::NFSClient
       end
 
+      guest_capability("redhat", "nfs_client_installed") do
+        require_relative "cap/nfs_client"
+        Cap::NFSClient
+      end
+
       guest_capability("redhat", "rsync_install") do
         require_relative "cap/rsync"
         Cap::RSync