xbt_assert(not sealed_, "Impossible to set parent to an already sealed NetZone(%s)", this->get_cname());
parent_ = parent;
netpoint_->set_englobing_zone(parent_);
+ /* copying models from parent host, to be reviewed when we allow multi-models */
+ if (parent) {
+ set_network_model(parent->get_network_model());
+ set_cpu_pm_model(parent->get_cpu_pm_model());
+ set_cpu_vm_model(parent->get_cpu_vm_model());
+ set_disk_model(parent->get_disk_model());
+ set_host_model(parent->get_host_model());
+ }
}
void NetZoneImpl::set_network_model(std::shared_ptr<resource::NetworkModel> netmodel)
NetZone* NetZone::set_parent(const NetZone* parent)
{
- pimpl_->set_parent(parent->get_impl());
+ kernel::actor::simcall([this, parent] { pimpl_->set_parent(parent->get_impl()); });
return this;
}
current_routing->hierarchy_ = simgrid::kernel::routing::NetZoneImpl::RoutingMode::recursive;
/* add to the sons dictionary */
current_routing->add_child(new_zone);
- /* set models from parent netzone */
- new_zone->set_network_model(current_routing->get_network_model());
- new_zone->set_cpu_pm_model(current_routing->get_cpu_pm_model());
- new_zone->set_cpu_vm_model(current_routing->get_cpu_vm_model());
- new_zone->set_disk_model(current_routing->get_disk_model());
- new_zone->set_host_model(current_routing->get_host_model());
}
return new_zone;
}