lib/vagrant-skytap/action.rb in vagrant-skytap-0.2.8 vs lib/vagrant-skytap/action.rb in vagrant-skytap-0.2.9

- old
+ new

@@ -36,11 +36,24 @@ case result = env1[:result] when :missing_environment, :missing_vm, :no_vms b1.use MessageNotCreated else b1.use ClearForwardedPorts - b1.use StopVm + # May not halt suspended machines without --force flag + b1.use Call, IsSuspended do |env2, b2| + if env2[:result] + b2.use Call, IsEnvSet, :force_halt do |env3, b3| + if env3[:result] + b3.use StopVm + else + b3.use Message, I18n.t("vagrant_skytap.commands.halt.not_allowed_if_suspended") + end + end + else + b2.use StopVm + end + end end end end end @@ -51,11 +64,17 @@ b.use Call, ExistenceCheck do |env1, b1| case result = env1[:result] when :missing_environment, :missing_vm, :no_vms b1.use MessageNotCreated else - b1.use ClearForwardedPorts - b1.use SuspendVm + b1.use Call, IsRunning do |env2, b2| + if env2[:result] + b2.use ClearForwardedPorts + b2.use SuspendVm + else + b2.use Message, I18n.t("vagrant_skytap.commands.suspend.only_allowed_if_running") + end + end end end end end