Blob Blame History Raw
From 80006251f422a8d534ff9bafa0e0c45d9c98143c Mon Sep 17 00:00:00 2001
From: Joe Doss <jdoss@kennasecurity.com>
Date: Mon, 17 Sep 2018 13:30:55 -0500
Subject: [PATCH 01/10] Add in logic to restart NetworkManager if it is
 enabled.

---
 plugins/guests/redhat/cap/change_host_name.rb | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/plugins/guests/redhat/cap/change_host_name.rb b/plugins/guests/redhat/cap/change_host_name.rb
index 55fcdc4b48..8f32650035 100644
--- a/plugins/guests/redhat/cap/change_host_name.rb
+++ b/plugins/guests/redhat/cap/change_host_name.rb
@@ -29,7 +29,13 @@ def self.change_host_name(machine, name)
               }
 
               # Restart network
-              service network restart
+              if (test -f /etc/init.d/network && /etc/init.d/network status &> /dev/null ); then
+                service network restart
+              elif (test -f /usr/lib/systemd/system/NetworkManager.service && systemctl is-enabled NetworkManager.service &> /dev/null ); then
+                systemctl restart NetworkManager.service
+              else
+                printf "Could not restart the network to set the new hostname!\n"
+              fi
             EOH
           end
         end

From 94954739b53ee4c6741a35c366c2fe5c9853e0ed Mon Sep 17 00:00:00 2001
From: Joe Doss <jdoss@kennasecurity.com>
Date: Mon, 17 Sep 2018 14:30:57 -0500
Subject: [PATCH 02/10] Simplified if statements.

---
 plugins/guests/redhat/cap/change_host_name.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/guests/redhat/cap/change_host_name.rb b/plugins/guests/redhat/cap/change_host_name.rb
index 8f32650035..e9c0b1d80e 100644
--- a/plugins/guests/redhat/cap/change_host_name.rb
+++ b/plugins/guests/redhat/cap/change_host_name.rb
@@ -29,9 +29,9 @@ def self.change_host_name(machine, name)
               }
 
               # Restart network
-              if (test -f /etc/init.d/network && /etc/init.d/network status &> /dev/null ); then
+              if test -f /etc/init.d/network; then
                 service network restart
-              elif (test -f /usr/lib/systemd/system/NetworkManager.service && systemctl is-enabled NetworkManager.service &> /dev/null ); then
+              elif systemctl -q is-enabled NetworkManager.service; then
                 systemctl restart NetworkManager.service
               else
                 printf "Could not restart the network to set the new hostname!\n"

From c14a4a09f723230682c5ef5f9dc53662e2968b92 Mon Sep 17 00:00:00 2001
From: Joe Doss <jdoss@kennasecurity.com>
Date: Mon, 17 Sep 2018 14:56:06 -0500
Subject: [PATCH 03/10] Switch if statements, check for systemctl, and switch
 to is-active.

---
 plugins/guests/redhat/cap/change_host_name.rb | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/plugins/guests/redhat/cap/change_host_name.rb b/plugins/guests/redhat/cap/change_host_name.rb
index e9c0b1d80e..70bd496943 100644
--- a/plugins/guests/redhat/cap/change_host_name.rb
+++ b/plugins/guests/redhat/cap/change_host_name.rb
@@ -29,10 +29,10 @@ def self.change_host_name(machine, name)
               }
 
               # Restart network
-              if test -f /etc/init.d/network; then
-                service network restart
-              elif systemctl -q is-enabled NetworkManager.service; then
+              if (test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service); then
                 systemctl restart NetworkManager.service
+              elif test -f /etc/init.d/network; then
+                service network restart
               else
                 printf "Could not restart the network to set the new hostname!\n"
               fi

From 19aa9578c797c99a8632955a703490d5e6b50a26 Mon Sep 17 00:00:00 2001
From: Joe Doss <jdoss@kennasecurity.com>
Date: Tue, 18 Sep 2018 13:15:26 -0500
Subject: [PATCH 04/10] Exit 1 if we cannot set the hostname.

