- THROWF(vm_error, 0, "Cannot migrate VM '%s' to host '%s', which is offline.", vm->get_cname(), dst_pm->get_cname());
- if (vm->get_state() != simgrid::s4u::VirtualMachine::state::RUNNING)
- THROWF(vm_error, 0, "Cannot migrate VM '%s' that is not running yet.", vm->get_cname());
- if (vm->get_impl()->is_migrating_)
- THROWF(vm_error, 0, "Cannot migrate VM '%s' that is already migrating.", vm->get_cname());
-
- vm->get_impl()->is_migrating_ = true;
- simgrid::s4u::VirtualMachine::on_migration_start(*vm);
-
- std::string rx_name =
- std::string("__pr_mig_rx:") + vm->get_cname() + "(" + src_pm->get_cname() + "-" + dst_pm->get_cname() + ")";
- std::string tx_name =
- std::string("__pr_mig_tx:") + vm->get_cname() + "(" + src_pm->get_cname() + "-" + dst_pm->get_cname() + ")";
+ throw simgrid::VmFailureException(
+ XBT_THROW_POINT, simgrid::xbt::string_printf("Cannot migrate VM '%s' to host '%s', which is offline.",
+ vm->get_cname(), dst_pm->get_cname()));
+ if (vm->get_state() != simgrid::s4u::VirtualMachine::State::RUNNING)
+ throw simgrid::VmFailureException(
+ XBT_THROW_POINT,
+ simgrid::xbt::string_printf("Cannot migrate VM '%s' that is not running yet.", vm->get_cname()));
+ if (vm->get_vm_impl()->is_migrating())
+ throw simgrid::VmFailureException(
+ XBT_THROW_POINT,
+ simgrid::xbt::string_printf("Cannot migrate VM '%s' that is already migrating.", vm->get_cname()));
+
+ vm->start_migration();
+
+ std::string rx_name = "__pr_mig_rx:" + vm->get_name() + "(" + src_pm->get_name() + "-" + dst_pm->get_name() + ")";
+ std::string tx_name = "__pr_mig_tx:" + vm->get_name() + "(" + src_pm->get_name() + "-" + dst_pm->get_name() + ")";