Skip to content
Snippets Groups Projects
  1. Aug 28, 2008
    • Michael Hanselmann's avatar
      Fix error message when masterd is not listening · 082c5adb
      Michael Hanselmann authored
      Reported by Iustin.
      
      Reviewed-by: iustinp
      082c5adb
    • Guido Trotter's avatar
      Fix issue when acquiring empty lock sets · 6683bba2
      Guido Trotter authored
      By design if an empty list of locks is acquired from a set, no locks are
      acquired, and thus release() cannot be called on the set. On the other
      hand if None is passed instead of the list, the whole set is acquired,
      and must later be released. When acquiring whole empty sets, a release
      must happen too, because the set-lock is acquired.
      
      Since we used to overwrite the required locks (needed_locks) with the
      acquired ones, we weren't able to distinguish the two cases (empty list
      of locks required, and all locks required, but an empty list returned
      because the set is empty). Valid solutions include:
        (1) forbidding the acquire of empty lists of locks
        (2) skipping the acquire/release on empty lists of locks
        (3) separating the to-acquire and the acquired list
      
      This patch implements the third approach, and thus LUs will find
      acquired locks in the acquired_locks dict, rather than in needed_locks.
      The LUs which used this feature before have been updated. This makes it
      easier because it doesn't force LUs to do more checks on corner cases,
      which are easily forgettable (1) and allows more flexibility if we want
      LUs to release (part-of) the locks (which is still a possibly scary
      operation, but anyway). This easily combines with (2) should we choose
      to implement it.
      
      Reviewed-by: imsnah
      6683bba2
  2. Aug 27, 2008
    • Michael Hanselmann's avatar
      jqueue: Replace normal cache dict with weakref dict · 5685c1a5
      Michael Hanselmann authored
      A job should only exist once in memory. After the cache is cleaned,
      there can still be references to a job somewhere else. If there
      are multiple instances, one can get updated while a function is
      waiting for changes on another instance. By using
      weakref.WeakValueDictionary, which automatically removes instances as
      soon as there are no strong references to it anymore, we can solve
      this problem.
      
      Reviewed-by: iustinp
      5685c1a5
    • Michael Hanselmann's avatar
      jqueue: Keep timestamp of opcode start and end · 70552c46
      Michael Hanselmann authored
      Reviewed-by: ultrotter
      70552c46
    • Michael Hanselmann's avatar
      jqueue: Reset run_op_idx after job is done · 65548ed5
      Michael Hanselmann authored
      It can be confusing otherwise.
      
      Reviewed-by: ultrotter
      65548ed5
    • Iustin Pop's avatar
      Another burnin fix · e17188f4
      Iustin Pop authored
      This is a result of the log timestamp changes.
      
      Reviewed-by: imsnah
      e17188f4
    • Iustin Pop's avatar
      Fix a small typo in a constant · 6abe9194
      Iustin Pop authored
      Seems noone ran a burnin lately :)
      
      Reviwed-by: amischenko,ultrotter
      6abe9194
    • Michael Hanselmann's avatar
      Make sure that client programs get all messages · 6c5a7090
      Michael Hanselmann authored
      This is a large patch, but I can't figure out how to split it without
      breaking stuff. The old way of getting messages by always getting the
      last one didn't bring all messages to the client if they were added
      too fast, thereby making commands like “gnt-cluster verify” less than
      useful. These changes now introduce some sort a serial number per
      log entry to keep track what message a client already received. They
      also remove the log lock per opcode to make reading log entries thread
      safe.
      
      Reviewed-by: ultrotter
      6c5a7090
  3. Aug 26, 2008
  4. Aug 25, 2008
  5. Aug 19, 2008
  6. Aug 18, 2008
    • Guido Trotter's avatar
      Parallelize LUQueryNodes · 35705d8f
      Guido Trotter authored
      As for LUQueryInstances the first version just acquires a shared lock on all
      nodes. In the future further optimizations are possible, as outlined by
      comments in the code.
      
      Reviewed-by: imsnah
      35705d8f
    • Guido Trotter's avatar
      Parallelize LUQueryInstances · 7eb9d8f7
      Guido Trotter authored
      This first version acquires a shared lock on all requested instances and
      their nodes. In the future it can be improved by acquiring less locks if
      no dynamic fields have been asked, and/or by locking just primary nodes.
      
      Reviewed-by: imsnah
      7eb9d8f7
    • Guido Trotter's avatar
      A few more locking unit tests · d4f6a91c
      Guido Trotter authored
      A few more tests written while bug-hunting. One of them shows a real
      issue, at last. :)
      
      Reviewed-by: imsnah
      d4f6a91c
    • Guido Trotter's avatar
      Add lock-all-through-GLM unit test · 90c942d1
      Guido Trotter authored
      I was hunting for a bug in my code and thought the culprit was in the
      locking library, so I added a test to check. Unfortunately turns out it
      wasn't. :( Committing the test anyway, while still trying to figure out
      what's wrong...
      
      Reviewed-by: imsnah
      90c942d1
    • Guido Trotter's avatar
      LockSet: allow lists with duplicate values · 34ca3914
      Guido Trotter authored
      If a list with a duplicate value is passed to a lockset what the code
      now does is to try to acquire the lock twice, generating a
      double-acquire exception in the SharedLock code. This is definitely an
      issue. In order to solve it we can either forbit double values in a list
      or just delete the duplicates. In this patch we go for the latter
      solution, removing any duplicate values when creating the acquire_list.
      
      Reviewed-by: imsnah
      34ca3914
    • Guido Trotter's avatar
      Processor: lock all levels even if one is missing · 8a2941c4
      Guido Trotter authored
      If a locking level wasn't specified locking used to stop. This means
      that if one, for example, didn't specify anything at the LEVEL_INSTANCE
      level, no locks at the LEVEL_NODE level were acquired either. With this
      patch we force _LockAndExecLU to be called for all existing levels, and
      break the recursion if the level doesn't exist in locking.LEVELS.
      
      Reviewed-by: imsnah
      8a2941c4
    • Guido Trotter's avatar
      LURebootInstance: move arg check in ExpandNames · 0fcc5db3
      Guido Trotter authored
      The check for the reboot type can be done without any locks held, so
      we'll move it to ExpandNames. Plus, we note in a FIXME that if the
      reboot type is not full, we can probably just lock the primary node, and
      leave the secondary unlocked.
      
      Reviewed-by: imsnah
      0fcc5db3
    • Michael Hanselmann's avatar
      QA: Convert configuration from YAML to JSON · 8c4a9a74
      Michael Hanselmann authored
      We no longer use YAML in Ganeti at all. This patch converts the QA
      configuration from YAML to JSON. JSON doesn't support comments and
      I had to use a hack with fields starting with '#'.
      
      Reviewed-by: ultrotter
      8c4a9a74
    • Michael Hanselmann's avatar
      LUVerifyCluster: Return boolean indication success · 34290825
      Michael Hanselmann authored
      Reviewed-by: schreiberal
      34290825
    • Michael Hanselmann's avatar
      Use Linux-specific way to name master socket · 9894ece7
      Michael Hanselmann authored
      By using this Linux-specific way we don't have to care about removing the
      socket file when quitting or starting (after an unclean shutdown). For a
      more detailed description, see the comment in the patch.
      
      Reviewed-by: schreiberal
      9894ece7
    • Michael Hanselmann's avatar
      QA: Try to run more scripts with --version · fc28c086
      Michael Hanselmann authored
      This patch also sorts the list.
      
      Reviewed-by: schreiberal
      fc28c086
    • Michael Hanselmann's avatar
      QA: Always accept added node's SSH key · 28a90aff
      Michael Hanselmann authored
      Reviewed-by: ultrotter
      28a90aff
    • Michael Hanselmann's avatar
      QA: Do not upload known_hosts file anymore · a39ec11a
      Michael Hanselmann authored
      The cluster no longer keeps individual host's SSH key, but rather
      aliases all of them to the cluster name.
      
      Reviewed-by: ultrotter
      a39ec11a
    • Michael Hanselmann's avatar
      Copy qa_utils.AssertIn from 1.2 branch · eaef8a05
      Michael Hanselmann authored
      Apparently it was forgotten when import the remote API QA tests.
      
      Reviewed-by: schreiberal
      eaef8a05
  7. Aug 15, 2008
  8. Aug 14, 2008
    • Guido Trotter's avatar
      Pass hypervisor type to the OS scripts · 4f0afaf5
      Guido Trotter authored
      It's handy to make the os scripts know which hypervisor the instance is
      going to run under. In order not to change the os API we pass this
      information in the environment, where the os scripts can access it if
      they're hypervisor-aware.
      
      Reviewed-by: imsnah
      4f0afaf5
    • Guido Trotter's avatar
      RunCmd: add optional environment overriding · 2557ff82
      Guido Trotter authored
      If the user passes an env dict to RunCmd we'll override the environment
      passed to the to-be-executed command with the values in the dict. This
      allows us to pass arbitrary environment values to commands we run.
      
      Reviewed-by: imsnah 
      2557ff82
  9. Aug 13, 2008
    • Guido Trotter's avatar
      KVM Hypervisor Cleanup · d47d3d38
      Guido Trotter authored
      - Remove a few experiemental code lines left as comments
      - Rework first disks' boot=on addition, which was calculated twice
      - Remove an empty line
      - Remove reference to hvm_pae which doesn't apply to kvm
      
      Reviewed-by: imsnah
      d47d3d38
    • Guido Trotter's avatar
      Allow kvm hypervisor in gnt-cluster init · 7a151789
      Guido Trotter authored
      Reviewed-by: imsnah
      7a151789
    • Guido Trotter's avatar
      Add KVM hypervisor code · eb58f9b1
      Guido Trotter authored
      ht_kvm.py contains the code for ganeti to work under kvm.
      This patch also modifies Makefile.am to ship that file, and
      lib/hypervisor/__init__.py to import it, and add kvm to the
      hypervisors map.
      
      Reviewed-by: imsnah
      eb58f9b1
    • Guido Trotter's avatar
      constants: add HT_KVM · 550e49b9
      Guido Trotter authored
      Add a new hypervisor type, HT_KVM, to constants, and register it in the
      HYPER_TYPES set.
      
      Reviewed-by: imsnah
      550e49b9
    • Guido Trotter's avatar
      Add --with-kvm-path configure option · 7e2c5b9e
      Guido Trotter authored
      This allows to configure a different path to the kvm binary. By default
      /usr/bin/kvm is used, which is the one found in debian and ubuntu.
      
      Reviewed-by: imsnah
      7e2c5b9e
Loading