---
 plugins/guests/redhat/cap/change_host_name.rb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/plugins/guests/redhat/cap/change_host_name.rb b/plugins/guests/redhat/cap/change_host_name.rb
index 70bd496943..ae02460156 100644
--- a/plugins/guests/redhat/cap/change_host_name.rb
+++ b/plugins/guests/redhat/cap/change_host_name.rb
@@ -35,6 +35,7 @@ def self.change_host_name(machine, name)
                 service network restart
               else
                 printf "Could not restart the network to set the new hostname!\n"
+                exit 1
               fi
             EOH
           end

From 86ab4533b180009ed476026374110fc0bd79f522 Mon Sep 17 00:00:00 2001
From: Joe Doss <jdoss@kennasecurity.com>
Date: Tue, 18 Sep 2018 13:16:12 -0500
Subject: [PATCH 05/10] Fix the test to check for systemctl restart
 NetworkManager.service too.

---
 test/unit/plugins/guests/redhat/cap/change_host_name_test.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb b/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
index 7662935458..10f43a3593 100644
--- a/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
+++ b/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
@@ -31,7 +31,7 @@
       expect(comm.received_commands[1]).to match(/\/etc\/sysconfig\/network-scripts\/ifcfg/)
       expect(comm.received_commands[1]).to match(/hostnamectl set-hostname --static '#{name}'/)
       expect(comm.received_commands[1]).to match(/hostnamectl set-hostname --transient '#{name}'/)
-      expect(comm.received_commands[1]).to match(/service network restart/)
+      expect(comm.received_commands[1]).to match(/service network restart|systemctl restart NetworkManager.service/)
     end
 
     it "does not change the hostname if already set" do

From a12b09b098ea87eec815e166d0e1395f6f47f937 Mon Sep 17 00:00:00 2001
From: shotop <samuel.j.hotop@gmail.com>
Date: Thu, 20 Sep 2018 14:21:40 -0500
Subject: [PATCH 06/10] add specs around network restart logic

---
 .../redhat/cap/change_host_name_test.rb       | 27 +++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb b/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
index 10f43a3593..b85802e947 100644
--- a/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
+++ b/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
@@ -39,5 +39,32 @@
       cap.change_host_name(machine, name)
       expect(comm.received_commands.size).to eq(1)
     end
