diff --git a/CHANGELOG.md b/CHANGELOG.md index ba8ec42b4..19e946b95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ BUG FIXES: crash Vagrant. [GH-3364] - commands/status: Machine readable output contains the target. [GH-3218] - guests/debian: Changing host name works properly. [GH-3283] + - guests/suse: Shutdown works correctly on SLES [GH-2775] - providers/virtualbox: Add missing translation for stopping status. [GH-3368] - providers/virtualbox: Host-only networks set cableconnected property to "yes" [GH-3365] diff --git a/plugins/guests/suse/cap/halt.rb b/plugins/guests/suse/cap/halt.rb new file mode 100644 index 000000000..ea1957594 --- /dev/null +++ b/plugins/guests/suse/cap/halt.rb @@ -0,0 +1,16 @@ +module VagrantPlugins + module GuestSuse + module Cap + class Halt + def self.halt(machine) + begin + machine.communicate.sudo("/sbin/shutdown -h now") + rescue IOError + # Do nothing, because it probably means the machine shut down + # and SSH connection was lost. + end + end + end + end + end +end diff --git a/plugins/guests/suse/plugin.rb b/plugins/guests/suse/plugin.rb index c5ffb0f9c..0aa9bd289 100644 --- a/plugins/guests/suse/plugin.rb +++ b/plugins/guests/suse/plugin.rb @@ -16,6 +16,11 @@ module VagrantPlugins Cap::ChangeHostName end + guest_capability("suse", "halt") do + require_relative "cap/halt" + Cap::Halt + end + guest_capability("suse", "configure_networks") do require_relative "cap/configure_networks" Cap::ConfigureNetworks