Skip to content
Snippets Groups Projects
  1. Jan 19, 2009
    • Iustin Pop's avatar
      Use instance.all_nodes instead of hand-building it · 6b12959c
      Iustin Pop authored
      This patch replaces a few obvious uses of [instance.primary_node] +
      list(instance.secondary_nodes) (or similar usage) with the new
      instance.all_nodes.
      
      Reviewed-by: ultrotter
      6b12959c
    • Iustin Pop's avatar
      Fix non-drbd instance creation · 99c7b2a1
      Iustin Pop authored
      Commit 2294 introduced a new instance.all_nodes property, which
      unfortunately is working incorrectly for non-drbd instances.
      
      This patch fixes it by making sure the primary node is always added to
      the set, even before recursing over (any potential) children.
      
      Reviewed-by: imsnah
      99c7b2a1
    • Iustin Pop's avatar
      Small simplification in MapLVsByNode · 7c5abcae
      Iustin Pop authored
      We don't need to pre-create the node entries in lvmap, since they will
      be created at recursion time.
      
      Reviewed-by: ultrotter
      7c5abcae
    • Iustin Pop's avatar
      Split the block device creation in two parts · de12473a
      Iustin Pop authored
      Some callers of _CreateBlockDev need recursive behaviour, but not all.
      The replace secondary first creates (manually) new LVs to ensure storage
      is there, and then it creates the new DRBD. At this point, we need a
      non-recursive call so that the LVs are not needlessly re-created.
      
      This patch splits the single device creation into a separate function,
      so that LUReplaceDisks can use it.
      
      Reviewed-by: ultrotter
      de12473a
    • Iustin Pop's avatar
      Combine the two _CreateBlockDevOnXXX functions · 428958aa
      Iustin Pop authored
      Since only two boolean parameters differ between these two functions, we
      combine them as to have less code duplication. This will be needed in
      the future as we will need to split off the recursive part off.
      
      Reviewed-by: ultrotter
      428958aa
    • 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
      dab69e97
    • Iustin Pop's avatar
      Small change in the instance disk creation path · 796cab27
      Iustin Pop authored
      For future propagation of error messages from backend to cmdlib and to
      the job log, just having True/False return from the disk creation
      function is not enough.
      
      This patch converts these functions (_CreateDisks, _CreateBlockDevOnXXX)
      to raise exception on errors, and otherwise the return value is None.
      
      Reviewed-by: ultrotter
      796cab27
    • 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
      6c626518
    • Iustin Pop's avatar
      Use the same root for both _data and _meta LVs · e6c1ff2f
      Iustin Pop authored
      Currently we use a different UUID for the _data and _meta volumes of a
      DRBD disk. This is confusing as it's hard to associate the two in the
      output of “lvs” or “gnt-node volumes”.
      
      The patch changes so that they use the same prefix.
      
      Reviewed-by: ultrotter
      e6c1ff2f
  2. Jan 16, 2009
    • Iustin Pop's avatar
      Fix LUExportInstance · 998c712c
      Iustin Pop authored
      Due to deficiencies in our block device implementation, it is a must to
      call SetDiskID on disks before passing them to remote nodes. Since in
      export/import, we don't touch the disks themselves, this was not needed
      before in this function.
      
      However, since having instance symlinks, the correct ID is needed here
      too, and with static minors it's a "must need". This reflects into
      failed instance starts after migration and/or failover.
      
      Reviewed-by: ultrotter
      998c712c
    • Iustin Pop's avatar
      burnin: only call self.GrowDisks() if needed · aa089b65
      Iustin Pop authored
      In case we pass --disk-grow 0[,0..] then we should not call GrowDisks as it
      prints confusing log lines.
      
      Reviewed-by: imsnah
      aa089b65
    • Iustin Pop's avatar
      Instance: add a new all_nodes property · cfcc5c6d
      Iustin Pop authored
      Since we often need the list of all nodes of an instance, we add a new
      "all_nodes" property that returns all nodes of the instance, and we
      switch secondary_nodes to a simpler implementation based on this new
      function.
      
      Reviewed-by: ultrotter
      cfcc5c6d
    • Iustin Pop's avatar
      Fix gnt-backup export with short names · aeb83a2b
      Iustin Pop authored
      We need to pass the fully-qualified node to _CheckNodeOnline, not the short
      one.
      
      Reviewed-by: imsnah
      aeb83a2b
    • Iustin Pop's avatar
      burnin: add option to not remove instances · 320eda24
      Iustin Pop authored
      This patch adds a burnin option to keep instances at the end, so that
      debugging after a burnin failure is easier.
      
      Also, we reorder the command line parsing and client query so that one
      can use ./tools/burnin --help even on non-ganeti machines.
      
      Reviewed-by: ultrotter
      320eda24
  3. Jan 15, 2009
    • Iustin Pop's avatar
      Some docstring updates · 25e7b43f
      Iustin Pop authored
      This patch rewraps some comments to shorter lengths, changes
      double-quotes to single-quotes inside triple-quoted docstrings for
      better editor handling.
      
      It also fixes some epydoc errors, namely invalid crossreferences (after
      method rename), documentation for inexistent (removed) parameters, etc.
      
      Reviewed-by: ultrotter
      25e7b43f
    • Iustin Pop's avatar
      ganeti-noded: reduce log noise · 14d57a8b
      Iustin Pop authored
      The source port/addr is currently logged three times for each
      connection, and this is unnecessary. We change two log entries to debug,
      since they are useful for precise timing, and we keep only one at INFO
      level.
      
      Reviewed-by: imsnah
      14d57a8b
  4. Jan 14, 2009
  5. Jan 13, 2009
    • Iustin Pop's avatar
      Forward port of the burnin migration · 99bdd139
      Iustin Pop authored
      This is again a copy of the latest 1.2 burnin code related to migration.
      
      Reviewed-by: ultrotter
      99bdd139
    • 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
      53c776b5
    • Iustin Pop's avatar
      Port replace disk/change node to the new DRBD RPCs · a2d59d8b
      Iustin Pop authored
      In replace disks to new secondary, since Attach (and therefore
      call_blockdev_find) is not modifying the devices anymore, we need to
      switch this LU to the new call_drbd_disconnect_net and
      call_drbd_attach_net functions.
      
      Due to the authentication needed in 2.0, we need to be more careful with
      the activation order. In 1.2, we have the case that the new node was
      directly activated with networking information, and could connect to the
      primary while it was still connected or WFConnect to the old secondary.
      
      In the new scheme, we:
        - create the new drbd in StandAlone mode
        - shutdown old secondary (primary becomes WFConnection)
        - disconnect primary (and thus it goes into StandAlone)
        - connect both primary and new secondary to network using the
          call_drbd_attach_net rpc
      
      This should be safer, and is cleaner. This passes burnin.
      
      Reviewed-by: ultrotter
      a2d59d8b
    • 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
      6b93ec9d
    • 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
      f96e3c4f
    • Iustin Pop's avatar
      drbd: change the semantics of Attach vs. Assemble · 2d0c8319
      Iustin Pop authored
      Currently, both the Attach and Assemble methods for DRBD8 devices will use and
      alter the device state. This is suboptimal, and it has been worked
      around in 1.2 via a special cache in the node daemon so that we don't
      need to call Attach() again in migration, for example.
      
      Since in 2.0 we have static minors, we can change these functions so
      that:
        - Attach() does not affect the device in any way, and only checks if
          the minor is already in use or not
        - Assemble() has two logic paths, one for startup from unused minor
          (the old Assemble, now renamed _FastAssemble) and one for
          re-checking/fixing an in-use minor (the old Attach, now renamed
          _SlowAttach)
      
      Basically Attach was renamed to _SlowAttach, Assemble to _FastAssemble,
      and we have a new, simple Assemble that calls one or the other based on
      the result of the new Attach.
      
      The LUReplaceDisks (with new secondary) is relying on the special
      semantics of Attach modifying the device and is broken until the end of
      the patch series.
      
      Reviewed-by: ultrotter
      2d0c8319
    • Iustin Pop's avatar
      bdev: Do not call Assemble() on children · f87548b5
      Iustin Pop authored
      The caller of dev.Assemble() (backend._RecursiveAssembleBD) is doing an
      explicit recursion over all the children of the device, with better
      error reporting. As such, we don't need this repeated assembly inside
      the base BlockDev class.
      
      Reviewed-by: ultrotter
      f87548b5
    • Iustin Pop's avatar
      Fix modification of instance memory · ea33068f
      Iustin Pop authored
      ... as found by the QA script - bug was introduced by me in commit 2117.
      
      Reviwed-by: imsnah
      ea33068f
    • Iustin Pop's avatar
      burnin: redo the output formatting · 836d59d7
      Iustin Pop authored
      Since we added many more tests in burnin, the output became almost
      unreadable. This patch changes the output to an indented one, so that
      the different phases and operations of burnin are more easily
      understood.
      
      Reviwed-by: ultrotter
      836d59d7
    • Iustin Pop's avatar
      burnin: move start_stop at the end · eb61f8d3
      Iustin Pop authored
      Traditionally the start/stop test was the last, so move it back to there
      (added as last option in commit 854).
      
      Reviewed-by: amishchenko
      eb61f8d3
    • Iustin Pop's avatar
      QA: add burnin parameters (parallel, http-check) · 0b0a150a
      Iustin Pop authored
      This patch adds burnin parameters for --parallel and --http-check
      options to the burnin script.
      
      Reviewed-by: ultrotter
      0b0a150a
    • Iustin Pop's avatar
      Increase resync speed to 60MB/s · 24b0d752
      Iustin Pop authored
      This is a forward-port of commit 2219 on the 1.2 branch.
      
      Reviewed-by: ultrotter
      24b0d752
    • Iustin Pop's avatar
      burnin: introduce instance alive checks · 5178f1bc
      Iustin Pop authored
      This patch adds instance alive checks after most start operations. The
      check is done in a custom way:
        - the instance is expected to have an http server up and running
        - and it should server the '/hostname.txt' resource containing the
          hostname of the instance
      
      This allows checking that:
        - creation is working OK
        - start after failover (and in the future migrate) is ok
        - rename works correctly
      
      By default, the check is disabled since one needs a custom OS for this
      check.
      
      The patch also fixes a wrong variable name from a previous burnin patch.
      
      Reviewed-by: ultrotter
      5178f1bc
    • Iustin Pop's avatar
      Small typo in ganeti-watcher · 4bffa7f7
      Iustin Pop authored
      Reviewed-by: imsnah
      4bffa7f7
  6. Jan 12, 2009
    • Iustin Pop's avatar
      Skip offline nodes in gnt-cluster commands · 4040a784
      Iustin Pop authored
      This patch makes gnt-cluster copyfile and command skip the offline
      nodes.
      
      Reviwed-by: ultrotter, imsnah
      4040a784
    • Iustin Pop's avatar
      burnin: Add tests for add/remove disks and NICs · 5c22d16e
      Iustin Pop authored
      This patch adds testing of add/remove disks and NICs to the burnin.
      
      Reviewed-by: imsnah
      5c22d16e
    • Iustin Pop's avatar
      Heavy redo of gnt-instance info output · 19708787
      Iustin Pop authored
      In 2.0, we have more parameters in drbd's logical_id, and passing the
      results over json makes them unicode which looks worse with the default
      formatting. As such, a redo of the output is needed.
      
      This patch:
        - adds a separate function to format the logical_id of devices
        - moves the actual indentation format out of _FormatBlockDevInfo,
          which now just generates a list of items
        - adds a function _FormatList that recursively formats the list
        - formats specially key,value tuples
      
      The result is that the output is nicer, and the code in
      _FormatBlockDevInfo somewhat cleaner (as it doesn't deal with spacing
      and such issues).
      
      Reviewed-by: ultrotter
      19708787
    • Iustin Pop's avatar
      Fix some errors in instance modify --disk remove · 4cfb9426
      Iustin Pop authored
      The RpcResult introduction still left some bugs (after multiple patches):
        - we don't correctly check the result type
        - rename a variable to prevent a conflict
      
      Reviewed-by: imsnah
      4cfb9426
    • Iustin Pop's avatar
      Fix an error handling case in instance info · f57c76e4
      Iustin Pop authored
      The checking for invalid instance names in LUQueryInstanceData is broken
      since commit 1642.
      
      Reviewed-by: imsnah
      f57c76e4
    • Iustin Pop's avatar
      Introduce a very simple LU to force config updates · afee0879
      Iustin Pop authored
      This LU can be used to force a push of the config in case it's needed,
      for example after an upgrade to update the ssconf_release_version file.
      
      Reviewed-by: imsnah
      afee0879
  7. Jan 09, 2009
    • Iustin Pop's avatar
      Add a new ssconf file with the ganeti version · 8a113c7a
      Iustin Pop authored
      The patch adds a new ssconf file containing the ganeti version.
      
      Reviewed-by: imsnah
      8a113c7a
    • Iustin Pop's avatar
      Work around a DRBD sync speed race condition · 7d585316
      Iustin Pop authored
      This is modified forward-port of commit 1544 on the 1.2 branch:
      
        When DRBD is doing its dance to establish a connection with its
        peer, it also sends the synchronization speed over the wire. In
        some cases setting the sync speed only after setting up both
        sides can race with DRBD connecting, hence we set it here before
        telling DRBD anything about its peer.
      
        Reviewed-by: iustinp
      
      The modification we make is that we split SetSyncSpeed in two so that we
      don't need to modify our minor temporarily, and the fact that we call
      this function from within _AssembleNet (right before enabling network),
      instead of Assemble()/Attach().
      
      Original-Author: imsnah
      7d585316
    • Iustin Pop's avatar
      burnin: Add activate/deactivate disks · 90e722d1
      Iustin Pop authored
      Reviewed-by: imsnah
      90e722d1
Loading