+
+    context "restarts the network" do
+      it "uses systemctl and NetworkManager.service" do
+        comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 1)
+        comm.stub_command("test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service", exit_code: 0)
+        cap.change_host_name(machine, name)
+        expect(comm.received_commands[1]).to match(/systemctl restart NetworkManager.service/)
+      end
+
+      it "uses the service command" do
+        comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 1)
+        comm.stub_command("test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service", exit_code: 1)
+        comm.stub_command("test -f /etc/init.d/network", exit_code: 0)
+        cap.change_host_name(machine, name)
+        expect(comm.received_commands[1]).to match(/service network restart/)
+      end
+    end
+
+    context "cannot restart the network" do
+      it "prints cannot restart message" do
+        comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 1)
+        comm.stub_command("test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service", exit_code: 1)
+        comm.stub_command("test -f /etc/init.d/network", exit_code: 1)
+        cap.change_host_name(machine, name)
+        expect(comm.received_commands[1]).to match(/printf "Could not restart the network to set the new hostname!/)
+      end
+    end
   end
 end

From fb5fc0e657a10ee1eaf046980827cc1802c4d0f9 Mon Sep 17 00:00:00 2001
From: Chris Roberts <croberts@hashicorp.com>
Date: Thu, 20 Sep 2018 16:42:39 -0700
Subject: [PATCH 07/10] Update guest inspection utility module

Use sudo option for communicator test command instead of inline sudo
to properly use configured sudo value. Use command for checking
availability of hostnamectl. Use is-active for determining if a
service is being actively managed by systemd.
---
 lib/vagrant/util/guest_inspection.rb | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/lib/vagrant/util/guest_inspection.rb b/lib/vagrant/util/guest_inspection.rb
index 86ab1dc69e..5a1902d8da 100644
--- a/lib/vagrant/util/guest_inspection.rb
+++ b/lib/vagrant/util/guest_inspection.rb
@@ -17,22 +17,34 @@ module Linux
 
         # systemd-networkd.service is in use
         #
+        # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
         # @return [Boolean]
         def systemd_networkd?(comm)
-          comm.test("sudo systemctl status systemd-networkd.service")
+          comm.test("systemctl -q is-active systemd-networkd.service", sudo: true)
+        end
+
+        # Check if given service is controlled by systemd
+        #
+        # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
+        # @param [String] service_name Name of the service to check
+        # @return [Boolean]
+        def systemd_controlled?(comm, service_name)
+          comm.test("systemctl -q is-active #{service_name}", sudo: true)
         end
 
         # systemd hostname set is via hostnamectl
         #
+        # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
         # @return [Boolean]
         def hostnamectl?(comm)
-          comm.test("hostnamectl")
+          comm.test("command -v hostnamectl")
         end
 
         ## netplan helpers
 
         # netplan is installed
         #
+        # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
         # @return [Boolean]
         def netplan?(comm)
           comm.test("netplan -h")
@@ -42,6 +54,7 @@ def netplan?(comm)
 
         # nmcli is installed
         #
+        # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
         # @return [Boolean]
         def nmcli?(comm)
           comm.test("nmcli")
@@ -49,7 +62,7 @@ def nmcli?(comm)
 
         # NetworkManager currently controls device
         #
-        # @param comm [Communicator]
+        # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
         # @param device_name [String]
         # @return [Boolean]
         def nm_controlled?(comm, device_name)

From ff021fcab404c95e52566bfca4207da9c0101e01 Mon Sep 17 00:00:00 2001
From: Chris Roberts <croberts@hashicorp.com>
Date: Thu, 20 Sep 2018 16:44:08 -0700
Subject: [PATCH 08/10] Update redhat change host name capability to support
 systemd

Update capability to use guest inspection module for determining
correct actions to execute. When systemd is in use restart the
correct active service, either NetworkManager or networkd. Default
to using the original service restart when systemd service is not
found.
---
 plugins/guests/redhat/cap/change_host_name.rb | 41 ++++++++++---------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/plugins/guests/redhat/cap/change_host_name.rb b/plugins/guests/redhat/cap/change_host_name.rb
index ae02460156..5da660df05 100644
--- a/plugins/guests/redhat/cap/change_host_name.rb
+++ b/plugins/guests/redhat/cap/change_host_name.rb
@@ -2,6 +2,9 @@ module VagrantPlugins
   module GuestRedHat
     module Cap
       class ChangeHostName
+
+        extend Vagrant::Util::GuestInspection
+
         def self.change_host_name(machine, name)
           comm = machine.communicate
 
@@ -10,34 +13,32 @@ def self.change_host_name(machine, name)
             comm.sudo <<-EOH.gsub(/^ {14}/, '')
               # Update sysconfig
               sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/sysconfig/network
-
               # Update DNS
               sed -i 's/\\(DHCP_HOSTNAME=\\).*/\\1\"#{basename}\"/' /etc/sysconfig/network-scripts/ifcfg-*
-
               # Set the hostname - use hostnamectl if available
               echo '#{name}' > /etc/hostname
-              if command -v hostnamectl; then
-                hostnamectl set-hostname --static '#{name}'
-                hostnamectl set-hostname --transient '#{name}'
-              else
-                hostname -F /etc/hostname
-              fi
-
-              # Prepend ourselves to /etc/hosts
               grep -w '#{name}' /etc/hosts || {
                 sed -i'' '1i 127.0.0.1\\t#{name}\\t#{basename}' /etc/hosts
               }
-
-              # Restart network
-              if (test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service); then
-                systemctl restart NetworkManager.service
-              elif test -f /etc/init.d/network; then
-                service network restart
-              else
-                printf "Could not restart the network to set the new hostname!\n"
-                exit 1
-              fi
             EOH
+
+            if hostnamectl?(comm)
+              comm.sudo("hostnamectl set-hostname --static '#{name}' ; " \
+                "hostnamectl set-hostname --transient '#{name}'")
+            else
+              comm.sudo("hostname -F /etc/hostname")
+            end
+
+            restart_command = "service network restart"
+
+            if systemd?
+              if systemd_networkd?(comm)
+                restart_command = "systemctl restart systemd-networkd.service"
+              elsif systemd_controlled?(comm, "NetworkManager.service")
+                restart_command = "systemctl restart NetworkManager.service"
+              end
+            end
+            comm.sudo(restart_command)
           end
         end
       end

From bc217d5e577457df5ac4ecdfffa17fd0a8c85b18 Mon Sep 17 00:00:00 2001
From: Chris Roberts <croberts@hashicorp.com>
Date: Thu, 20 Sep 2018 16:46:45 -0700
Subject: [PATCH 09/10] Update redhat change host name capability tests for
 systemd/NetworkManger updates

---
 .../redhat/cap/change_host_name_test.rb       | 95 +++++++++++++------
 1 file changed, 68 insertions(+), 27 deletions(-)

diff --git a/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb b/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
index b85802e947..8d0c9ebd4b 100644
--- a/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
+++ b/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb
@@ -20,50 +20,91 @@
 
   describe ".change_host_name" do
     let(:cap) { caps.get(:change_host_name) }
-
     let(:name) { "banana-rama.example.com" }
+    let(:hostname_changed) { true }
+    let(:systemd) { true }
+    let(:hostnamectl) { true }
+    let(:networkd) { true }
+    let(:network_manager) { false }
 
-    it "sets the hostname" do
-      comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 1)
+    before do
+      comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: hostname_changed ? 1 : 0)
+      allow(cap).to receive(:systemd?).and_return(systemd)
+      allow(cap).to receive(:hostnamectl?).and_return(hostnamectl)
+      allow(cap).to receive(:systemd_networkd?).and_return(networkd)
+      allow(cap).to receive(:systemd_controlled?).with(anything, /NetworkManager/).and_return(network_manager)
+    end
 
