Implement frontend and middleend support for loading multiple images
at once with Frisbee (excludes the actual MFS changes). Os_load now takes take a list of comma serrated image names for the "-i" and "-m" options. The default OS is the OS for the last image specified in the list. I also changed the "-p" option of osload to search both the project specified and emulab-ops for the image rather than just the project specified in order to simplify specifying multiple images (and because I personally found that behavior annoying when using osload). I modified the current_reloads table to be able to specify more than one image for a node by adding an "idx" column which controls the order of the reloads. I also added a "prepare" column to the table (explained below) I modified tmcd to basically loop over the entries in the table and create a multiline LOADINFO responsive, and modified rc.frisbee to handle the multiline response and load each image in turn. I modified os_load to take a new option "-P" which will tell rc.frisbee to zap the superblocks even if a whole disk image is not specified. To do this I set the prepare entry for the first image in the current_reloads table to true. Tmcd than passes this into to rc.frisbee in the LOADINFO line. When rc.frisbee sees this it will make sure to zap the superblock before loading that image. To support having multiple images as the default, "default_imageid" can now be a comma separated list. I implemented a hack to be able to set multiple imageids via editnodetype.php3. Basically the form splits default_imageid into default_imageid_0, default_imageid_1, etc and than adds an empty default_imageid_# slot to allow adding an imageid. Multiple images can be added by adding one image, than submitting the form, and than adding another into the empty slot. Not the best, but I don't thing this will be a very common operation. When the form is submitted it will than combine all default_imageid_# into a comma separated list ignoring any that are deleted or set to "No ImageID" (ie 0). Everything will work fine with old MFSs as long as only one image is loaded. If multiple images are loaded with an old MFS, an email will be sent to testbed-ops. This works by having tmcd detect old MFS's by using the version number and setting the state to RELOADOLDMFS. Stated will pick up on the and send the email to testbed-ops via a trigger.
Showing with 485 additions and 312 deletions