Skip to content
Snippets Groups Projects
  1. Jul 30, 2008
    • Iustin Pop's avatar
      Simplify the log constants and add another one · 9936bd63
      Iustin Pop authored
      The patch changes the log constants by moving the slash to the end of
      the log dir instead of at the beginning of *each* log file name.
      
      It also adds a new LOG_COMMANDS constant (to be used in a next patch).
      
      Reviewed-by: ultrotter
      9936bd63
    • Iustin Pop's avatar
      Fix gnt-cluster getmaster · ce7151ae
      Iustin Pop authored
      This is special in the sense that it can run on any node. As such, we
      just instantiate ssconf and read the data from it.
      
      Reviewed-by: ultrotter
      ce7151ae
    • Guido Trotter's avatar
      Parallelize {Startup,Shutdown,Reboot}Instance · e873317a
      Guido Trotter authored
      Reviewed-by: iustinp
      e873317a
    • Guido Trotter's avatar
      Parallelize LUReinstallInstance · 4e0b4d2d
      Guido Trotter authored
      self.recalculate_locks[locking.LEVEL_NODE] could have any value and
      everything would work anyway. We'll use the string 'replace' by
      convention because in the future we might want an 'append' mode.
      
      Reviewed-by: iustinp
      4e0b4d2d
    • Guido Trotter's avatar
      LogicalUnit._LockInstancesNodes helper function · c4a2fee1
      Guido Trotter authored
      This function is used to lock instances' primary and secondary nodes
      after locking instances themselves.
      
      Reviewed-by: iustinp
      c4a2fee1
    • Guido Trotter's avatar
      Make sharing locks possible · 3977a4c1
      Guido Trotter authored
      LUs can declare which locks they need by populating the
      self.needed_locks dictionary, but those locks are always acquired as
      exclusive. Make it possible to acquire shared locks as well, by
      declaring a particular level as shared in the self.share_locks
      dictionary. By default this dictionary is populated so that all locks
      are acquired exclusively.
      
      Reviewed-by: iustinp
      3977a4c1
    • Guido Trotter's avatar
      Add LogicalUnit.DeclareLocks · fb8dcb62
      Guido Trotter authored
      This additional LogicalUnit function is optional to implement, but lets
      you change your locking needs for one level just before locking it, but
      after the previous levels have been already locked. It is useful for
      example to calculate what nodes to lock after locking an instance.
      
      Reviewed-by: iustinp
      fb8dcb62
    • Guido Trotter's avatar
      LURenameInstance, add/remove relevant locks · 74b5913f
      Guido Trotter authored
      LURenameInstance forgot to remove the old lock name and add the new one,
      making it impossible for parallel LUs to act on the instance (without a
      master daemon restart). This also fixes burning+rename with the
      parallelization of {Start,Stop}Instance.
      
      Reviewed-by: iustinp
      74b5913f
    • Michael Hanselmann's avatar
      Rewrite job queue · 85f03e0d
      Michael Hanselmann authored
      We found several issues in the old job queue implementation. It had race
      conditions, deadlocks and other deficiencies.
      
      Short summary:
      - _QueuedOpCode and _QueuedJob are now more or less data structures with a few
        utility functions. __Setup is gone.
      - DiskJobStorage and JobQueue classes merged into one to reduce code complexity.
      - One lock in JobQueue for almost everything. There's also a lock per opcode
        for log messages.
      
      Reviewed-by: iustinp
      85f03e0d
    • Michael Hanselmann's avatar
      workerpool: Log when waiting for a thread · c0a8eb9e
      Michael Hanselmann authored
      Reviewed-by: iustinp
      c0a8eb9e
    • Iustin Pop's avatar
      Rework master startup/shutdown/failover · b1b6ea87
      Iustin Pop authored
      This (big) patch reworks the master startup/shutdown and the fixes the
      master failover.
      
      What does the patch do?
      
      For master start/stop:
        - remove the old ganeti-master script and its associated man page
        - moves the ip start/stop directly into the backend.(Start|Stop)Master
        - adds start/stop of the master/rapi daemon into these functions,
          selectively based on the start/stop arguments
        - makes the master call via rpc StartMaster(start_daemons=False) to
          the local node so that the master IP is started
        - and finally changes the example init.d script to directly start and
          stop all three daemons, since they do the right thing (depending on
          master/not master role)
      
      For master failover:
        - moves the code from LUMasterFailover into bootstrap.MasterFailover,
          since we need to start/stop the master during this operation and
          thus it can't be executed from the master
        - removes the LUMasterFailover and its associated opcode
      
      Notes: ubuntu's /etc/lsb-base-logging.sh is dumb, so the messages 'not
      master' are not seen during startup on non-master nodes.
      
      Reviewed-by: ultrotter
      b1b6ea87
    • Iustin Pop's avatar
      Expose utils.DaemonPidFileName · 53beffbb
      Iustin Pop authored
      Since we need to compute this from outside utils.py, we change this to a
      public function.
      
      Reviewed-by: ultrotter
      53beffbb
    • Iustin Pop's avatar
      Implement checking for the master role in rapi · 5675cd1f
      Iustin Pop authored
      This patch moves the CheckMaster function from ganeti-masterd to ssconf
      (most logical place, it cannot go in utils since we would have recursive
      imports between ssconf and utils) and changes ganeti-rapi to also call
      this function.
      
      This is needed so that starting ganeti-rapi on a non-master node does
      the right thing.
      
      Reviewed-by: ultrotter
      5675cd1f
    • Iustin Pop's avatar
      Add a new parameter to backend.(Start|Stop)Master · 1c65840b
      Iustin Pop authored
      This patch adds a new, unused for now, parameter to the start and stop
      master operations in backend. The idea behind it is that we need to be
      able to control whether the IP (de)activation is coupled with daemon
      startup/shutdown.
      
      The callers are also modified to pass this parameter (even if unused for
      now).
      
      Reviewed-by: ultrotter
      1c65840b
  2. Jul 29, 2008
    • Michael Hanselmann's avatar
      Log thread name when debug output is enabled · 6aff91f6
      Michael Hanselmann authored
      Reviewed-by: iustinp
      6aff91f6
    • Michael Hanselmann's avatar
      jqueue: Fix error logging · 8090e19f
      Michael Hanselmann authored
      The passed parameters were not correct.
      
      Reviewed-by: iustinp, ultrotter
      8090e19f
    • Iustin Pop's avatar
      Fix constants typo · bff2ddc5
      Iustin Pop authored
      Reviewed-by: imsnah
      bff2ddc5
    • Iustin Pop's avatar
      Use constants for the pid file stems · 99e88451
      Iustin Pop authored
      Reviewed-by: imsnah
      99e88451
    • Iustin Pop's avatar
      Add a KillProcess function · b2a1f511
      Iustin Pop authored
      We cannot depend on all environments to have a start-stop-daemon or
      similar tool. We instead implement a KillProcess function that behaves
      similar to “start-stop-daemon --retry”.
      
      Note that the attached unittest can hang in foreground if the child
      misbehaves (doesn't write to the internal pipe). Since unittest are
      either run in the foreground or are run with a timeout from an automated
      framework, I think this is an acceptable trade-off (against of using
      hardcoded timeouts in the test).
      
      Reviewed-by: imsnah
      b2a1f511
    • Iustin Pop's avatar
      Change IsPidFileAlive into ReadPidFile · d9f311d7
      Iustin Pop authored
      We already have a function to test if a PID is alive, so it makes more
      sense to use function composition that force calling (since we need to
      read PIDs from files in other places too). Now IsProcessAlive returns
      False for PIDs <= 0, since this is the error return from ReadPidFile.
      
      The patch also adds a unittest for checking that WriteFile raises the
      correct exception, and checks that an invalid or missing file causes
      ReadPidFile to return zero. The unittest tearDown method will try to
      cleanup the temp directory too (otherwise it leaves stuff after it).
      
      Reviewed-by: ultrotter
      d9f311d7
    • Iustin Pop's avatar
      Make the rapi daemon create a pidfile · f71245a0
      Iustin Pop authored
      This is needed for controlling it cleanly with start-stop daemon.
      
      Reviewed-by: ultrotter
      f71245a0
  3. Jul 28, 2008
  4. Jul 25, 2008
  5. Jul 24, 2008
  6. Jul 23, 2008
    • Michael Hanselmann's avatar
      Move code formatting job ID into a base class · ce594241
      Michael Hanselmann authored
      A later patch will add a memory based job storage class, hence this
      code is going into a separate class. It also changes the number format
      to always use at least 10 digits, allowing up to 9'999'999'999 jobs to
      be sorted without using a custom function.
      
      Reviewed-by: iustinp
      ce594241
    • Guido Trotter's avatar
      Use pidfiles in example init script · 5947d6ec
      Guido Trotter authored
      Rather than searching for the ganeti daemons by name we'll use the
      pidfile they create to stop them. This change also adds the --oknodo
      option to start-stop-daemon when stopping ganeti (which means it won't
      give an error if it wasn't started).
      
      Reviewed-by: iustinp
      
      5947d6ec
Loading