+    it "sets the hostname" do
       cap.change_host_name(machine, name)
       expect(comm.received_commands[1]).to match(/\/etc\/sysconfig\/network/)
       expect(comm.received_commands[1]).to match(/\/etc\/sysconfig\/network-scripts\/ifcfg/)
-      expect(comm.received_commands[1]).to match(/hostnamectl set-hostname --static '#{name}'/)
-      expect(comm.received_commands[1]).to match(/hostnamectl set-hostname --transient '#{name}'/)
-      expect(comm.received_commands[1]).to match(/service network restart|systemctl restart NetworkManager.service/)
     end
 
-    it "does not change the hostname if already set" do
-      comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 0)
-      cap.change_host_name(machine, name)
-      expect(comm.received_commands.size).to eq(1)
-    end
+    context "when hostnamectl is in use" do
+      let(:hostnamectl) { true }
 
-    context "restarts the network" do
-      it "uses systemctl and NetworkManager.service" do
-        comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 1)
-        comm.stub_command("test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service", exit_code: 0)
+      it "sets hostname with hostnamectl" do
         cap.change_host_name(machine, name)
-        expect(comm.received_commands[1]).to match(/systemctl restart NetworkManager.service/)
+        expect(comm.received_commands[2]).to match(/hostnamectl/)
       end
+    end
+
+    context "when hostnamectl is not in use" do
+      let(:hostnamectl) { false }
 
-      it "uses the service command" do
-        comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 1)
-        comm.stub_command("test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service", exit_code: 1)
-        comm.stub_command("test -f /etc/init.d/network", exit_code: 0)
+      it "sets hostname with hostname command" do
         cap.change_host_name(machine, name)
-        expect(comm.received_commands[1]).to match(/service network restart/)
+        expect(comm.received_commands[2]).to match(/hostname -F/)
       end
     end
 
