• Leigh B. Stoller's avatar
    A set of changes to run "prepare" on a node just prior to an image · d8f8f9b4
    Leigh B. Stoller authored
    being taken.
    The basic strategy is to have node_reboot (when -p option supplied)
    invoke a special command on the node that will cause the shutdown
    procedure to run prepare as it goes single user, but before the
    network is turned off and the machine rebooted. The output of the
    prepare run is capture and send back via the tmcd BOOTLOG command and
    stored in the DB, so that create_image can dump that to the logfile
    (so that the person taking the image can know for certain that the
    prepare ran and finished okay).
    On linux this is pretty easy to arrange since reboot is actually
    shutdown and shutdown runs the K scripts in /etc/rc.d/rc6.d, and at
    the end the node is basically single user mode. I just added a new
    script to run prepare and send back the output.
    On FreeBSD this is a lot harder since there are no decent hooks.
    Instead, I had to hack up init (see tmcd/freebsd/init/{4,5,6}) with
    some simple code that looks for a command to run instead of going to a
    single user shell. The command (script) runs prepare, sends the output
    back to tmcd, and then does a real reboot.
    Okay, so how to get -p passed to node_reboot? I hacked up the
    libadminmfs code slightly to do that, with new 'prepare' argument
    option. This may not be the best approach; might have to do this as a
    real state transition if problems develop. I will wait and see.
    Also, I changed www/loadimage.php3 to spew the output of the
    create_image to the browser.