Commit my version of assign_wrapper as assign_wrapper-new, and change
tbswap to use this version inside the testbed project only! All other projects will see the old version for now; there are just too many things to test, and the testsuite gets just a fraction of them. Some highlights (which I will expand on later when I commit this version to the main version): * New -t option to create the TOP file, and then exit. The only other side effect of this is to update the min/max nodes for the experiment in the DB, unles new option -n (impotent mode) is given. * New -n option to operate in impotent mode; do not allocate nodes and do not modify the DB. Okay, so this option is not as great as it sounds. I eventually hit the point of diminishing returns, with trying to make things work right without DB modification. At some point I just throw in the towel and exit. This currently happens after interpolating the link results of assign. But, I have found it very useful, and could get better with time. Being able to run assign on the main DB without sucking up the nodes is nice for debugging. * Lots of data structure organization, mostly on the virtual topology side of assign (you can think of assign as two sections, the part that interprets the DB tables and creates the TOP file, and the part that reads the results of assign and sets up all the physical stuff in the DB). I removed numerous global hashes, and combined them into aggregate data structures, such as they are in Perl. My approach for this was to read the tables from the DB, and keep them handy, extending them as needed with stuff that assign_wrapper generates as it proceeds. This has the side effect of cutting down on the number of queries as well. The next task is to do the physical side reorg, but not up for that yet.