-    context "cannot restart the network" do
-      it "prints cannot restart message" do
-        comm.stub_command("hostname -f | grep '^#{name}$'", exit_code: 1)
-        comm.stub_command("test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service", exit_code: 1)
-        comm.stub_command("test -f /etc/init.d/network", exit_code: 1)
+    context "when host name is already set" do
+      let(:hostname_changed) { false }
+
+      it "does not change the hostname" do
         cap.change_host_name(machine, name)
-        expect(comm.received_commands[1]).to match(/printf "Could not restart the network to set the new hostname!/)
+        expect(comm.received_commands.size).to eq(1)
+      end
+    end
+
+    context "restarts the network" do
+      context "when networkd is in use" do
+        let(:networkd) { true }
+
+        it "restarts networkd with systemctl" do
+          cap.change_host_name(machine, name)
+          expect(comm.received_commands[3]).to match(/systemctl restart systemd-networkd/)
+        end
+      end
+
+      context "when NetworkManager is in use" do
+        let(:networkd) { false }
+        let(:network_manager) { true }
+
+        it "restarts NetworkManager with systemctl" do
+          cap.change_host_name(machine, name)
+          expect(comm.received_commands[3]).to match(/systemctl restart NetworkManager/)
+        end
+      end
+
+      context "when networkd and NetworkManager are not in use" do
+        let(:networkd) { false }
+        let(:network_manager) { false }
+
+        it "restarts the network using service" do
+          cap.change_host_name(machine, name)
+          expect(comm.received_commands[3]).to match(/service network restart/)
+        end
+      end
+
+      context "when systemd is not in use" do
+        let(:systemd) { false }
+
+        it "restarts the network using service" do
+          cap.change_host_name(machine, name)
+          expect(comm.received_commands[3]).to match(/service network restart/)
+        end
       end
     end
   end

From 8fd05fe3c1b773777f08ca50dd651cbaf33838d3 Mon Sep 17 00:00:00 2001
From: Chris Roberts <croberts@hashicorp.com>
Date: Fri, 21 Sep 2018 09:19:40 -0700
Subject: [PATCH 10/10] Use `command -v` for checks in all inspection helpers.
 Fix stubs in tests.

---
 lib/vagrant/util/guest_inspection.rb               |  4 ++--
 .../guests/debian/cap/configure_networks_test.rb   | 14 +++++++-------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/lib/vagrant/util/guest_inspection.rb b/lib/vagrant/util/guest_inspection.rb
index 5a1902d8da..cd0a96d3ef 100644
--- a/lib/vagrant/util/guest_inspection.rb
+++ b/lib/vagrant/util/guest_inspection.rb
@@ -47,7 +47,7 @@ def hostnamectl?(comm)
         # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
         # @return [Boolean]
         def netplan?(comm)
-          comm.test("netplan -h")
+          comm.test("command -v netplan")
         end
 
         ## nmcli helpers
--- a/lib/vagrant/util/guest_inspection.rb
+++ b/lib/vagrant/util/guest_inspection.rb
@@ -57,7 +57,7 @@ def netplan?(comm)
         # @param [Vagrant::Plugin::V2::Communicator] comm Guest communicator
         # @return [Boolean]
         def nmcli?(comm)
-          comm.test("nmcli")
+          comm.test("command -v nmcli")
         end
 
         # NetworkManager currently controls device
diff --git a/test/unit/plugins/guests/debian/cap/configure_networks_test.rb b/test/unit/plugins/guests/debian/cap/configure_networks_test.rb
index b4691d0fd4..d3a523c95b 100644
--- a/test/unit/plugins/guests/debian/cap/configure_networks_test.rb
+++ b/test/unit/plugins/guests/debian/cap/configure_networks_test.rb
@@ -67,9 +67,9 @@
     before do
       allow(comm).to receive(:test).with("nmcli d show eth1").and_return(false)
       allow(comm).to receive(:test).with("nmcli d show eth2").and_return(false)
-      allow(comm).to receive(:test).with("ps -o comm= 1 | grep systemd").and_return(false)
-      allow(comm).to receive(:test).with("sudo systemctl status systemd-networkd.service").and_return(false)
-      allow(comm).to receive(:test).with("netplan -h").and_return(false)
+      allow(comm).to receive(:test).with("ps -o comm= 1 | grep systemd").and_return(false)
+      allow(comm).to receive(:test).with("systemctl -q is-active systemd-networkd.service", anything).and_return(false)
+      allow(comm).to receive(:test).with("command -v netplan").and_return(false)
     end
 
     it "creates and starts the networks using net-tools" do
@@ -85,8 +85,8 @@
 
     context "with systemd" do
       before do
-        expect(comm).to receive(:test).with("ps -o comm= 1 | grep systemd").and_return(true)
-        allow(comm).to receive(:test).with("netplan -h").and_return(false)
+        expect(comm).to receive(:test).with("ps -o comm= 1 | grep systemd").and_return(true)
+        allow(comm).to receive(:test).with("command -v netplan").and_return(false)
       end
 
       it "creates and starts the networks using net-tools" do
@@ -102,7 +102,7 @@
 
       context "with systemd-networkd" do
         before do
-          expect(comm).to receive(:test).with("sudo systemctl status systemd-networkd.service").and_return(true)
+          expect(comm).to receive(:test).with("systemctl -q is-active systemd-networkd.service", anything).and_return(true)
         end
 
         it "creates and starts the networks using systemd-networkd" do
@@ -117,7 +117,7 @@
 
       context "with netplan" do
         before do
-          expect(comm).to receive(:test).with("netplan -h").and_return(true)
+          expect(comm).to receive(:test).with("command -v netplan").and_return(true)
         end
 
         let(:nm_yml) { "---\nnetwork:\n  version: 2\n  renderer: NetworkManager\n  ethernets:\n    eth1:\n      dhcp4: true\n    eth2:\n      addresses:\n      - 33.33.33.10/16\n      gateway4: 33.33.0.1\n" }

From 1797798760eb72d6b02724f75bc54dd83815e986 Mon Sep 17 00:00:00 2001
From: Chris Roberts <croberts@hashicorp.com>
Date: Fri, 28 Sep 2018 07:59:39 -0700
Subject: [PATCH] Fix module name

---
 plugins/guests/redhat/cap/change_host_name.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/guests/redhat/cap/change_host_name.rb b/plugins/guests/redhat/cap/change_host_name.rb
index 5da660df05..37c8912a80 100644
--- a/plugins/guests/redhat/cap/change_host_name.rb
+++ b/plugins/guests/redhat/cap/change_host_name.rb
@@ -3,7 +3,7 @@ module GuestRedHat
     module Cap
       class ChangeHostName
 
-        extend Vagrant::Util::GuestInspection
+        extend Vagrant::Util::GuestInspection::Linux
 
         def self.change_host_name(machine, name)
           comm = machine.communicate

From 11b0d58fa081cd9a27c272244a0d119acc81f32e Mon Sep 17 00:00:00 2001
From: Chris Roberts <croberts@hashicorp.com>
Date: Mon, 1 Oct 2018 08:43:49 -0700
Subject: [PATCH] Include communicator on call

---
 plugins/guests/redhat/cap/change_host_name.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/guests/redhat/cap/change_host_name.rb b/plugins/guests/redhat/cap/change_host_name.rb
index 37c8912a80..5ceb63665a 100644
--- a/plugins/guests/redhat/cap/change_host_name.rb
+++ b/plugins/guests/redhat/cap/change_host_name.rb
@@ -31,7 +31,7 @@ def self.change_host_name(machine, name)
 
             restart_command = "service network restart"
 
-            if systemd?
+            if systemd?(comm)
               if systemd_networkd?(comm)
                 restart_command = "systemctl restart systemd-networkd.service"
               elsif systemd_controlled?(comm, "NetworkManager.service")