Okay, here is the current development approach for dealing with
ElabinElab experiments that wrap another experiment, either firewalled or not. This instead of my security level stuff, that I decided was too much of a pain the user, at least for now. New NS syntax: tb-set-inner-elab-eid two-simple In the ElabinElab file, sets the name of an existing experiment in the same project. Experiment is parsed, and after the parse we notice in tbprerun that we have an inner eid, so we reparse the NS file, only this time we pass in the maximum number of nodes needed by the inner eid (tbprerun now computes min/max nodes at prerun time, instead of later as first part of swapin). This number is used to allocatethe appropriate number of inner experimental nodes. Why do it this way? Cause the NS parser is the only tool we have for generating the virt topology, and I do not want go down the path of inventing a new frontend. Anyway, after the reparse, we now have the proper number of nodes in the wrapper experiment. Now its simply a matter of copying over the type and fixnode info from the inner experiment to the outer experiment. Why? So that when the outer experiment is swapped in, it gets the nodes (of the right type/fixnode) that the inner experiment is going to want later, when it is swapped in by the inner emulab! Another approach would be to make elabinelab and elabinelab_eid options to batchexp (and thus the web form and XMLRPC interface) so that we can avoid the double parse. I suspect people do not want more crap on the web form, so I did not do it this way.
Showing with 101 additions and 5 deletions