1. 07 Mar, 2002 1 commit
  2. 05 Mar, 2002 1 commit
    • Leigh B. Stoller's avatar
      A wide ranging set of event system changes: · 0318cc22
      Leigh B. Stoller authored
      assign_wrapper.in: Hack in a change that ensures a delay node is
      created for any link on which an event is posted (up,down,modify),
      no matter what its initial parameters are. ie: If a link is created
      with no delay, but there is an event that adds a delay later, then we
      must drop in a delay node. Same for up/down on a link. We do this in
      the delay node. I am reasonably confident that this change is fine for
      duplex links, but I am less sure of the effect on lans!
      
      eventsys_control.in: Checkpoint latest changes. Add "replay" option,
      which right now just stops and starts the event scheduler so that it
      reloads the entire event list. Add check for existing experiment, and
      that the experiment is either active or swapping (do not want to start
      a scheduler for a swapped out experiment!). Add check to see if there
      are any events, and skip startup if there are not events in the DB.
      Lastly, get very serious about preventing more than one scheduler from
      being started, either by accident or intentionally. My protocol is to
      lock the table, grab and set the pid to -pid, test the pid for a
      positive value, and if positive, send the scheduler a kill(TERM) so
      that it can cleanup, clear the pid to zero in the DB, and exit. This
      approach ensures that we do not try to send a kill to a pid that is no
      longer active or owned by the user (this last part is not really
      necessary cause of how pids are reused, but it was easy to add so why
      not).
      
      exports_setup.in: Trivial change to make it easier to turn this on
      temporarily in devel trees.
      named_setup.in: Ditto.
      
      node_reboot.in: Add call to TBdbfork() in child cause of apparent DB
      connection problems across forks. In the child, set the eventstatus
      for the node to REBOOT if successful (not this event status stuff is
      temporary, will be recast in next set of revisions).
      
      GNUmakefile:  Add new controlling program, eventsys_control.
      power.in:     Ditto previous comment about REBOOT.
      os_setup.in:  Non event system cleanups.
      tbend.in:     Add DB cleanup of the new virt_trafgens and eventlist tables.
      tbprerun.in:  Ditto.
      tbreport.in:  Print out the event list in a pretty print format.
      tbswapin.in:  Add call to start the event system. Also a big fix; move
                    the named script up above the os_setup so that the named
                    tables have been updated by the time the first node
                    reboots. I noticed that nodes were failing on gethostbyname().
      tbswapout.in: Add call to stop the event system.
      0318cc22
  3. 12 Feb, 2002 1 commit
  4. 08 Feb, 2002 1 commit
  5. 17 Jan, 2002 1 commit
  6. 07 Jan, 2002 1 commit
  7. 26 Dec, 2001 1 commit
    • Leigh B. Stoller's avatar
      A bunch o' account managment script schanges. I have reworked · 46068860
      Leigh B. Stoller authored
      mkprojdir, mkacct-cntrl, mkgroup, and group-update into a set of new
      scripts that are more specific to their intended operation, and strive
      to do less work.
      
      1. mkacct - Replaces mkacct-cntrl. This script no longer does any
         group stuff. All it does is create new accounts, or update the
         password and gecos fields of existing accounts. Usage is the same
         as it was: "mkacct <userid>", and is typically invoked from the web
         interface via the approveuser form.
      
      2. mkgroup - Replaces group-update. This script creates new groups,
         either for the main project when it is approved, or for subgroup
         creation. This script does not alter the group membership. Usage
         is typically from the web interface, but mkgroup can be invoked
         from the command line: "mkgroup [-b | -a] <pid> <gid>" where -b
         puts it in the background and sends email later, while -a just
         captures the log and emails. This "audit" feature is going to find
         its way into more scripts as soon as I figure out a neat and clean
         perl mechanism to make it easy.
      
      3. setgroups - Replaces group-update. This script modifies the group
         membership of either specific users, or all the users in a
         project. It is typically invoked from the web interface when a
         project leader edits the subgroup membership or when a user is
         first approved to a project or subgroup. Command line usage is:
      
      	setgroups [-b | -a] -p <pid> [user ...]
              setgroups [-b | -a] [user ...]\n
      
         The first form is mostly a means to speed things up. The web
         interfaces knows exactly what users have need to be changed, but a
         global project update is nice too.
      
      4. mkproj - Replaces mkprojdir. Actually, mkproj still has all that
         directory code, but it also handles creating the groups and the
         account for the project leader. Part of my policy to move as much
         random code out of the web interface and into the PERL backend
         where it belongs.
      46068860
  8. 05 Nov, 2001 1 commit
    • Leigh B. Stoller's avatar
      Changes to node control (web page). Added a backend script to do this · f9cfddd4
      Leigh B. Stoller authored
      stuff so that the web page did not need to do anything except display
      and form processing. Add tbsetup/node_control for backend so that it
      can be called from the command line too. The virt_nodes table is also
      updated (for those values that have virt_nodes equivalents), and this
      mostly implies that changes can be applied only to swapped in
      experiments since we use the reserved table to map pcXXX to its vname
      so that the virt_nodes table can be updated. It is an easy extension
      to allow changes based on the pid/eid/vname, but I do not see a reason
      to support this ability yet. Note usage:
      
          Usage: node_control name=value [name=value ...] node [node ...]
                 node_control -e pid,eid name=value [name=value ...]
                 node_control -l
          For multiword values, use name='word0 ... wordN'
          Use -l to get a list of operational parameters you can change.
          Use -e to change parameters of all nodes in an experiment.
      
          {824} stoller$ /build/testbed/install//bin/node_control -l
            next_boot_osid            - (administrators only)
            startup_command
            bios_version              - (administrators only)
            rpms                      - (multiple options allowed)
            default_boot_cmdline
            default_boot_path
            default_boot_osid
            next_pxe_boot_path        - (administrators only)
            tarfiles                  - (multiple options allowed)
            pxe_boot_path             - (administrators only)
            next_boot_cmdline         - (administrators only)
            deltas                    - (multiple options allowed)
            next_boot_path            - (administrators only)
      f9cfddd4
  9. 31 Oct, 2001 1 commit
    • Robert Ricci's avatar
      Major overhaul of snmpit. Highlights, in no particular order: · 7e53c10a
      Robert Ricci authored
      Now supports multiple switches and multiple stacks. To do this, the existing
      snmpit_cisco module had to be modified to behave as a true object, and its
      interface changed.
      
      A new layer of abstraction has been added: the stack. This is to hide the
      details of how things such as VLAN creation occur across multiple devices. For
      example, in Cisco stacks, you always contact the stack leader (VTP server) to
      create/delete VLANs. Other switches may have different semantics, such as
      having to contact every switch to create the VLAN.
      
      Now uses libdb for database access and permissions checks.
      
      Hardware details are hidden as much as possible in the user interface. For
      example, the creation and deletion commands now take VLAN identifiers, and
      snmpit transparently turns these into device-specific VLAN numbers.
      
      snmpit.in has been re-written from scratch. The new version uses three basic
      steps:
      1) Process command line options and determine operation to run
      2) Determine which devices, ports, and VLANs will be involved and make
         the appropriate objects
      3) Actually perform the operation
         when TESTMODE is set, does only steps 1 and 2
      
      Some command-line options have changed. This is because we now use getopt,
      rather than a home-grown parser, to parse the command line. As a result of the
      large number of options, and an attempt to mimic old options as much as
      possible, the options are no longer very mnemonic.
      
      Uses a new table called switch_stacks to figure out which switches belong to
      which stacks. A stack is defined as a set of switches that share VLANs.
      
      All snmpit scripts and modules now run with 'use strict' to help catch certain
      programming errors.
      
      VLAN listing now prints out the pid/eid and vname for VLANs, if possible.
      
      A few things have bitrotted due to these changes:
      * snmpit_intel will need to be re-tooled to use the new interface, and to
        behave as a proper object
      * vlansync, vlandiff, and resetvlans depend on the output of snmpit, and will
        need to be updated to understand its new output format
      7e53c10a
  10. 24 Oct, 2001 1 commit
    • Leigh B. Stoller's avatar
      Add swappable and priority bits to experiment creation form. Not used, · 28c1968f
      Leigh B. Stoller authored
      but simply entered into the DB record for the experiment until we know
      what to do with them. Add to batchexp script arguments, since all that
      stuff is done outside the web interface. Add a swapexp perl script to
      swap an an experiment in/out form the command line. Add web links on
      the Experiment Information page to do this from the web interface. A
      bunch of locking changes. Previously expt_terminating in the
      experiment record prevented multiple calls to terminate an experiment,
      but now we have a more general locking problem with
      start,swapin,swapout, and terminate, so change expt_terminating to
      expt_locked (still a datetime field) and add locking to all of
      startexp, swapexp, and endexp. Note that batch experiments cannot be
      swapped yet because of locking issues still to be resolved. Minor
      cleanup in tbreport to make email message look better.
      28c1968f
  11. 17 Oct, 2001 1 commit
    • Leigh B. Stoller's avatar
      Rework of the batch experiment code. Unified it with the immediate · 4d420b21
      Leigh B. Stoller authored
      experiment code. No longer uses another table. Rather, the experiment
      record contains a couple of extra fields for the batch system. Also
      combined some of the backend code (no longer a killbatch script).
      Also added scriptable experiments; the batchexp program in the bin
      directory can start an experiment from the command line, and in fact
      is used from the web page for both batch experiments and immediate
      experiments (-i option). All of the DB code that was in the web
      interfaces was moved to batchexp.
      4d420b21
  12. 16 Oct, 2001 1 commit
  13. 21 Sep, 2001 1 commit
  14. 19 Sep, 2001 1 commit
  15. 14 Sep, 2001 2 commits
    • Mac Newbold's avatar
      Fix typo: frisbeelauncer->frisbeelauncher · f061f64c
      Mac Newbold authored
      f061f64c
    • Robert Ricci's avatar
      New script: frisbeelauncher · b26a78d3
      Robert Ricci authored
      Manages the launching of new frisbee servers, and recording the
      addresses the use in the database. If called for an image that is
      already associated with a running server, exits quitely. Otherwise,
      registers the new server's address and goes into the background, waiting
      for the frisbee server to die so that it can unregister the address.
      b26a78d3
  16. 30 Aug, 2001 1 commit
  17. 14 Aug, 2001 1 commit
  18. 13 Aug, 2001 1 commit
  19. 09 Aug, 2001 1 commit
  20. 31 Jul, 2001 1 commit
  21. 25 Jul, 2001 1 commit
    • Christopher Alfeld's avatar
      Added exitonwarn library to everything. · 504e8e9f
      Christopher Alfeld authored
      Fixed some warnings in assign_wrapper that were subsequently caught.
      
      exitonwarn is a library that, when used in a script, causes it to exit 255
      when warnings are sent.  It still shows all warnings, just does an ugly
      perl hack to error on script termination.
      504e8e9f
  22. 24 Jul, 2001 1 commit
    • Leigh B. Stoller's avatar
      Add new console_reset script to bulk reset all of the tip lines on · 4303838f
      Leigh B. Stoller authored
      plastic. Useful for when plastic reboots, although it needs to be
      run from paper of course. We should probably set up some kind of
      reboot utility for when plastic reboots, since when capture fires up,
      the "acl" files are all in the wrong group/mode. On the other hand,
      this shared file based permission scheme is going to end up changing
      anyway soon, since it won't work when the serial lines are on other
      machines. Will need a tip permserver at that point.
      4303838f
  23. 11 Jul, 2001 1 commit
    • Mac Newbold's avatar
      Added sched_reserve. Works kind of like sched_reload, but for a reservation. · e1f4263c
      Mac Newbold authored
      Rob and I noticed that when we need to do maintainance to a node, its hard
      to grab it when it gets freed before it gets taken again. So this will allow
      admins to set up nodes so that when the current owner frees them, they
      immediately are moved into another experiment. For instance, if I need to do
      an upgrade on all the machines in the testbed, I can do:
      
      sched_reserve testbed down pc1 pc2 pc3 [...] pc40
      
      and it will immediately reserve any free nodes, skip any that are already
      in testbed/down, and add an entry to the next_reserve table for any nodes
      that are already reserved. Then nfree checks for entries in the next_reserve
      table before it lets any nodes go (much like it does for the reloads table),
      and moves them into the expt before it can get reserved again. So we can
      guarantee that the next time a node is freed, it will be saved for us.
      
      Note that this can also be useful to accumulate nodes for a large experiment,
      since you can make sure you get them as soon as the current owner is done.
      e1f4263c
  24. 20 Jun, 2001 1 commit
  25. 24 May, 2001 1 commit
  26. 17 May, 2001 1 commit
  27. 10 May, 2001 2 commits
  28. 12 Apr, 2001 2 commits
  29. 11 Apr, 2001 1 commit
  30. 30 Mar, 2001 1 commit
    • Leigh B. Stoller's avatar
      Reloading daemon. Looks for free nodes that have not been reloaded · 74d21844
      Leigh B. Stoller authored
      since the last reservation (as determined by last_reservation table).
      Picks one (randomly) from that set of nodes, and calls sched_reload on
      it. Then waits until the node has finished reloading, as determined by
      the reserved table, which gets cleared by the tmcd when the node first
      reboots after a scheduled reload. Sleeps 30 seconds, and then goes
      around again. So at most one node is tied up in a reload at a time,
      which seems like a good balance between trying to keep the machines in
      a pristine state, and having nodes available for use.
      
      The advantage of this approach is that instead of calling sched_reload
      on 40 nodes (after generating a new image) and watching the network
      meltdown, we can let the nodes reload at a slower pace. We could call
      sched_reload on allocated nodes so that they will load when freed, but
      we run into the problem of big experiments ending and causing meltdown.
      
      The downside is that this approach is a little too aggressive. Nodes
      will end up reloading after just a single experiment. Need finer grain
      control over when to reload, but I will leave that as an exercise for
      later.
      74d21844
  31. 29 Mar, 2001 1 commit
    • Leigh B. Stoller's avatar
      A set of change for exporting project and user directories only to · 407cd1ac
      Leigh B. Stoller authored
      machines in the experiment. exports_setup runs on paper and queries
      the DB, generating a set of export lines. That is sent over to
      plastic, and piped into exports_setup.proxy, which generates a new
      /etc/exports file and restarts mountd. All of the client setup scripts
      have been changed to mount the project and user directories.
      407cd1ac
  32. 23 Mar, 2001 1 commit
  33. 19 Mar, 2001 1 commit
  34. 15 Mar, 2001 1 commit
  35. 21 Feb, 2001 1 commit
  36. 27 Jan, 2001 1 commit
  37. 09 Jan, 2001 1 commit