-// TODO Complete the surf vm workstation model
- vm_ws->generic_resource.model = surf_vm_workstation_model;
- vm_ws->generic_resource.name = xbt_strdup(name);
- // ind means ''indirect'' that this is a reference on the whole dict_elm structure (i.e not on the surf_resource_private infos)
- vm_ws->ind_physical_workstation = ind_phys_workstation;
+
+ // //// WORKSTATION RELATED STUFF ////
+ __init_ws(&(vm_ws->ws), name);
+ // Override the model with the current VM one.
+ vm_ws->ws.generic_resource.model = surf_vm_workstation_model;
+
+ // //// CPU RELATED STUFF ////
+ // This can be done directly during the creation of the surf_vm_worsktation model if
+ // we consider that there will be only one CPU model for one layer of virtualization.
+ // However, if you want to provide several layers (i.e. a VM inside a VM hosted by a PM)
+ // we should add a kind of table that stores the different CPU model.
+ // vm_ws->ws->generic_resource.model.extension.cpu=cpu_model_cas01(VM level ? );
+
+ // //// NET RELATED STUFF ////
+ // Bind virtual net_elm to the host
+ // TODO rebind each time you migrate a VM
+ // TODO check how network requests are scheduled between distinct processes competing for the same card.
+ vm_ws->ws.net_elm=xbt_lib_get_or_null(host_lib,vm_ws->physical_ws->generic_resource.name,ROUTING_HOST_LEVEL);
+ xbt_lib_set(host_lib, name, ROUTING_HOST_LEVEL, vm_ws->ws.net_elm);
+
+ // //// STORAGE RELATED STUFF ////
+
+ // ind means ''indirect'' that this is a reference on the whole dict_elm structure (i.e not on the surf_resource_private infos)
+ vm_ws->physical_ws = surf_workstation_resource_priv(ind_phys_workstation);