1. 10 Feb, 2009 12 commits
    • Iustin Pop's avatar
      Cleanup of DRBD8._CheckMetaSize · 9c793cfb
      Iustin Pop authored
      This patch converts the _CheckMetaSize method to raise exceptions
      instead of logging and returning False. This fits now in the new rpc
      return types, so it's a cheap change.
      
      Reviewed-by: ultrotter
      9c793cfb
    • Iustin Pop's avatar
      Change the disk assembly to raise exceptions · 1063abd1
      Iustin Pop authored
      This big patch converts the bdev Assemble() methods and the supporting
      functions to raise exceptions instead of returning False. This is a big
      patch, since the assembly functions touch other functions: add children,
      creation, etc. However, the patch does not add much new code, rather it
      reworks existing code.
      
      One of the biggest changes is in the rework of the DRBD8._SlowAssemble()
      method (one of the most complicated/ugly ones). Hopefully the new
      version is a little bit more readable.
      
      Reviewed-by: ultrotter
      1063abd1
    • Iustin Pop's avatar
      Change BlockDev.Remove() failure result · 0c6c04ec
      Iustin Pop authored
      Currently, the Remove() methods of block devices return True/False.
      This doesn't permit any error detail reporting.
      
      This patch changes the return type to None for success, and raises
      BlockDeviceError in case of failure. This permits the details to be
      passed up the stack.
      
      The patch also simplifies a little the Remove method of file-based
      devices (no stat first, just try unlink).
      
      Reviewed-by: ultrotter
      0c6c04ec
    • Iustin Pop's avatar
      Switch the blockdev_remove rpc to (status, data) · e1bc0878
      Iustin Pop authored
      This converts the backend and cmdlib modules to a (status, data)
      implementation of the blockdev_remove rpc call. bdev.py is not yet
      converted, so we don't actually have error information.
      
      We also fix a bug in _RemoveDisks by not reusing a variable.
      
      Reviewed-by: ultrotter
      e1bc0878
    • Iustin Pop's avatar
      Change BlockDev.Shutdown() failure result · 746f7476
      Iustin Pop authored
      Currently, the Shutdown() methods of block devices return True/False.
      This doesn't permit any error detail reporting.
      
      This patch changes the return type to None for success, and raises
      BlockDeviceError in case of failure. This permits the details to be
      passed up the stack.
      
      For LVM and file-backed devices, this is a simple change. For DRBD, we
      first remove the shutdown of disks in case of network activation
      failures (since with static minors the minor is used anyway, we don't
      gain anything by clearing it), and the we simply change _ShutdownAll()
      to raise an exception.
      
      Reviewed-by: ultrotter
      746f7476
    • Iustin Pop's avatar
      Switch the blockdev_shutdown rpc to (status, data) · cacfd1fd
      Iustin Pop authored
      This converts the backend and cmdlib modules to a (status, data)
      implementation of the blockdev_shutdown rpc call. bdev.py is not yet
      converted, so we don't actually have error information.
      
      We also fix a bug in _ShutdownInstanceDisks by not reusing a variable.
      
      Reviewed-by: ultrotter
      cacfd1fd
    • Iustin Pop's avatar
      Convert blockdev_assemble rpc to (status, data) · 53c14ef1
      Iustin Pop authored
      This converts the RPC call blockdev_assemble to the new-style result
      format. Note that we won't usually have error information, but it's the
      first step toward it.
      
      Reviewed-by: ultrotter
      53c14ef1
    • Iustin Pop's avatar
      RAPI: fix a pylint warning · 7a6b9510
      Iustin Pop authored
      Child classes of _R_TAGS must define TAG_LEVEL, but for good style let's
      define it also here to at least ensure we don't get a 'Unknown
      attribute' exception.
      
      Of course, this also silences a pylint warning.
      
      Reviewed-by: amishchenko
      7a6b9510
    • Guido Trotter's avatar
      LUSetInstanceParams: use the correct hvparams · 12649e35
      Guido Trotter authored
      In LUSetInstanceParam we used to save the dict without defaults for the
      instance params as hv_inst, but to use the populated one for the
      instance (hv_new). Fixing this leads to instances without all the
      parameters set.
      
      Reviewed-by: iustinp
      12649e35
    • Guido Trotter's avatar
      KVM: Correct CheckParameterSyntax docstring · 5c418644
      Guido Trotter authored
      The comment is not really true anymore, as we have a lot of parameters
      nowadays.
      
      Reviewed-by: iustinp
      5c418644
    • Guido Trotter's avatar
      KVM: Fix _CallMonitorCommand error message · 9798fcae
      Guido Trotter authored
      1) Only instance_name is available
      2) There was a missing string parameter
      
      Reviewed-by: iustinp
      9798fcae
    • Iustin Pop's avatar
      Fix one more RAPI QA test · 68289c75
      Iustin Pop authored
      This was skipped in the previous QA patch.
      
      Reviewed-by: imsnah
      68289c75
  2. 09 Feb, 2009 19 commits
    • Guido Trotter's avatar
      KVM: Add usb mouse type parameter · 11344a50
      Guido Trotter authored
      In some cases 'mouse' may work better than 'tablet', so we'll handle
      both by allowing the user to specify a parameter. By default no mouse is
      used.
      
      Reviewed-by: iustinp
      11344a50
    • Guido Trotter's avatar
      KVM: allow netboot · 8745c3d7
      Guido Trotter authored
      With this patch we allow KVM instances to be booted off the network.
      The only issue is that this is not compatible with virtio nics, so
      we disallow them, when booting from the net.
      
      Reviewed-by: iustinp
      8745c3d7
    • Guido Trotter's avatar
      KVM: actually support different nic types · 37f88dc6
      Guido Trotter authored
      When executing the KVM runtime we load the nic type from the runtime
      hvparams and use it to specify the nic model type. As for the disk we
      translate the DEV_PARAVIRTUAL type to 'virtio'.
      
      Reviewed-by: iustinp
      37f88dc6
    • Guido Trotter's avatar
      KVM: export hvparams in the runtime · c2672466
      Guido Trotter authored
      They'll be used to set the nic type when we execute the runtime, since
      the nics are processed later. We need to save the hvparams because we
      want to use the same one as when we saved the runtime, rather than use
      the current instance ones, to avoid applying only some changed
      parameters when the runtime is loaded.
      
      Reviewed-by: iustinp
      c2672466
    • Guido Trotter's avatar
      KVM: actually support different disk types · 1213604d
      Guido Trotter authored
      By passing the relevant if= value to the disk we support different disk
      types. The only change is that we'll translate "paravirtual" to
      "virtio" to keep only one "paravirtualized" value, around ganeti. The
      if= value is calculated outside the disks loop, as it's the same for all
      disks (as currently ganeti doesn't support per-disk params).
      
      Reviewed-by: iustinp
      1213604d
    • Guido Trotter's avatar
      Xen-HVM: Improve the invalid disk/nic type error · 5155ede7
      Guido Trotter authored
      Copy the message from the KVM one, adding a missing 'the' and a list of
      possible values, to help the user in his decision.
      
      Reviewed-by: iustinp
      5155ede7
    • Guido Trotter's avatar
      KVM: parameters for different disk and nic types · 43440815
      Guido Trotter authored
      - Add a bunch of NICs and DISKs types
      - Specify which one are valid disks and nics for KVM (the new ones
        toghether with some of the old ones)
      - Add the default values (paravirtual)
      - Allow the disk and nic types as parameters and check their validity
      
      Reviewed-by: iustinp
      43440815
    • Guido Trotter's avatar
      Rename the device type constants · d08f6067
      Guido Trotter authored
      These are not HVM specific, so have been given an HT generic name.
      
      Reviewed-by: iustinp
      d08f6067
    • Guido Trotter's avatar
      s/HT_HVM_VNC_BASE_PORT/VNC_BASE_PORT/g · 377d74c9
      Guido Trotter authored
      The VNC base port has nothing to do with HVM itself, and is general to
      VNC itself, so we're removing the HT_HVM prefix to the constant.
      
      Reviewed-by: iustinp
      377d74c9
    • Iustin Pop's avatar
      Add a new instance query flag ‘disk_usage’ · 024e157f
      Iustin Pop authored
      This patch adds a new instance query flag called disk_usage that
      retrieves the overall space used by an instance on each of its nodes.
      This can be used when balancing the cluster or checking N+1 status.
      
      The flag is also exported in RAPI. Note the flag is currently broken for
      file-based instances, as it represents the amount of space in the
      cluster volume group.
      
      Reviewed-by: ultrotter
      024e157f
    • Iustin Pop's avatar
      Uniformize some function names in backend.py · 821d1bd1
      Iustin Pop authored
      Currently, the names of the functions in backend.py that are actually
      RPC procedures and are called from ganeti-noded are not corresponding to
      the RPC names. This makes it hard to actually see which functions are
      exported and which functions are internal to backend.
      
      This patch renames all blockdevice-related functions in backend.py match
      the name of the RPC call (without the ‘call’ or ‘perspective’ prefix).
      This should make it easier to grep for a given function called in
      cmdlib, without having to open and check in ganet-inoded what backend
      function it corresponds to.
      
      The patch also does two minor extra cleanups (rename a variable and
      change a logging level).
      
      Reviewed-by: ultrotter
      821d1bd1
    • Iustin Pop's avatar
      bdev: add and use two utility functions · 82463074
      Iustin Pop authored
      This patch adds two utility functions for raising BlockDeviceError
      exceptions and for running functions while ignoring this error. Most of
      the manual “raise errors.BlockDeviceError” cases are converted to
      _ThrowError, as this makes the code clearer.
      
      We also change most of the DRBD error messages to include the minor
      number because with the parallel execution of commands it's not longer
      possible to identify the failed DRBD just from the timestamp, and the
      minor number can be mapped back to the instance easier.
      
      Reviewed-by: ultrotter
      82463074
    • Iustin Pop's avatar
      rpc.call_blockdev_find: convert to (status, data) · 23829f6f
      Iustin Pop authored
      This patch converts the call_blockdev_find - which searches for block
      devices and returns their status - to the (status, data) format. We also
      modify the backend function name to match the rpc call.
      
      Reviewed-by: ultrotter
      23829f6f
    • Iustin Pop's avatar
      Export the cpu nodes and sockets from Xen · 0105bad3
      Iustin Pop authored
      This is a hand-picked forward patch of commit 1755 on the 1.2 branch
      (hand-picked since the trees diverged too much since then):
      
          The patch changed the xen hypervisor to compute the number of cpu
          sockets/nodes and enables the command line and the RAPI to show this
          information (for RAPI is enabled by default in node details, for gnt-one
          one can use the new “cnodes” and “csockets” fields).
      
          Originally-Reviewed-by: ultrotter
      
      For the KVM and fake hypervisors, the patch just exports 1 for both
      nodes and sockets. This can be fixed, by looking at the
      /sys/devices/system/cpu/cpuN/topology directories, and computing the
      actual information, but that should be done in a separate patch.
      
      Reviewed-by: imsnah
      0105bad3
    • Iustin Pop's avatar
      Fix handling OS errors in AddOSToInstance · 1268d6fd
      Iustin Pop authored
      This patch fixes the error handling in the add OS to instance function
      with regard to invalid OSes. Previously, we didn't handle any such
      errors, with the end result that the user would have to look in the node
      daemon log.
      
      The patch also renames the name of the function to match the RPC call
      name.
      
      Reviewed-by: ultrotter
      1268d6fd
    • Iustin Pop's avatar
      backend.DrbdAttachNet: don't ignore Open() errors · d3da87b8
      Iustin Pop authored
      Currently the return value or errors from the block device Open() method
      are ignored. This patch catches any BlockDeviceErrors and returns a
      well-formatted result.
      
      Reviewed-by: ultrotter
      d3da87b8
    • Iustin Pop's avatar
      cmdlib: simplify some rpc error handling cases · 0959c824
      Iustin Pop authored
      By using the RemoteFailMsg() or the payload field of RpcResult, we can
      simplify a few functions in cmdlib.
      
      Reviewed-by: ultrotter
      0959c824
    • Iustin Pop's avatar
      RpcResult: add a new payload field · f2def43a
      Iustin Pop authored
      For results which use the (status, payload) response type, it's easier
      to define a ‘payload’ field on the result holding the payload than to
      extract it using “data[1]” in the caller code.
      
      Reviewed-by: ultrotter
      f2def43a
    • Iustin Pop's avatar
      LUCreateInstance: only set running flag at the end · 4978db17
      Iustin Pop authored
      In lockless queries, it's better if we see the instance in ADMIN_down
      rather than ERROR_down during the time it's installed. As such, we
      change the LU to only mark the instance 'up' at the time we are ready to
      start it.
      
      Reviewed-by: ultrotter
      4978db17
  3. 07 Feb, 2009 4 commits
    • Guido Trotter's avatar
      KVM: don't boot from a virtio cdrom · 9dd363eb
      Guido Trotter authored
      Apparently it's not supported. Also add -boot command line parameters
      to kvm, since they seem to help booting from the right place. Everything
      will still only work when not using a kernel, but well... :)
      
      Reviewed-by: iustinp
      9dd363eb
    • Guido Trotter's avatar
      KVM: don't boot from cdrom with no cdrom · ec91c05d
      Guido Trotter authored
      Reviewed-by: iustinp
      ec91c05d
    • Guido Trotter's avatar
      Support cdrom image and boot order for KVM · 66d5dbef
      Guido Trotter authored
      The cdrom image has the same meaning than in Xen HVM, and so does
      boot_order, even though it has a slightly different syntax, and uses the
      value 'disk' too boot from disk and 'cdrom' to boot from cdrom.
      
      Reviewed-by: iustinp
      66d5dbef
    • Guido Trotter's avatar
      Get rid of constants.HT_HVM_DEFAULT_BOOT_ORDER · 30948aa6
      Guido Trotter authored
      Confusingly, as a leftober from 1.2, there was a
      constants.HT_HVM_DEFAULT_BOOT_ORDER constant, with a value opposite to
      the default HV_BOOT_ORDER hv param that got enabled only if
      HV_BOOT_ORDER was set to None. Since setting it to None is very
      hard/impossible for the user, and we didn't handle other "empty" values
      (False, ''), we'll just force the parameter to have a valid value (after
      all we have a default, and that's the way we use hvparams) and get rid
      of the old constant altoghether.
      
      Reviewed-by: iustinp
      30948aa6
  4. 06 Feb, 2009 2 commits
    • Iustin Pop's avatar
      QA: switch RAPI to https · 49b1d36e
      Iustin Pop authored
      Since we by default now use SSL for RAPI, we need to switch the QA
      tests to SSL too.
      
      Reviewed-by: amishchenko
      49b1d36e
    • Iustin Pop's avatar
      Fix rapi job listing · ee69c97f
      Iustin Pop authored
      This patch fixes a couple of issues with the job listing:
        - in case of a non-existing job, nicely raise 404 instead of 500
        - in the job detail listing, also list the job log, the job
          timestamps, etc.
        - the opcode migrate instance was missing its description field
      
      Reviewed-by: imsnah
      ee69c97f
  5. 05 Feb, 2009 3 commits
    • Iustin Pop's avatar
      rapi: fix SSL mode and use SSL by default · 2ed6a7d6
      Iustin Pop authored
      This patch fixes the SSL mode (by actually constructing SSL parameters
      from the command line options) and enables SSL by default; the old “-S”
      option which enabled SSL is now changed to “--no-ssl”. The certificate
      and key are by default pointing to the Ganeti auto-generated certificate
      for rapi.
      
      Reviewed-by: imsnah
      2ed6a7d6
    • Iustin Pop's avatar
      Small improvement to the init.d example file · e10a3aea
      Iustin Pop authored
      The start_action function is changed so that it can be called with
      arguments - this could be used to parse a defaults file, etc.
      
      Reviewed-by: imsnah
      e10a3aea
    • Guido Trotter's avatar
      KVM: add VNC TLS and X509 parameters · 8b2d1013
      Guido Trotter authored
      With this parameters VNC for KVM is able to be protected by tls,
      optionally with an x509 certificate, and optionally verifying the
      client as well. Additionally in this patch we limit the bind address to
      being a directory, rather than a file or a directory, for simplicity, as
      it allows for the same level of control anyway.
      
      Reviewed-by: iustinp
      8b2d1013