1. 21 Jan, 2009 3 commits
    • Iustin Pop's avatar
      Fix some more pylint errors · c979d253
      Iustin Pop authored
      Two are real errors (invalid names) and one is style error (overriding
      name from outer scope).
      Reviewed-by: ultrotter
    • Guido Trotter's avatar
      Implement the new live migration backend functions · cd42d0ad
      Guido Trotter authored
      MigrationInfo, AcceptInstance and AbortMigration are implemented as
      hypervisor specific functions, and by default they do nothing (as
      they're not always necessary).
      This patch also converts hv_base.MigrateInstance docstring to epydoc,
      adds a missing @type to the GetInstanceInfo docstring, and removes an
      unneeded empty line.
      Reviewed-by: iustinp
    • Guido Trotter's avatar
      Add calls in the intra-node migration protocol · 6906a9d8
      Guido Trotter authored
      Currently the hypervisor is expected to do all the migration from the
      source side. With this patch we also add the option of passing some
      information to the target side, and starting some operation there.
      As a bonus, a function to cleanup any started operation is included.
      Reviewed-by: iustinp
  2. 20 Jan, 2009 5 commits
  3. 19 Jan, 2009 2 commits
    • Iustin Pop's avatar
      Switch call_blockdev_create call to (status, data) · dab69e97
      Iustin Pop authored
      This allows errors to be visible at the user level instead of just node
      daemon logs.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Block device creation cleanup · 6c626518
      Iustin Pop authored
      Currently when creation LVM-based instances, we always get the
      extremely-confusing message "ERROR Can't find LV /dev/xenvg/..." which
      is actually expected. This behaviour was introduced before we had
      UUID-style LV names, since at that point it was not a unexpected to have
      such volumes laying around after a failed creation.
      Today, it's much more of an error to see existing volumes, and it's
      better to abort with a failure. Since bdev.LogicalVolume.Create() method
      will raise an error in case it exists, we can remove this check in
      backend before creating the device.
      The Create methods for DRBD and FileStorage currently don't raise
      exception, as behaviour is not very well defined here.
      We also change some exception types raised in bdev so that all
      exceptions raised by device creation are a subclass of GenericError.
      Reviewed-by: ultrotter
  4. 13 Jan, 2009 3 commits
    • Iustin Pop's avatar
      Forward port the live migration from 1.2 branch · 53c776b5
      Iustin Pop authored
      This is forward port via copy (and not individual patches cherry-pick)
      of the latest code on the 1.2 branch related to the migration.
      The changes compared to 1.2 are the fact that we don't need the
      IdentifyDisks step anymore (the drbd rpc calls are independent now), and
      the rpc module improvements.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Forward-port DrbdNetReconfig · 6b93ec9d
      Iustin Pop authored
      This is a modified forward-port of DrbdNetReconfig and their associated
      RPCs. In Ganeti 2.0, these functions will be used for two things:
        - live migration (as in 1.2)
        - and for other network reconfiguration tasks, since DRBD8.Attach()
          doesn't do them anymore
      Because of the Attach() changes, we can now implement the
      AttachNet/DisconnectNet functions as independent entities, and we don't
      need the cache anymore.
      Note these functions are copies of the latest 1.2 code, and not
      cherry-picks of the (many) patches that went into 1.2.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      backend: rename AttachOrAssemble to Assemble · f96e3c4f
      Iustin Pop authored
      Since now the Assemble function is different than Attach, we rename this
      backend function to show that the intent is to fully assemble the device
      (and it's always allowed to modify the device).
      Reviewed-by: ultrotter
  5. 08 Jan, 2009 1 commit
    • Iustin Pop's avatar
      Add an instance_migratable rpc call · 56e7640c
      Iustin Pop authored
      This is a forward-port of commit 1194 on the 1.2 branch:
        This call will check whether an instance is up on its primary, and that
        it has been started with symlinks. We currently have no on-secondary
        checks, nor any hypervisor specific call.
        Reviewed-by: iustinp
      The difference from the original patch is that we don't include the
      cmdlib changes, since those will come as a copy from the 1.2 cmdlib.py,
      and not as individual patches.
      Original-Author: ultrotter
  6. 07 Jan, 2009 7 commits
    • Iustin Pop's avatar
      backend: Remove symlinks by disk name · 5282084b
      Iustin Pop authored
      This is a modified forward-port of commit 1184 on the 1.2 branch:
        backend: Remove symlinks by disk name, not using a wildcard
        Reviewed-by: ultrotter
      The changes to the original patch are related to the docstring style and
      iv_name to index switch.
      Original-Author: imsnah
    • Iustin Pop's avatar
      Pass instance name to rpc call blockdev_close · b2e7666a
      Iustin Pop authored
      This is an extract of commit 1166 on the 1.2 branch (Add a rpc call for
      drbd network reconfiguration), but only the blockdev_close part.
      The patch changes the blockdev_close call to take the instance so that
      it can remove the symlinks of the instance.
      Originally-Reviewed-by: imsnah
    • Iustin Pop's avatar
      Fix the _RemoveBlockDevLinks() function · 03dfa658
      Iustin Pop authored
      This is a forward-port of commit 1163 on the 1.2 branch:
        This fixes the removal of the instance symlinks (probably breakage from
        the glob changes).
        Reviewed-by: imsnah
    • Iustin Pop's avatar
      Remove instance's symlinks · 3c9c571d
      Iustin Pop authored
      This is a forward-port of commits 1150 and 1151 on the 1.2 branch:
        Add _RemoveBlockDevLinks auxiliary function, called when an instance
        fails to start and when it is shut down.
        Reviewed-by: iustinp
        Fix cut&paste error when removing symlinks
        It's just whitespace... isn't it? uhm... :) Anyway, fixing an error made
        when reformatting the code for the new "safer" behaviour.
        Reviewed-by: iustinp
      Original-Author: ultrotter
    • Iustin Pop's avatar
      Catch BlockDeviceError when starting instance · ec596c24
      Iustin Pop authored
      This is a forward-port of commit 1149 on the 1.2 branch:
        _GatherAndLinkBlockDevs used to raise the errors.BlockDeviceError
        exception when it failed to create a block device, and with this patch
        set it does so also when it fails to create a symlink to it.
        With this patch we move the call to this function into a pre-existing
        try-except block in the code, and catch the BlockDeviceError exception,
        logging a message and returning a failure state if it happens.
        Reviewed-by: iustinp
      The changes are related to the new hypervisor and logging syntax.
      Original-Author: ultrotter
    • Iustin Pop's avatar
      Create symlinks to intances' block devices · 9332fd8a
      Iustin Pop authored
      This is a forward-port of commit 1148 on the 1.2 branch:
        Change the _GatherBlockDevs private function, called only one time by
        StartInstance, to _GatherAndLinkBlockDevs, and make it transform the
        device returned even more by calling the new _SimlinkBlockDev auxiliary
        This makes sure that every time an instance is started symlinks to its
        block devices are created, and the instance is started off them, rather
        than the underlying block devices.
        Reviewed-by: iustinp
      The changes we make to the patch is related to newer function signatures
      in 2.0, and to the fact that iv_name is deprecated and we use instead
      disk%d based on the disk index.
      Original-Author: ultrotter
    • Iustin Pop's avatar
      Simplify hypervisor block_devices structure · 069cfbf1
      Iustin Pop authored
      This is a partial forward-port of commit 1136 on the 1.2 branch:
        The hypervisor doesn't need to be passed the whole block device
        structure, so we'll just give it the block device name on the local
        node, and the name as seen by the instance. This will make it easier to
        manipulate it later without messing with the block devices (eg. by
        changing the system name to a symlink to the name itself).
        Since the HVM hypervisor changes the "virtual" name a note is added
        calling for a redesign that doesn't need this change, as different
        hypervisors and emulation types will anyway have different names for
        exported devices.
        Reviewed-by: iustinp
      The changes in this patch compared to the original are:
        - we keep passing the original disk object, not for its iv_name, but
          for it's physical_id which is needed by the file driver (this could
          be fixed maybe)
        - we don't use the iv_name anymore, since in 2.0 we already use the
          index of the device
      Original-Author: ultrotter
  7. 18 Dec, 2008 1 commit
    • Michael Hanselmann's avatar
      Use subdirectories for job queue archive · 58b22b6e
      Michael Hanselmann authored
      As it turned out, having many files in a single directory can be
      very painful. With this patch, only 10'000 files are stored in a
      directory for the job queue archive. With 10'000 directries, this
      allows for up to 100 million jobs be archived without having large
      numbers of files in a single directories. Not that it is realistic,
      Reviewed-by: ultrotter
  8. 14 Dec, 2008 4 commits
  9. 11 Dec, 2008 1 commit
    • Iustin Pop's avatar
      Fix epydoc format warnings · c41eea6e
      Iustin Pop authored
      This patch should fix all outstanding epydoc parsing errors; as such, we
      switch epydoc into verbose mode so that any new errors will be visible.
      Reviewed-by: imsnah
  10. 10 Dec, 2008 1 commit
  11. 09 Dec, 2008 1 commit
    • Michael Hanselmann's avatar
      RPC: Compress file upload data · 12bce260
      Michael Hanselmann authored
      Adding compression to larger amounts of data is more efficient than
      transferring it (len(nodes) - 1) times over the network without
      compression. We were able to compress a 800KB config file to about
      30 KB, which is about 40 KB with Base64 encoding (required due to
      the way SimpleJson handles strings).
      Reviewed-by: ultrotter
  12. 05 Dec, 2008 1 commit
    • Iustin Pop's avatar
      Cleanup the config file on demotion from candidate · 56aa9fd5
      Iustin Pop authored
      This patch adds a simple rpc which makes a backup of the config file and
      then removes it. This is done so that cluster verify doesn't complain
      immediately after demoting a node.
      Reviewed-by: imsnah
  13. 02 Dec, 2008 3 commits
    • Iustin Pop's avatar
      Fix gnt-cluster verify w.r.t. rpc changes · 25361b9a
      Iustin Pop authored
      This partially reorganizes the cluster verify LU:
        - introduce constants for the node verify rpc call
        - move from additional rpc calls to a single rpc call, the
          call_node_info, which gaters all data needed
      Also fix a small error (self.LogWarning instead of self.Warning).
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Simplify a little the ssconf update · 89b14f05
      Iustin Pop authored
      We have (again) the KeyToFilename function, so we move the writing of
      the files to a method under SimpleStore.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Revert "Get rid of ssconf" · 93384844
      Iustin Pop authored
      This partially reverts the "Get rid of ssconf" patch.
      It adds back a simpler version of the SimpleStore class, and drops the
      WritableSimpleStore class. The new version of the class also has
      node_list as a new key, and increases the size of the keys so that big
      clusters will fit the node list. Also, the SS_* constants are moved to
      constants.py, since the ConfigWriter class will need them too in order
      to generate the values dictionary.
      It also changes the GetMasterAndMyself function to use the SimpleStore
      by default, and the backend._GetConfig to use it too (it has all the
      needed keys).
      Reviewed-by: imsnah
  14. 27 Nov, 2008 1 commit
    • Iustin Pop's avatar
      Fix gnt-backup export · 726d7d68
      Iustin Pop authored
      This patch fixes a bug in disk calculation for gnt-backup export, which
      completely broke one-disk instance export.
      The patch also corrects some error messages and style issues.
      Reviewed-by: ultrotter
  15. 25 Nov, 2008 1 commit
  16. 24 Nov, 2008 1 commit
  17. 21 Nov, 2008 1 commit
  18. 11 Nov, 2008 1 commit
    • Iustin Pop's avatar
      Convert trunk to posix-compatibility · d868edb4
      Iustin Pop authored
      We change two functions to use RunCmd without shell, and the other
      (which needs a ssh command line) is changed to the '>... 2>&1' syntax.
      Reviewed-by: imsnah
  19. 25 Oct, 2008 2 commits
    • Iustin Pop's avatar
      Update backend.py docstrings · 10c2650b
      Iustin Pop authored
      This patch converts all of backend.py to epydoc formatting.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Fix another error handling case · 3f5bd234
      Iustin Pop authored
      The return from this error path is a dict, but the actual return value
      (on the non-error handling) is a list of dicts. Change accordingly.
      Reviewed-by: imsnah