1. 15 Oct, 2004 1 commit
  2. 09 Aug, 2004 1 commit
    • Leigh Stoller's avatar
      Major rework of the script interface to Emulab. Up to now we have been · 5ef8f70a
      Leigh Stoller authored
      supporting both a shell script driven interface, plus the newer XMLRPC
      interface. This change removes the script driven interface from boss,
      replacing it with just the XMLRPC interface. Since we like to maintain
      backwards compatability with interfaces we have advertised to users (and
      which we know are being used), I have implemented a script wrapper that
      exports the same interface, but which converts the operations into XMLRPC
      requests to the server. This wrapper is written in python and uses our
      locally grown xmlrpc-over-ssh library. Like the current "demonstation"
      client, you can take this wrapper to your machine that has python and ssh
      installed, and use it there; you do not need to use these services from
      just users.emulab.net. Other things to note:
      * The wrapper is a single python script that has a "class" for each wrapped
        script. Running the wrapper without any arguments will list all of the
        operations it supports. You can invoke the wrapper with the operation as
        its argument:
          {987} stoller$ script_wrapper.py swapexp --help
          swapexp -e pid,eid in|out
          swapexp pid eid in|out
               -w   - Wait for experiment to finish swapping
               -e   - Project and Experiment ID
               in   - Swap experiment in  (must currently be swapped out)
              out   - Swap experiment out (must currently be swapped in)
          Wrapper Options:
              --help      Display this help message
              --server    Set the server hostname
              --login     Set the login id (defaults to $USER)
              --debug     Turn on semi-useful debugging
         But more convenient is to create a set of symlinks so that you can just
         invoke the operation by its familiar scriptname. This is what I have
         done on users.emulab.net.
          {987} stoller$ /usr/tesbed/bin/swapexp --help
          swapexp -e pid,eid in|out
          swapexp pid eid in|out
      * For those of you talking directly to the RPC server from python, I have
        added a wrapper class so that you can issue requests to any of the
        modules from a single connection. Instead using /xmlrpc/modulename, you
        can use just /xmlrpc, and use method names of the form experiment.swapexp,
        node.reboot, etc.
        Tim this should be useful for the netlab client which I think opens up
        multiple ssh connections?
      * I have replaced the paperbag shell with a stripped down xmlrpcbag shell
        that is quite a bit simpler since we no longer allow access to anything
        but the RPC server. No interactive mode, no argument processing, no
        directory changing, etc. My main reason for reworking the bag is to make
        it easier to understand, maintain, and verify that it is secure. The new
        bag also logs all connections to syslog (something we should have done in
        the orginal). I also added some setrlimit calls (core, maxcpu). I also
        thought about niceing the server down, but that would put RPC users at a
        disadvantage relative to web interface users. When we switch the web
        interface to use the XMLRPC backend, we can add this (reniceing from the
        web server would be a pain cause of its scattered implementation).
  3. 03 Aug, 2004 1 commit
    • Leigh Stoller's avatar
      A couple more minor changes before I turn the new stuff loose. · 8fddf3ce
      Leigh Stoller authored
      * Added a wrapper class so that you can invoke methods as
        experiment.swapexp or node.reboot. So instead of invoking as
        /XMLRPC/experiment can calling swapexp, you can call the server as
        /XMLRPC and call experiment.swapexp. This allows you to use a single
        connection to talk to different parts of the API. Note this is standard
        (or is it defacto) syntax in XMLRPC.
      * Changed the demonstration client to talk the server this way.
      * Changed paperbag to allow this as well; the xmlrpc server is invoked with
        no args, which tells it to export the wrapper interface instead of a
        specific module interface.
      * A few more cleanups in the server, more permission checks, etc.
  4. 13 May, 2004 1 commit
  5. 29 Apr, 2004 1 commit
  6. 19 Mar, 2004 1 commit
  7. 17 Mar, 2004 1 commit
  8. 16 Mar, 2004 1 commit
  9. 25 Feb, 2004 1 commit
  10. 16 Feb, 2004 1 commit
  11. 10 Feb, 2004 1 commit
  12. 03 Dec, 2003 1 commit
    • Robert Ricci's avatar
      Add a variable, $allow_interactive, that specificies whether an · 954fa99f
      Robert Ricci authored
      interactive shell is allowed or not - paperpag will just exit
      silently if interactive shells are not allowed, but no command was
      given on the command line.
      This variable is now off to prevent interactive shells, but all the
      interactive code is still in place, in case we ever have a reason to
      want it.
  13. 13 Nov, 2003 1 commit
  14. 09 Oct, 2003 1 commit
  15. 28 Apr, 2003 1 commit
  16. 04 Apr, 2003 2 commits
  17. 07 Mar, 2003 1 commit
  18. 07 Jan, 2003 1 commit
  19. 02 Dec, 2002 1 commit
  20. 06 Sep, 2002 1 commit
  21. 07 Jul, 2002 1 commit
  22. 04 Jun, 2002 1 commit
  23. 31 May, 2002 1 commit
  24. 08 Mar, 2002 1 commit
  25. 15 Oct, 2001 1 commit
    • Leigh Stoller's avatar
      Add node_admin command for users. Simply switches between the normal · 85b512e7
      Leigh Stoller authored
      testbed boot process and the freebsd pxeboot/MFS kernel. I'm hoping
      this will be useful enough for users to load their own disk images,
      but we shall see. Usage is simple:
      	/usr/testbed/bin/node_admin on|off pcXXX
      The "on" state boots the MFS, and the "off" states sets it back to
  26. 05 Oct, 2001 2 commits
  27. 21 Sep, 2001 1 commit
  28. 19 Sep, 2001 1 commit
  29. 18 Sep, 2001 1 commit
  30. 01 Aug, 2001 1 commit
    • Leigh Stoller's avatar
      An attempt at making image creation an easy/automatic operation. HA! · 27f26d99
      Leigh Stoller authored
      This uses the pxe booted freebsd kernel and MFS. In addition, I use
      the standard testbed mechanism of specifying a startup command to
      run, which will do the imagezip to NFS mounted /proj/<pid>/.... The
      controlling script on paper sets up the database, reboots the node,
      and then waits for the startstatus to change. Then it resets the DB
      and reboots the node so that it returns back to its normal OS. The
      format of operation is:
      	create_image <node> <imageid> <filename>
      Node must be under the user's control of course. The filename must
      reside in the node's project (/proj/<pid>/whatever) since thats the
      directory that is mounted by the testbed config software when the
      machine boots. The imageid already exists in the DB, and is used to
      determine what part of the disk to zip up (say, using the slice option
      to the zipper). Since this operation is rather time consuming, it does
      the usual trick of going to background and sending email status later.
  31. 10 May, 2001 1 commit
  32. 20 Apr, 2001 1 commit
  33. 11 Apr, 2001 1 commit
  34. 04 Jan, 2001 1 commit
  35. 03 Jan, 2001 1 commit
  36. 01 Dec, 2000 1 commit
    • Robert Ricci's avatar
      Added the ability to do 'cd <dir> && command' or · b6d20956
      Robert Ricci authored
      'cd <dir> ; command' (this is the only cirumstance where
      these characters, or 'chained comands' are allowed). This
      was done so that the wrapper script can use it, so that
      the wrapper will work properly for people who have real
      shells on paper.
  37. 17 Nov, 2000 2 commits