1. Beef up "admin mode" support.
* Add libadminmfs.pm with routines for entering/exiting and executing commands in, the admin MFS. Node admin and firewall swapout (see below) now use this, the image creation process does not yet. * Add swapout time hooks for running an admin mode process, likely to be used to collect swapout time state. Currently controlled globally by two new sitevars. * Modified node_admin to use the library and added a "-c <command>" option to have nodes go into admin mode and run a command. I don't really expect this to be useful, it was just a testing vehicle for the library. 2. Improved the swapout process for firewalled experiments. Largely just generalized what we already did for paniced experiments. At swapout, firewalled nodes are: - powered off - set to boot into admin mode and run a disk zapper - powered on The swapout process then waits for all nodes to successfully complete disk zapage, at which point the nodes are nfree'ed as usual. Any failure of the above process, marks the experiment as panic'ed (to ensure that we are involved in cleanup) and sends mail to testbed-ops describing the state of the nodes. 3. Added the aforementioned disk zapper, a little C program in the MFS which zeroes out the MBR and partition boot blocks (but not the MBR partition table or FS superblocks). This is added insurance that if a node somehow gets diverted after being nfree'd but before getting the disk reloaded (e.g., goes to hwdown), that we cannot accidentally boot from the disk. This program gets installed in the admin MFS. 4. Related to firewalls, modified swapin to use the new documented "snmpit -N" to get the firewall VLAN number rather than parsing the output that was a side-effect of VLAN creation.