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