1. 11 Jun, 2009 14 commits
    • Leigh B. Stoller's avatar
      662629af
    • Leigh B. Stoller's avatar
      Little bit of cleanup so that the VM mounting code can be used with · 99e0db95
      Leigh B. Stoller authored
      the openvz container code, just like we do from the mkjail path.
      99e0db95
    • Leigh B. Stoller's avatar
      Minor changes to the plab version of the proxy, so that we can run it · 323d41dd
      Leigh B. Stoller authored
      on local shared hosts. Like plab nodes, vnodes from different
      experiments will be running on the same physnode, and the plab proxy
      does exactly what we need.
      
      I actually install it as evproxy_shared ...
      
      Lbs
      323d41dd
    • Leigh B. Stoller's avatar
      Wrap up a vinterface in an object, and add methods to reserve and free · 949d9709
      Leigh B. Stoller authored
      shared bandwidth for that interface in the interface_state table.
      949d9709
    • Leigh B. Stoller's avatar
      Add a method to find out if an experiment has any interfaces with · ed7889f2
      Leigh B. Stoller authored
      trunking on. This is used by tbswap to determine if swapmod should
      optimize vlans setup/teardown. The optimization we currently use is
      that we leave the vlans in place, and then compare after assign
      runs. But since a trunked interface is potentially a shared resource
      of multiple lans, the optimization can break things pretty badly.
      So when an experiment has trunks, use the older method of tearing down
      all the vlans. I will need to come back to this at some point.
      
      When creating protovlans (as from the mapper wrapper), allow for
      attributes which get passed along when creating the actual Lan
      entries.
      ed7889f2
    • Leigh B. Stoller's avatar
      Add method to flush and reload the reservation info from the node · 39a76b80
      Leigh B. Stoller authored
      object.
      
      Method to find out if a physical node has any virtual nodes allocated
      to it.
      
      Method to release the bandwidth that a vnode on a shared host is
      using. This uses the vinterfaces table to find out what link is using,
      and then increments the remaining_bandwidth of the interface_state
      table. Tables are locked of course.
      
      Add method to allocate an rtabid, since like ssh ports on remote
      nodes, the rtabid is now a shared counter on a sharedhost.
      
      Hmm, a change to the TipServer() method that was for using console on
      boss.
      39a76b80
    • Leigh B. Stoller's avatar
      Cleanup of the physical state backup/removal code. Also fixes to the · 9b6ad61b
      Leigh B. Stoller authored
      NodeList method, which no longer uses the version in libdb (still
      trying hard to squash libdb).
      9b6ad61b
    • Leigh B. Stoller's avatar
      Add a sanity check to make sure we do not release a physical node that · 5ee0076e
      Leigh B. Stoller authored
      is acting as a shared host, and has active vnodes on it. Makes for a
      real mess in the DB!
      
      When releasing virtnodes on sharedhosts, release the bandwidth
      allocated to that node (interface_state table).
      
      Minor fix; after locking the tables, reload the reservation info to
      make sure nothing has changed.
      
      Minor fix; reset the rtabid=0 when releasing.
      5ee0076e
    • Leigh B. Stoller's avatar
      Minor fix; after locking thet tables, reload the reservation info to · 1eddb639
      Leigh B. Stoller authored
      make sure nothing has changed.
      1eddb639
    • Leigh B. Stoller's avatar
      Change xmlconvert to the VirtExperiment module, which wraps up all of · 6a3c51b9
      Leigh B. Stoller authored
      the virtual tables in an object, sub objects for table, subsub objects
      for rows, and all of the methods for accessing things.
      
      This change has been sitting in my devel tree for a long time, running
      on my elabinelab.
      6a3c51b9
    • Leigh B. Stoller's avatar
      Minor fix to keys for eventlist table. · 2e89861e
      Leigh B. Stoller authored
      2e89861e
    • Leigh B. Stoller's avatar
    • Leigh B. Stoller's avatar
      Two new minor functions: · a727dac1
      Leigh B. Stoller authored
      * tb-set-node-sharingmode{node mode} sets the sharing mode for a
        physical node. Only admins can do this, to create an experiment to
        contain shared nodes.
      
      * tb-set-node-usesharednode{node weight} sets a desire to use a shared
        node (for a pcvm). This goes into assign, against the a feature that
        is set for all nodes actining as a shared host.
      a727dac1
    • Leigh B. Stoller's avatar
      Various changes to support shared nodes (a node that can be shared · 02661f36
      Leigh B. Stoller authored
      between experiments and projects using VMs (jail, vservers, openvz,
      etc).
      
      * Add new slot to virt_nodes called "sharing_mode". Only admins can set
        this, via the NS file, to create an experiment consisting of nodes
        that are shared. A text string, in case we want to support different
        kinds of sharing modes.
      
      * Add new slot to reserved called "sharing_mode". This is copied from
        the virt_nodes table as above. Also, virtnodes that are currently
        allocated to a shared node, get this slot set, so that the rest of
        the system knows.
      
      * Add a toklen to the "erole" slot of the reserved table, called
        "sharedhost"; erole is returned to the client when it boots, and
        this is how the client knows it is acting as a shared host. We could
        probably compute this value in tmcd, but I did not want to change
        that now.
      
      * Add new slot to interfaces called "trunk". This is set when an
        interface should be set to trunking by "snmpit -t". We previously
        used the vinterfaces table to determine this, but there are other
        cases when we want an interface to be trunked.
      
        Aside: there is a problem with this approach I realized later;
        trunked interfaces are essentially shared resources of multiple
        vlans, which does not play well with the vlan optimizations in
        swapmod.
      
      * Add new slot to vinterfaces called "bandwidth"; this is the amount
        of bandwidth that link is defined to use (via the NS file). This is
        used in resource scheduling of link bandwidth.
      
      * Add new slot to interface_state called "remaining_bandwidth". For a
        shared node, we have to reserve both the nodes and the link bandwidth.
        We use this slot (with locking) from the mapper_wrapper to make sure that
        the link has not been consumed already by another assignment running at
        the same time.
      
      * Add new tokens "veth-ne", "veth-en", and "vlans" to the osfeatures slot
        of the os_info table. veth-en (encap) and veth-ne (no-encap) are intended
        to replace the current "veths" feature. "vlans" is set for OSs that
        support vlan devices.
      
      * Fix the primary key on the linkdelays table; it needed to have the
        exptidx in the key so that we can allocated linkdelays for different
        experiments to the same node.
      02661f36
  2. 10 Jun, 2009 4 commits
  3. 09 Jun, 2009 4 commits
  4. 08 Jun, 2009 2 commits
  5. 05 Jun, 2009 13 commits
  6. 04 Jun, 2009 2 commits
  7. 03 Jun, 2009 1 commit
    • Kevin Atkinson's avatar
      Add support for returning more detailed information in the case of a · 340f10a4
      Kevin Atkinson authored
      swap failure in the xmlrpc server.  To use it, the extra option
      "extrainfo" needs to be set to true.  This will cause "value" to be a
      structure (in the XML-RPC sence) with useful information instead of
      just the exit value of the script.  The structure will contain at
      least the following fields:
        cause: "temp", "user", etc
        cause_desc
        mesg: more specific error information
        exitval: script return value
        log: activity log
      Note, that value may still be an integer in the case of some other
      failure that is not swap related.
      
      To support this, the "-X" option was added to swapexp and batchexp
      which will output a RPC-XML method response to stdout when possible.
      340f10a4