1. 11 Feb, 2009 1 commit
  2. 10 Feb, 2009 1 commit
    • Guido Trotter's avatar
      Instance parameters: force typing · a5728081
      Guido Trotter authored
      We want all the hv/be parameters to have a known type, rather than a
      random mix of empty string, boolean values, and None, so we declare the
      type of each variable and we enforce/convert it.
      - Add some new constants for enforceable value types
      - Add new constants dicts HVS_PARAMETER_TYPES and BES_PARAMETER_TYPES
        holding not only the valid parameters but also their types
      - Drop the old HVS_PARAMETERS and BES_PARAMETERS constants and calculate
        the values from the type dict
      - Convert all the default parameters to a valid type value
      - Create a new ForceDictType utils function, to check/enforce a dict's
        element value types, with relevant unit tests
      - Drop a few custom functions to check/convert the BE param types in
        utils and cli, in favor of ForceDictType
      - Double-check the parameter types using ForceDictType in both scripts
        and LogicalUnits, when possible.
      As a bonus:
      - Remove some old commented-out code in gnt-instance
      - Remove some already fixed FIXME
      - Fix a bug which prevented VALUE_DEFAULT to be applied to BE parameters
        in SetInstanceParams because the value was checked for validity before
        that transformation was made
      - Fix a bug which prevented initing a cluster and passing hvparams to
        work at all
      - ForceDictType allows an allowed_values for exceptions, which makes us
        able to do the checking even when some values must not be
        converted/typechecked (for example the 'default' string in
      Reviewed-by: iustinp
  3. 09 Feb, 2009 1 commit
    • 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
  4. 04 Feb, 2009 1 commit
    • Iustin Pop's avatar
      Implement lockless query operations · ec79568d
      Iustin Pop authored
      This patch adds the framework for, and enables lockless OpQueryInstances. This
      means that instances will be shown in ERROR_up or ERROR_down state, even though
      this is not an error (but just an in-progress job).
      The framework is implemented as follows:
        - the OpQueryInstances, OpQueryNodes and OpQueryExports opcodes take
          an additional “use_locking” flag which will denote whether to lock
          or not; this patch only implements this for LUQueryInstances
        - the luxi query functions take an additional argument use_locking
          which is passed to the master daemon, and then passed to the above
        - cli.py export a new SYNC_OPT command line options which implement
          setting this flag to true
        - except for gnt-instance list, which uses this option, and for
          name-only queries (e.g. QueryNodes(fields=["names"])), all other
          callers are setting this flag to True
        - RAPI also sets the flag to True
      The patch was tested with a continuous (0.2s sleep in-between)
      gnt-instance list during a burnin, and no problems were observed.
      Reviewed-by: ultrotter
  5. 01 Feb, 2009 1 commit
  6. 29 Jan, 2009 2 commits
    • Iustin Pop's avatar
      gnt-instance list: accept input names · 5ffaa51d
      Iustin Pop authored
      Currently gnt-instance list will refuse to take arguments, and always
      return the full list of instances. This patch allows it to pass names to
      LUQueryInstances, so that we restrict the input to a given set of
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Check that instance exists before confirm. queries · a76f0c4a
      Iustin Pop authored
      Currently we ask the user for confirmation, and only after (try to)
      remove, failover or migrate the instance. This doesn't work nicely if
      the instance doesn't exist, so we make a query for the instance before
      the prompt, which will throw an error in case it doesn't exist.
      Side-note: the way the query works today is not really nice. It would be
      better if we could query explicitly for a missing instance name, so that
      this is done cleaner (explicit check) instead of side-effect (throw
      exception). We do add code for this explicit check, except that today it
      won't be used actually.
      Reviewed-by: ultrotter
  7. 27 Jan, 2009 1 commit
    • Iustin Pop's avatar
      Rework the multi-instance gnt commands · 479636a3
      Iustin Pop authored
      This patch changes the multi-instance gnt-* commands (gnt-instance
      start/stop, gnt-node evacuate/failover) such that the individual
      operations are submitted in parallel, ideally improving the speed of the
      The patch does this by abstracting the job set functionality into a new
      class in cli.py, that takes care of the job submit, job poll and error
      Reviewed-by: ultrotter
  8. 23 Jan, 2009 3 commits
    • Iustin Pop's avatar
      Sort the instance names in batcher · 7312b33d
      Iustin Pop authored
      In case we submit multiple instances via batcher, it's nicer to have the
      sorted nicely.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Fix batcher for 2.0-style disks and nics · 9939547b
      Iustin Pop authored
      This patch fixes the gnt-instance batch-create command, and in doing so
      also slightly changes two other functions:
        - we change utils.ParseUnit so that it accepts integer values also
          (both ParseUnit(5) and ParseUnit("5") return the same value)
        - a bridge 'None' in LUCreateInstance will be converted to the default
          bridge; currently only missing bridges will be accepted to mean the
          default one
      The main changes to batcher were the change to variable number of disks
      and NICs.
      The patch also adds a batcher-instances.json example file copied from
      the 1.2 branch and properly modified.
      Reviewed-by: imsnah, killerfoxi
    • Iustin Pop's avatar
      Make iallocator work with offline nodes · 1325da74
      Iustin Pop authored
      This patch changes the iallocator framework to work with and properly
      export to plugins offline nodes. It does this by only exporting the
      static configuration data for those nodes, and not attempting to parse
      the runtime data.
      The patch also fixes bugs in iallocator related to the RpcResult
      conversion, changes the should_run to admin_up attribute name (as per
      the internals change), and adds “-I” as a short option for
      “--iallocator” in gnt-instance, gnt-backup and burnin.
      Reviewed-by: ultrotter
  9. 20 Jan, 2009 1 commit
  10. 13 Jan, 2009 1 commit
    • 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
  11. 12 Jan, 2009 1 commit
    • 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
  12. 09 Jan, 2009 1 commit
    • 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
        - change to a new node (either via manually specified node or via
      Reviewed-by: imsnah
  13. 02 Dec, 2008 1 commit
  14. 01 Dec, 2008 1 commit
  15. 27 Nov, 2008 2 commits
    • Iustin Pop's avatar
      Allow network-less instances · e0e31530
      Iustin Pop authored
      Currently there's no way to specify no NICs for an instance, even though
      this is a supported configuration.
      The patch adds a --no-nics option to gnt-instance add.
      Reviewed-by: amishchenko
    • Iustin Pop's avatar
      Fix instance creation · 112050d9
      Iustin Pop authored
      This patch fixes the diskless and drbd/file based instances. Sorry :(
      Reviewed-by: ultrotter
  16. 25 Nov, 2008 3 commits
    • Iustin Pop's avatar
      Implement support for multi devices changes · 24991749
      Iustin Pop authored
      This big patch adds support for:
        - changing NIC/disks in the multi-device model
        - adding/removing NICs
        - adding/removing disks
      The patch is big and not very nice; the error checking paths are not
      very clear.
      The biggest problem is that from a simple instance.ATTR=VAL change
      (which didn't throw errors before) now we are creating and removing
      disks in this LU.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Show disk access mode in gnt-instance info · b6fdf8b8
      Iustin Pop authored
      The mode parameter needs to be exported and shown in the info output.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Slighly improve multi-nic in gnt-instance info · d2acfe27
      Iustin Pop authored
      Previously we had only one nic, so the NIC information was all on one
      line. This patch changes it to:
          - NICs:
            - nic/0: MAC: aa:00:00:e8:b2:ef, IP: None, bridge: None
            - nic/1: MAC: aa:00:00:53:ca:92, IP: None, bridge: xen-br0
            - nic/2: MAC: aa:00:00:ba:e5:30, IP: None, bridge: None
      Reviewed-by: ultrotter
  17. 23 Nov, 2008 2 commits
    • Iustin Pop's avatar
      Enable auto-unit formatting in script output · 9fbfbb7b
      Iustin Pop authored
      This patch enables by default the old 'human-readable' option, but in a
      slightly different model.
      The option is now called "units" and takes either:
       - 'h' for automatic formatting
       - 'm', 'g' or 't' for mebi/gibi/tebibytes
      If 'h' is used, we add a unit suffix, otherwise nothing is added so that
      parsing is easy.
      The default value of this unit is:
        - 'h' if a separator is not passed
        - 'm' if a separator is passed
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Improvements to CLI output · 23b8c8d6
      Iustin Pop authored
      This patch adds nicer formatting for some gnt-instance list operations.
      Reviewed-by: ultrotter
  18. 21 Nov, 2008 2 commits
    • Iustin Pop's avatar
      Make cli.py use FieldSet for matching fields · 00430f8e
      Iustin Pop authored
      This changes cli.py to FieldSet usage so that gnt-instance list will
      format nicely the disk.size/*, and the count of disks/nics.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Change GrowDisk to work with multi-disk · ad24e046
      Iustin Pop authored
      This patch changes the instance.FindDisk method to take index arguments
      (instead of iv_names), and changes GrowDisk and list instances
      Reviewed-by: ultrotter
  19. 20 Nov, 2008 2 commits
    • Iustin Pop's avatar
      Convert replace-disks (same nodes) to multi-disk · 54155f52
      Iustin Pop authored
      This patch changes the drbd8 replace disk only (no secondary change) to
      work in with multi-disk. This mode of replaces works correctly with
      replacing only a subset of disks.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Initial multi-disk/multi-nic support · 08db7c5c
      Iustin Pop authored
      This patch adds support for mult-disk/multi-nic in:
        - instance add
        - burnin
      The start/stop/failover/cluster verify work as expected. Replace disk
      and grow disk are TODO.
      There's also a change gnt-job to allow dictionaries to be listed in
      gnt-job info.
      Reviewed-by: imsnah
  20. 27 Oct, 2008 1 commit
  21. 20 Oct, 2008 3 commits
    • Iustin Pop's avatar
      Fix some pylint-detected issues on the scripts · 2f79bd34
      Iustin Pop authored
      Some names were wrong, and similar stuff detected by pylint.
      gnt-debug.GenericOpCode is still broken.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Convert the gnt scripts to ToStdout/err · 3a24c527
      Iustin Pop authored
      Currently the gnt-* scripts are using a mix of print, logger.ToStd* and
      sys.stderr.write. We convert them all to using cli.ToStdout/err. This
      way, we can easily change the implementation for all at once.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Fix gnt-instance modify with beparams · 61be6ba4
      Iustin Pop authored
      The gnt-instance modify didn't work correctly w.r.t the be parameters.
      There was also a typo in the corresponding LU.
      Reviewed-by: imsnah
  22. 15 Oct, 2008 1 commit
    • René Nussbaumer's avatar
      Adding batch-create to gnt-instance · 0d0e9090
      René Nussbaumer authored
      This change is part of the integration of tools/batcher from
      Ganeti 1.2 into Ganeti 2.0 core code. It has a compatible
      submission interface to the version from 1.2 with these differences:
      * it's integrated into Ganeti directly: gnt-instance batch-create
      * iallocator is now provided by the instance specs
      * log is now held within Ganeti
      * no force needed
      * no sleep needed
      * memory and vcpus goes now into beparams
      * missing stuff from the TODO (see below)
      Open TODOs:
      * Implement notification about creation status/interactive part (top like)
      * Backup instance allocation specs?
      * Document usage and spec format
      Reviewed-by: iustinp
  23. 14 Oct, 2008 7 commits
    • Guido Trotter's avatar
      gnt-instance fix ValidateBeParams call · 7399cd55
      Guido Trotter authored
      ValidateBeParams does not return, but its return value is assigned to a
      variable which is never used. Avoid this assignment.
      Reviewed-by: iustinp
    • Guido Trotter's avatar
      gnt-instance remove deprecated flags · 7ac1fc45
      Guido Trotter authored
      kernel, initrd, hvm_boot_order and vnc_bind_address are now hypervisor
      parameters and should not have their own flag. Moreover querying of
      vnc_bind_address should of course pass through the hv/ namespace.
      Reviewed-by: iustinp
    • Iustin Pop's avatar
      grow-disk: wait until resync is completed · 6605411d
      Iustin Pop authored
      The patch adds a new ‘--no-wait-for-sync’ parameter to grow-disk similar
      to the one in instance add, and changes the default to wait.
      This is cleaner as at the moment when the command returns, we either
      have a fully synced disk or there is an error.
      This is a forward-port of rev 1183 on the 1.2 branch.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Some fixes related to auto_balance · c0f2b229
      Iustin Pop authored
      Change the constant name to match the value (autobalance ->
      Also add the auto_balance header so that gnt-instance can list it.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Change over to beparams · 338e51e8
      Iustin Pop authored
      This big patch changes the master code to use the beparams. Errors might
      have crept in, but it passes a small burnin.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Allow instance info to only query the config file · 57821cac
      Iustin Pop authored
      This patch adds a new '-s' parameter to ‘gnt-instance info’ that makes
      it return only 'static' information. This is much faster, especially for
      drbd instances.
      This is a forward-port of rev 1570 on the ganeti-1.2 branch, resending
      due to some conflicts.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Convert gnt-instance info to the hvparams model · 24838135
      Iustin Pop authored
      Some informations are not printed nicely (e.g. “virtual CDROM: False”),
      but this is the first step.
      Reviewed-by: imsnah