IOD Prereqs

Tags:

Tasks

  • Generate IOD database schema. [Done, in CVS.]
  • Auto-populate machine and platform tables of above schema. [nmi_update_machine_table in CVS, as is cronmail, but the Crondor job script is not. See above.]
  • Add IOD meta-task support to task_loop.pl and verify that the plays nice with the web interface.
  • Transmit IOD requests from nmi_submit to task_loop.pl, canonicalizing the former for posterity.
  • Generate IOD commands in nmi_submit from the database. (This will involve hand-constructing a few [Java] prereq entries, as well as the associated scripts, tarballs, and input specification files/entries.)
  • Generate/install/utilize environment files in/for IOD prereqs as usual. (In particular, make sure JAVA_HOME is set correctly..)
  • Ensure that IOD works properly in/with multiplatform runs.

Cleanup

  • update.sh forked for IOD work (so it runs as a user). Fix this.

Future Work

  • Write tool to help populate prereq tables based on command-line arguments.
  • Write nmi_list_iod_prereqs, and/or make nmi_list_prereqs IOD-aware.
  • Web status pages for IOD prereqs?

Database Schema

  • machine table
    • id
    • name
    • platform_id
  • lastSeen

  • platform table
    • id
    • name
  • type

  • prereq table
    • id
    • name
    • version [This may mean we need to explicitly require that prereq versions start with a number and prereq names do not contain delimiters followed by numbers (e.g., modula-4-interpreter-2.3), so we can programatically split them.]
  • type

  • platform_prereq table
    • id
    • platform_id
    • prereq_id
  • prereqInstall_id

  • prereqInstall table
    • id
    • prereqSource_id [We want to re-use the input records and fetch scripts for getting the IOD prereqs.]
    • prereqSource_table [Even if the input record IDs were unique, we can avoid writing a dumb query this way.]
    • executable
    • arguments
    • description
  • diskFootprint

We should also associate the one-per-IOD-per-run Task with (probably) the platform_prereq table. We probably don’t want to repurpose the ‘exe’ field, although it’s (implicitly) available, because then we couldn’t join against the id tables (directly) — at least, as far as know, there’s no atoi()-equivalent in SQL.