diff --git a/CHANGELOG.md b/CHANGELOG.md index 64b2fba72..8a8ccaccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ BUG FIXES: - core: Allow provisioner plugins to not have a config class. [GH-3272] - 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] - synced\_folders/smb: IDs of synced folders are hashed to work better with VMware. [GH-3219] - synced\_folders/smb: Passwords with symbols now work. [GH-3242] 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