1. 07 Mar, 2002 2 commits
  2. 06 Mar, 2002 2 commits
  3. 05 Mar, 2002 3 commits
    • Leigh B. Stoller's avatar
    • 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
    • Leigh B. Stoller's avatar
      node.tcl: Run agent-attach through the node so that we can record · deb7b404
      Leigh B. Stoller authored
      which agents are attached to which node, so that we can assign
      portnumbers to them. Also add code to updating the DB with these
      agents (virt_trafgens).
      
      sim.tcl: Get rid of $pid_$eid_events (per experiment events table),
      and replace with global eventlist table. Revisit this later, since it
      was causing problems and we do not really have a problem right now.
      Maybe later.
      
      traffic.tcl: Add virt_trafgens DB table update code. Get rid of oskit
      based traffic generators and replace with FreeBSD nodes, which will
      boot up and check if they are traffic gen source. Add get_params call,
      called by the event code im sim.tcl to get the current params for the
      START event.
      deb7b404
  4. 27 Feb, 2002 1 commit
  5. 26 Feb, 2002 3 commits
  6. 25 Feb, 2002 3 commits
  7. 21 Feb, 2002 1 commit
    • Robert Ricci's avatar
      Actually call the code to pick which VLANs are allowed on which trunk. · afb28fde
      Robert Ricci authored
      When dealing with trunks, since they may be EtherChannels, we have to
      make another lookup on the switch to get the ifIndex for the whole
      channel - can't just use the ifIndex of one of the ports like you
      can from the Cisco CLI.
      
      These changes make snmpit slightly slower - it now has to get more information
      from the switches when it's going to create or delete VLANs. However, this
      is on the order of fractions of seconds, so it shouldn't be too noticable.
      afb28fde
  8. 20 Feb, 2002 1 commit
    • Robert Ricci's avatar
      Code for picking which VLANs are allowed to go across which trunks. · 11e0ea5f
      Robert Ricci authored
      As much of it as possible switch-independant, and put in snmpit_lib.
      Should work for arbitrarily complicated switch toplogies, as long as
      there are not multiple trunks between two switches. (Multiple ports
      combined into one trunk are fine, however.)
      
      As a result of this, VLAN creations and deletions now need to operate
      on all switches, not just on the ones that have ports in the VLAN.
      This is because the traffic may have to traverse switches that have no
      ports in the VLAN to reach other switches that do.
      
      Not called yet. I've done simple testing, but need to do more, as this
      could get us into major trouble if it has bugs.
      11e0ea5f
  9. 14 Feb, 2002 2 commits
  10. 12 Feb, 2002 5 commits
  11. 11 Feb, 2002 1 commit
    • Robert Ricci's avatar
      Two new functions: · 5db6c935
      Robert Ricci authored
      getTrunks: Build a structure representing all of the trunks in the switch
      	topolgy
      getTrunkPath: Find the shortest path between two switches, across the
      	trunks found by getTrunks
      
      Note that the getTrunkPath duplicates some work done in assign. However, we
      don't currently have a good way to pass this information from assign to
      snmpit, and we need to be able to figure this out anyway, in case snmpit
      isn't being called as part of experiment swapin.
      
      These functions should soon be used to pick which VLANs are allowed
      across which trunks.
      5db6c935
  12. 08 Feb, 2002 2 commits
    • Leigh B. Stoller's avatar
      Kill of savevlans since its simply a snapshot of DB state, and not · c8c2b569
      Leigh B. Stoller authored
      very useful by itself anyway.
      c8c2b569
    • 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
  13. 07 Feb, 2002 1 commit
  14. 01 Feb, 2002 1 commit
    • Mike Hibler's avatar
      Yet another attempt to Get It Right based on our latest half-assed · 609c547e
      Mike Hibler authored
      understanding of how mountd operates.
      
      Things that should be fixed:
      
      1. It iterates over every node calculating what directories are exported,
         what FSes they are on, etc.  Most of that work only needs to happen
         per experiment.
      
      2. The algorithm to determine what FS a directory is on is a hack.  I just
         take the first component of the path provided.  As long as we mount all
         our FSes at the top level and configure with canonical pathes, this is
         ok.  Other solutions require calling out to the ops node to get actual
         mount info.
      
      3. Once shared experiments are revived, the code to determine exported
         directories will need to change.  The algorithm for computing the
         exports lines should still be correct.
      609c547e
  15. 31 Jan, 2002 1 commit
  16. 30 Jan, 2002 2 commits
  17. 28 Jan, 2002 2 commits
  18. 23 Jan, 2002 4 commits
    • Robert Ricci's avatar
      New option: -c . Clears all VLANs are re-creates them from the · cee6ab9c
      Robert Ricci authored
      database.  Intended to be used to recover switch state after a
      crash or power outage.
      
      This option is farily dangerous, as it temporarily disrupts all
      experimental traffic, and will remove all hand-created VLANs.
      So, it interactively asks for confirmation that the user (who
      must be an admin, of course) really wants to do this.
      cee6ab9c
    • Robert Ricci's avatar
    • Robert Ricci's avatar
      There should _NOT_ be die()s in the modules, as this prevents · ae79f02d
      Robert Ricci authored
      things from getting cleaned up on failure.
      ae79f02d
    • Robert Ricci's avatar
      Some minor API changes to increase effieciency for Intels. · 9bd1dded
      Robert Ricci authored
      First, the stack-level createVlan() function no longer takes as an
      argument a list of devices the VLAN exists on, since it looks like
      this will never be needed.
      
      In it's place, createVlan() now takes a list of ports, so that it can
      (if so desired) put the ports in the VLAN without a seperate lock and
      unlock.
      
      The snmpit_intel module now uses its 'nested locking' feature to avoid
      additional locking in these cases. Note though, that the way that this
      is done is not safe for multiple switches in a stack. If we ever have
      to support multiple Intels (looks doubtful), this will have to be
      removed, or locking will need to be moved a level up to
      snmpit_intel_stack . Yuck.
      
      For Intels, the removeVlan() function calls removePortsFromVlan()
      itself, again to save locking overhead. The Cisco behavior, however,
      is unchanged, as locking is not expensive, and this would be too
      messy.
      9bd1dded
  19. 22 Jan, 2002 3 commits