Skip to content
  • Leigh B. Stoller's avatar
    Big round of image/osid changes. This is the first cut (final cut?) at · a73e627e
    Leigh B. Stoller authored
    supporting autocreating and autoloading images. The imageid form now
    sports a field to specify a nodeid to create the image from; If set,
    the backend create_image script is invoked. Thats the easy part.
    Slightly harder is autoloading images based on the osid specified in
    the NS file. To support this, I have added a new DB table called
    osidtoimageid, which holds the mapping from osid/pctype to imageid.
    When users create images, they must specify what node types that image
    is good for. Obviously, the mappings have to be unique or it would be
    impossible to figure it out! Anyway, once that image mapping is
    in place and the image created, the user can specify that ID in the NS
    file. I've changed os_setup to to look for IDs that are not loaded,
    and to try and find one in the osidtoimageid. If found, it invokes
    os_load. To keep things running in parallel as much as possible,
    os_setup issues all the loads/reboots (could be more than a single set
    of loads is multiple IDs are in the NS file) at once, and waits for
    all the children to exit. I've hacked up os_load a bit to try and be
    more robust in the face of PXE failures, which still happen and are
    rather troublsesome. Need an event system!
    
    Contained in this revision are unrelated changed to make the OS and
    Image IDs per-project unique instead of globally unique, since thats a
    pain for the users. This turns out to be very messy, since underneath
    we do not want to pass around pid/ID in all the various places its
    used. Rather, I create a globally unique name and extened the OS and
    Image tables to include pid/name/ID. The user selects pid/name, and I
    create the globally unique ID. For the most part this is invisible
    throughout the system, except where we interface with the user, say in
    the web pages; the user should see his chosen name where possible, and
    the should invoke scripts (os_load, create_image, etc) using his/her
    name not the internal ID. Also, in the front end the NS file should
    use the user name not the ID. All in all, this accounted for a number
    of annoying changes and some special cases that are unavoidable.
    a73e627e