1. 13 Jan, 2009 11 commits
    • 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
  2. 12 Jan, 2009 6 commits
    • 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
  3. 09 Jan, 2009 9 commits
    • 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
    • Iustin Pop's avatar
      burnin: use the new replace_disks constants · cfacfd6e
      Iustin Pop authored
      This patch updates burnin to the latest replace disks constant, and
      changes the constants' values to be more accurate.
      
      Reviewed-by: imsnah
      cfacfd6e
    • Iustin Pop's avatar
      burnin: do not use offline nodes · 729164d0
      Iustin Pop authored
      This patch makes burnin skip the offline nodes in it's builtin node
      selection. It also removes an extra line.
      
      Reviewed-by: imsnah
      729164d0
    • Iustin Pop's avatar
      Fix gnt-os for offline nodes · 94a02bb5
      Iustin Pop authored
      We shouldn't query offline nodes in gnt-os. This patch adds an utility
      function to ConfigWriter that returns the names of online nodes and uses
      it in LUDiagnoseOS to query only the good nodes.
      
      Reviewed-by: imsnah
      94a02bb5
    • Iustin Pop's avatar
      Silence warning on node list for offline nodes · 186ec53c
      Iustin Pop authored
      The warning in node list is meant for nodes that return wrong
      information, but for offline nodes this case is normal.
      
      Reviewed-by: imsnah
      186ec53c
    • Iustin Pop's avatar
      Rework the daemonization sequence · 7d88772a
      Iustin Pop authored
      The current fork+close fds sequence has deficiencies which are hard to
      work around:
        - logging can start logging before we fork (e.g. if we need to emit
          messages related to master checking), and thus use FDs which we
          can't track nicely
        - the queue locks the queue file, and again this fd needs to be kept
          open which is hard from the main loop (and this error is currently
          hidden by the fact that we don't log it)
      
      Given the above, it's much simpler, in case we will fork later, to close
      file descriptors right at the beginning of the program, and in Daemonize
      only close/reopen the stdin/out/err fds.
      
      In addition, we also close() the handlers we remove in SetupLogging so
      that the cleanup is more thorough.
      
      Reviewed-by: imsnah
      7d88772a
    • Iustin Pop's avatar
      Cleanup replace-disks modes and options · 7e9366f7
      Iustin Pop authored
      In 1.2, due to the md+drbd7 legacy, we had a complex choice of replace
      modes, and the new drbd8 modes where forced into this syntax, with some
      complicated rules of transition from one mode to another (if REPLACE_ALL
      but not new node passed, switch to REPLACE_SEC, etc.).
      
      This patch cleans this situation by making a clear separation between
      the two main modes:
        - replace on current nodes (with the two sub-cases on primary and on
          secondary)
        - change to a new node (either via manually specified node or via
          iallocator)
      
      Reviewed-by: imsnah
      7e9366f7
  4. 08 Jan, 2009 4 commits
    • Iustin Pop's avatar
      Fix cluster verify/node net test for offline nodes · 82e37788
      Iustin Pop authored
      For offline nodes, we shouldn't add them to the NV_NODELIST and
      NV_NODENETTEST tests since they most likely won't succeed.
      
      The patch makes gnt-cluster verify happy again in such cases.
      
      Reviewed-by: imsnah
      82e37788
    • Iustin Pop's avatar
      rpc: Add a method for easy check of remote results · 3247bbac
      Iustin Pop authored
      The patch adds a new method to the rpc.RpcResult class called
      "RemoteFailMsg" which is useful for the RPC calls which return a
      (status, payload) style result.
      
      Reviewed-by: imsnah
      3247bbac
    • 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
      56e7640c
    • Iustin Pop's avatar
      bdev: forward-port ReAttachNet/DisconnectNet · cf8df3f3
      Iustin Pop authored
      This is plain copy of the 1.2 ReAttachNet and DisconnectNet methods on
      the DRBD8 device, with the logger to logging module changes and the
      ReAttachNet method renamed to AttachNet.
      
      These methods are not used anywhere right now, but will be used for
      migration and a simpler disk-replace.
      
      The code was originally committed on the 1.2 branch as revision numbers
      1165 and 1204.
      
      Originally-Reviewed-by: imsnah, ultrotter
      cf8df3f3
  5. 07 Jan, 2009 8 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
      5282084b
    • 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
      b2e7666a
    • 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
      03dfa658
    • 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
      
      and:
        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
      3c9c571d
    • 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
      ec596c24
    • 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
        function.
      
        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
      9332fd8a
    • 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
      069cfbf1
    • Iustin Pop's avatar
      _AssembleInstanceDisks: fix rpcresult handling · 2b17c3c4
      Iustin Pop authored
      Commit 2117 changed _AssembleInstanceDisks to correctly parse the
      failure status of the new RpcResult structure, but it didn't fix the
      storing of only the result payload. Since RpcResult is not JSON
      serializable, LUActivateInstanceDisks is failing.
      
      Reviewed-by: ultrotter
      2b17c3c4
  6. 06 Jan, 2009 1 commit
  7. 19 Dec, 2008 1 commit