1. 15 Jul, 2008 1 commit
  2. 14 Jul, 2008 10 commits
    • Michael Hanselmann's avatar
      Fix previous patch using workerpool in masterd · 36088c4c
      Michael Hanselmann authored
      The function to stop a worker pool is TerminateWorkers(), not Shutdown().
      
      Reviewed-by: iustinp
      36088c4c
    • Iustin Pop's avatar
      Fix a syntax error in gnt-backup · 726a7f7f
      Iustin Pop authored
      I broke gnt-backup in rev 1035, sorry :(
      
      Reviewed-by: imsnah
      726a7f7f
    • Michael Hanselmann's avatar
      Use workerpool in master daemon · 23e50d39
      Michael Hanselmann authored
      Reusing threads instead of starting one for each request is more efficient.
      
      Reviewed-by: iustinp
      23e50d39
    • Iustin Pop's avatar
      Further fixes to enable RAPI startup · d4104181
      Iustin Pop authored
      Note that since RAPI itself doesn't use luxi.Client yet, nothing works,
      but at least it can startup now.
      
      Reviewed-by: imsnah
      d4104181
    • Iustin Pop's avatar
      Add forgotten RAPI constant · d3f0bf8f
      Iustin Pop authored
      This was forgot on the forward-porting of RAPI.
      
      Reviewed-by: imsnah
      d3f0bf8f
    • Iustin Pop's avatar
      Improve cli.SubmitOpCode · e2212007
      Iustin Pop authored
      Currently, the feedback_fn argument to SubmitOpCode is no longer used.
      We still need it in burnin, so we re-enable it by making the code call
      that function with the msg argument in case feedback_fn is callable. The
      patch also modifies burnin to accept the new argument format (msg is not
      a triple instead of a string).
      
      The patch also removes the ‘proc’ argument as it's obsolete; instead we
      can accept a luxi.Client instance (noone uses this right now).
      
      Reviewed-by: ultrotter
      e2212007
    • Iustin Pop's avatar
      First version of user feedback fixes · f1048938
      Iustin Pop authored
      This patch contains a raw version for fixing feedback_fn.
      
      The new mechanism works as follows:
        - instead of a per-Processor feedback_fn, there's one for each
          ExecOpCode, so that feedback for different opcodes go via possibly
          different functions
        - each _QueuedOpCode gets a message buffer, a method for adding
          feedback and a method for retrieving (parts of) the feedback
        - the _QueuedJob object gets a new attribute that is equal to the
          index of the currently executing opcode
        - job queries get an extra parameter called 'ticker' that will return
          the latest message on the current executing opcode
        - the cli.py job completion poll will show the new status if different
          from the old one
      
      Of course, quick messages will be lost, as currently only the latest one
      is available. Also changes between opcodes are not represented at all.
      
      Reviewed-by: imsnah
      f1048938
    • Iustin Pop's avatar
      Cache some jobs in memory · ac0930b9
      Iustin Pop authored
      This patch adds a caching mechanisms to the JobStorage. Note that is
      does not make the memory cache authoritative.
      
      The algorithm is:
        - all jobs loaded from disks are entered in the cache
        - all new jobs are entered in the cache
        - at each job save (in UpdateJobUnlocked), jobs which are not
          executing or queued are removed from the cache
      
      The end effect is that running jobs will always be in the cache (which
      will fix the opcode log changes) and finished jobs will be kept for a
      while in the cache after being loaded.
      
      Reviewed-by: imsnah
      ac0930b9
    • Iustin Pop's avatar
      Fix JobStorage._GetJobIDsUnlocked · 8a70e415
      Iustin Pop authored
      The job ID returned must be an integer (and the regex enforces that),
      but we didn't convert it manually.
      
      Reviewed-by: imsnah
      8a70e415
    • Iustin Pop's avatar
      Change JobStorage to work with ids not filenames · 911a495b
      Iustin Pop authored
      Currently some of the functions in JobStorage work with filenames (which
      is an implementation detail and should only be used when dealing with
      the storage) and not with job IDs. We need to change this in order to
      implement a job cache.
      
      Reviewed-by: ultrotter
      911a495b
  3. 11 Jul, 2008 11 commits
    • Michael Hanselmann's avatar
      Add experimental persistency to job queue · f1da30e6
      Michael Hanselmann authored
      It's not perfect and it's not finished, but it's a start.
      
      - Serial number is read only once, but written on each update
      - Jobs are kept only on disk (caching will be implemented)
      
      Reviewed-by: iustinp
      f1da30e6
    • Iustin Pop's avatar
      Convert backend.py to the logging module · 18682bca
      Iustin Pop authored
      The patch also switches some of the exception logs to use
      logging.exception (and therefore the log message will have a diferent
      format).
      
      (Note that this might not be a good choice in all cases, though)
      
      Reviewed-by: imsnah
      18682bca
    • Iustin Pop's avatar
      Add PID to all logs · a237d0a8
      Iustin Pop authored
      This patch (for trunk) adds the PID to all daemon logs.
      
      Reviewed-by: imsnah
      a237d0a8
    • Michael Hanselmann's avatar
      Fix rapi documentation · 081242d8
      Michael Hanselmann authored
      As a nice side-effect this also fixes "make distcheck".
      
      The way used to include the generated rapi-resources.sgml file only
      works if it's built in the same directory. That's not the case during
      "make distcheck". The patch changes the sed script used for variables
      to include the file using its absolute path.
      
      Reviewed-by: iustinp
      081242d8
    • Iustin Pop's avatar
      Fix backend.NodeVolumes handling of LVM output · a17a7623
      Iustin Pop authored
      This is the same fix as for GetVolumeList.
      
      I've checked manually and all other places that call lvm commands are
      already checking the output validity in terms of correct number of
      fields.
      
      Reviewed-by: ultrotter
      a17a7623
    • Oleksiy Mishchenko's avatar
      Copy the rest of the Restful-API files to trunk · 4cbd4462
      Oleksiy Mishchenko authored
      Reviewed-by: imsnah
      4cbd4462
    • Iustin Pop's avatar
      Fix backend.GetVolumeList handling of LVM output · df4c2628
      Iustin Pop authored
      Sometimes ‘lvs’ can spit error messages on stdout, even when one wants
      to parse the output:
      ...
      Inconsistent metadata copies found - updating to use version 2776
      ...
      
      So we need to validate the output to guard against such cases.
      
      The patch converts the split on the separater to match against a regex
      and extract the fields via groups. The original separator choice is a
      bad one now :(
      
      Reviewed-by: imsnah
      df4c2628
    • Michael Hanselmann's avatar
      Use new HTTP server classes in ganeti-noded · 1df6506c
      Michael Hanselmann authored
      Reviewed-by: iustinp
      1df6506c
    • Michael Hanselmann's avatar
      Add generic HTTP server classes · a43f68dc
      Michael Hanselmann authored
      Some of the code is adopted from the 1.2 branch
      (lib/rapi/RESTHTTPServer.py). This code can be used as a base for the
      various HTTP servers in Ganeti.
      
      Reviewed-by: iustinp
      a43f68dc
    • Michael Hanselmann's avatar
      Make "gnt-job list" work again · af30b2fd
      Michael Hanselmann authored
      "gnt-job list" was broken after my recent changes in the RPC
      between clients and the master. This patch makes it work again.
      
      Reviewed-by: iustinp
      af30b2fd
    • Oleksiy Mishchenko's avatar
      Initial copy of RAPI filebase to the trunk · 8c229cc7
      Oleksiy Mishchenko authored
      Reviewed-by: iustinp
      8c229cc7
  4. 10 Jul, 2008 5 commits
  5. 09 Jul, 2008 13 commits
    • Iustin Pop's avatar
      Fix double-logging in daemons · ff5fac04
      Iustin Pop authored
      Currently, in debug mode, both the logfile handler and the stderr
      handler will log debug messages. Since the stderr is redirected to the
      same logfile (to catch non-logged errors), it means log entries are
      doubled.
      
      The patch adds an extra parameter to the logger.SetupDaemon() function
      that allows disabling of the stderr logging. The master and node daemon
      will use this to enable stderr logging only when running in foreground.
      
      Reviewed-by: imsnah
      ff5fac04
    • Iustin Pop's avatar
      ganeti-noded logging improvements · c89189b1
      Iustin Pop authored
      The patch adds some more logging to the node daemon:
      
      - log methods at beggining not only at the end
      - log method parameters (they are very verbose, but useful)
      
      A separate change is to initialize the global variable in the global
      scope, not inside main().
      
      Reviewed-by: imsnah
      c89189b1
    • Iustin Pop's avatar
      Fix utils.py unittest · e5392d79
      Iustin Pop authored
      Reviewed-by: imsnah
      e5392d79
    • Iustin Pop's avatar
      Move the master socket in the ganeti run dir · 68676a00
      Iustin Pop authored
      ... as it was intended from the beggining, but by mistake left in the
      top run dir.
      
      Reviewed-by: ultrotter
      68676a00
    • Iustin Pop's avatar
      Reduce duplicate Attach() calls in bdev · cb999543
      Iustin Pop authored
      Currently, the 'public' functions of bdev (FindDevice and
      AttachOrAssemble) will call the Attach() method right after class
      instantiation.
      
      But the constructor itself calls this function, and therefore we have
      duplicate Attach() calls (which are not cheap at all).
      
      The patch introduces a new 'attached' instance attribute that tells if
      the last Attach() was successful. The public functions reuse this so
      that we only do the minimum required number of calls.
      
      Reviewed-by: imsnah
      cb999543
    • Iustin Pop's avatar
      Convert bdev.py to the logging module · 468c5f77
      Iustin Pop authored
      This does not enhance in any way the messages; it just switches to the
      new module.
      
      Reviewed-by: imsnah
      468c5f77
    • Iustin Pop's avatar
      Convert utils.py to the logging module · bb698c1f
      Iustin Pop authored
      The patch also logs all commands executed from RunCmd when we are at
      debug level.
      
      Reviewed-by: imsnah
      bb698c1f
    • Iustin Pop's avatar
      Remove the old locking functions · d4fa5c23
      Iustin Pop authored
      This removes (hopefully) all traces of the old locking functions and
      uses.
      
      Reviewed-by: imsnah
      d4fa5c23
    • Michael Hanselmann's avatar
      Remove old job queue code · 2467e0d3
      Michael Hanselmann authored
      Reviewed-by: iustinp
      2467e0d3
    • Michael Hanselmann's avatar
      Change masterd/client RPC protocol · 0bbe448c
      Michael Hanselmann authored
      - Introduce abstraction class on client side
      - Use constants for method names
      - Adopt legacy function SubmitOpCode to use it
      
      Reviewed-by: iustinp
      0bbe448c
    • Michael Hanselmann's avatar
      Make luxi RPC more flexible · 3d8548c4
      Michael Hanselmann authored
      - Use constants for dict entries
      - Handle exceptions on server side
      - Rename client function to CallMethod to match server side naming
      
      Reviewed-by: iustinp
      3d8548c4
    • Michael Hanselmann's avatar
      Instantiate new job queue in master daemon · 50a3fbb2
      Michael Hanselmann authored
      Reviewed-by: iustinp
      50a3fbb2
    • Michael Hanselmann's avatar
      Add very simple job queue · e2715f69
      Michael Hanselmann authored
      Reviewed-by: iustinp
      e2715f69