1. 11 Aug, 2008 1 commit
  2. 08 Aug, 2008 1 commit
  3. 31 Jul, 2008 1 commit
    • Michael Hanselmann's avatar
      Add FileLock utility class · a87b4824
      Michael Hanselmann authored
      This class is a wrapper around fcntl.flock and abstracts opening and
      closing the lockfile. It'll used for the job queue.
      
      (The patch also removes a duplicate import of tempfile into the unittest)
      
      Reviewed-by: iustinp
      a87b4824
  4. 30 Jul, 2008 3 commits
    • Iustin Pop's avatar
      Fix a misuse of exc_info in logging.info · 8161a646
      Iustin Pop authored
      This is my fault, sorry.
      
      Reviewed-by: imsnah
      8161a646
    • Iustin Pop's avatar
      Fix pylint-detected issues · 38206f3c
      Iustin Pop authored
      This is mostly:
        - whitespace fix (space at EOL in some files, not all, broken
          indentation, etc)
        - variable names overriding others (one is a real bug in there)
        - too-long-lines
        - cleanup of most unused imports (not all)
      
      Reviewed-by: ultrotter
      38206f3c
    • 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
  5. 29 Jul, 2008 2 commits
    • 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
  6. 28 Jul, 2008 1 commit
  7. 23 Jul, 2008 2 commits
    • Guido Trotter's avatar
      Add utils.{Write,Remove}PidFile · b330ac0b
      Guido Trotter authored
      WritePidFile is a helper function that writes the current pid in a
      pidfile within the ganeti run directory. RemovePidFile tries to delete
      it.
      
      Reviewed-by: iustinp
      
      b330ac0b
    • Guido Trotter's avatar
      Add utils.IsPidFileAlive function · fee80e90
      Guido Trotter authored
      This helper function reads a pid from a file containing it and checks
      whether it refers to a live process.
      
      Reviewed-by: iustinp
      
      fee80e90
  8. 21 Jul, 2008 1 commit
    • Michael Hanselmann's avatar
      Add signal handler class · de499029
      Michael Hanselmann authored
      This signal handler class abstracts some of the code previously
      used in other places. It also uninstalls its handler when Reset()
      is called or the class is destructed, thereby restoring the
      previous behaviour.
      
      Reviewed-by: iustinp
      de499029
  9. 10 Jul, 2008 2 commits
  10. 09 Jul, 2008 2 commits
  11. 01 Jul, 2008 1 commit
  12. 23 Jun, 2008 1 commit
  13. 18 Jun, 2008 1 commit
    • Michael Hanselmann's avatar
      Add more parameters to utils.WriteFile · 71714516
      Michael Hanselmann authored
      - Make closing file optional: Required by ganeti-watcher to keep
        file open after writing it. Changes return value of utils.WriteFile
        if "close" parameter evaluates to True.
      - Pre- and post-write functions: Can be used to lock files. This
        will be used by ganeti-watcher to lock the temporary file before
        renaming.
      
      Reviewed-by: iustinp
      71714516
  14. 12 Jun, 2008 2 commits
  15. 09 May, 2008 1 commit
    • Michael Hanselmann's avatar
      Remove utils.CheckDaemonAlive and use “xm info” instead · e3e66f02
      Michael Hanselmann authored
      There are a couple of reasons for doing so:
      - /proc is not OS independent, it's only supported by Linux (there are
        emulations on other systems, but those might differ from the way
        Linux represents data).
      - Checking a daemon's state doesn't necessarily mean it's usable.
        Connecting to the socket using “xm info” is much safer.
      - Reduce code size.
      
      Reviewed-by: iustinp
      e3e66f02
  16. 29 Apr, 2008 1 commit
    • Iustin Pop's avatar
      Disable forking in the master daemon · b74159ee
      Iustin Pop authored
      This patch adds a mechanism to disable utils.RunCmd in selected
      programs. This is needed in the master daemon unless we confirm
      threading doesn't pose any problems.
      
      This makes cluster init fail, but creating new trunk clusters is anyway
      broken at the moment.
      
      Reviewed-by: ultrotter
      b74159ee
  17. 25 Apr, 2008 1 commit
    • Michael Hanselmann's avatar
      Extend utils.WriteFile · 70f4497c
      Michael Hanselmann authored
      Add parameters to not check the path for absoluteness, implement a dry
      run mode and automatically create a backup if requested. This will be
      used by the cfgupgrade utility.
      
      Reviewed-by: schreiberal
      70f4497c
  18. 10 Apr, 2008 1 commit
    • Iustin Pop's avatar
      Move the OS search code into an abstract function · 57c177af
      Iustin Pop authored
      Based on the previous OS search code changes, we can now move the OS
      search code into a generic look-for-file function in utils.py. This
      means that the allocator code can use the same function.
      
      Reviewed-by: ultrotter
      57c177af
  19. 04 Apr, 2008 2 commits
    • Iustin Pop's avatar
      Allow utils.Daemonize() to not close some fds · 8ff612c2
      Iustin Pop authored
      This patch implements an optional parameter to utils.Daemonize() which
      allows that function to not close some file descriptors.
      
      This will allow the master daemon to open the listening socket before
      fork - in order to be able to notify errors and return a meaningful exit
      code, and then when we fork we don't close that fd.
      
      Reviewed-by: imsnah
      8ff612c2
    • Iustin Pop's avatar
      Move the daemonize function to utils.py · 8f765069
      Iustin Pop authored
      Currently, in ganeti-noded we have the createDaemon function. Since
      we'll need the same in other daemons, we move this function to utils.py
      
      With the move, a few changes were also done:
        - change the name to Daemonize()
        - add a parameter, logfile, as different daemons will want to log to
          different files
        - remove the try.. except.. around the fork calls, since they were
          only re-raising the OS exception with less data; unless we want to
          actually handle fork error (not just re-raising), these try blocks
          are not useful
        - change the return style at the end of the function
      
      Reviewed-by: imsnah
      8f765069
  20. 11 Mar, 2008 1 commit
    • Iustin Pop's avatar
      Modify utils.TcpPing to make source address optional · b15d625f
      Iustin Pop authored
      This patch modifies TcpPing and its callers to make the source address
      selection optional. Usually, the kernel will know better what
      source address to use, just in some cases we want to enforce a given
      source address so it makes sense to make this optional.
      
      Reviewed-by: ultrotter
      b15d625f
  21. 05 Mar, 2008 1 commit
  22. 05 Feb, 2008 1 commit
  23. 27 Dec, 2007 1 commit
  24. 19 Dec, 2007 1 commit
    • Iustin Pop's avatar
      Make utils.RunCmd() deal with interleaved stdout/stderr · 9c233417
      Iustin Pop authored
      Currently, RunCmd is written with the assumption that programs will have
      a small stderr output, therefore we read the child's stdout (which can
      be big, so we don't want to block the child) and then the stderr (which
      is small, so it shouldn't block).
      
      However, with the ‘gnt-cluster verify-disks’ command, we ourselves
      generate heavy stderr, therefore we break the ganeti-watcher which runs
      the verify-disks via utils.RunCmd.
      
      This patch turns the RunCmd command into an poll-based one, which means
      any kind of interleaved output by a child on stdout/stderr will be
      handled correctly. Of course, since the output is buffered in memory,
      there are other ways to break RunCmd(). But at least this should fix the
      common case.
      
      Reviewed-by: hansmi
      9c233417
  25. 29 Nov, 2007 2 commits
    • Iustin Pop's avatar
      Replace hardcoded lock dir · 3aecd2c7
      Iustin Pop authored
      This patch replaces the hardcoded ‘/var/lock/’ directory with one based on
      LOCALSTATEDIR.
      
      Reviewed-by: imsnah
      3aecd2c7
    • Iustin Pop's avatar
      Make utils.RunCmd log failures when using debug · f362096f
      Iustin Pop authored
      This patch adds logging of command failures to the debug log in case the
      user either started the command (gnt-*) or the node daemon with the
      debug flag.
      
      Reviewed-by: imsnah
      f362096f
  26. 22 Nov, 2007 1 commit
  27. 20 Nov, 2007 2 commits
  28. 12 Nov, 2007 3 commits
    • Iustin Pop's avatar
      Fix another breakage in SetEtcHostsEntry · 7e3dbb94
      Iustin Pop authored
      The code assumes all lines have at least two elements which are
      whitespace separated - i.e. it does not deal with empty lines or comment
      lines with no spaces. This patch fixes this.
      
      Also, the patch replaces the blank between IP and the canonical name
      with a tab (restoring previous behaviour).
      
      Reviewed-by: imsnah
      7e3dbb94
    • Michael Hanselmann's avatar
      Call fsync() after modifying /etc/hosts. · 2e3e75b7
      Michael Hanselmann authored
      This is a critical file. Breaking it would be very bad. Thus, if the system
      crashes before the data is synched to the disk, it should have the complete
      file afterwards.
      
      Reviewed-by: iustinp
      2e3e75b7
    • Michael Hanselmann's avatar
      Fix functions for /etc/hosts. · 9440aeab
      Michael Hanselmann authored
      - Combine hostname and aliases on one line
      - Fix bug with wrongfully removed newline characters
      - Use wrapper for SetEtcHostsEntry in cmdlib
      
      Reviewed-by: iustin
      9440aeab