1. 28 Apr, 2008 1 commit
    • Iustin Pop's avatar
      Fix iallocator instance info · 768f0a80
      Iustin Pop authored
      The commit "IAllocator: some more info exported" broke the instance list
      generation due to a wrong index variable. This patch fixes that.
      Reviewed-by: ultrotter
  2. 25 Apr, 2008 6 commits
    • Michael Hanselmann's avatar
      Extend utils.WriteFile · 70f4497c
      Michael Hanselmann authored
      Add parameters to not check the path for absoluteness, implement a dry
      run mode and automatically create a backup if requested. This will be
      used by the cfgupgrade utility.
      Reviewed-by: schreiberal
    • Iustin Pop's avatar
      IAllocator: some more info exported · 6286519f
      Iustin Pop authored
      This patch adds the following information to the exported info:
        - hypervisor type (in the main dict)
        - total memory used by primary instances (in each node dict) (can be
          computed from the node+instance dicts, but it's cheap to compute
          from Ganeti) (this is not live data, just from the config)
        - total memory used by primary instances marked to be up, similar to
          the above
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      IAllocator: simplify node info computation · b2662e7f
      Iustin Pop authored
      Currently we try to convert the values returned by call_node_info to
      ints, and if all succeed, we actually do the conversion. Simplify this
      by doing it in one step.
      The patch also adds exporting of node memory as 'reserved_memory'.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      patch 1/4 extended HVM features for 1.2 · ddd9bc04
      Iustin Pop authored
      This patch extends the config objects with the slots to handle
      more HVM configuration items.
      Author: schreiberal
      Reviewed-by: iustinp,imsnah
    • Michael Hanselmann's avatar
      Move target creating symlinks in lib/ into Makefile.libcommon · 4febe836
      Michael Hanselmann authored
      Reviewed-by: iustinp
    • Iustin Pop's avatar
      Add iallocator documentation · b2d72ffe
      Iustin Pop authored
      Reviewed-by: imsnah
  3. 24 Apr, 2008 5 commits
    • Manuel Franceschini's avatar
      backend.FinalizeExport: safely initialize some vars · 66f93869
      Manuel Franceschini authored
      This patch initializes nic_count and disk_count with 0. This prevents
      some reference errors if the snap_disks block device list is empty.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Style fixes for trunk · b4de68a9
      Iustin Pop authored
      This small patch fixes:
        - wrong indentation in two places
        - use of 'os' variable that hides global scope os module
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Implement replace secondary via the iallocator · b6e82a65
      Iustin Pop authored
      This patch implements secondary replace via the iallocator. The new
      opcode parameter 'iallocator' behaves like this: if passed, it will
      always compute and assign a new secondary, behaving in effect as if the
      secondary node has been passed. It conflicts with actually giving the
      secondary too.
      [Note: not tested with remote_raid1, but the code should behave the
      same, we only touch CheckPrereq and we assign a node.]
      The patch also adds burnin support for the replace secondary operation;
      with this in place, burnin can fully work with auto-assigned nodes.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Implement memory size option for burnin · 5e767b34
      Iustin Pop authored
      This simple patch adds memory size for the burnin instances, which helps
      testing allocator algorithm response based on the available node memory
      and instance memory size values.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Fix generalized relocate mode of IAllocator · 29859cb7
      Iustin Pop authored
      The patch which generalized the IAllocator was half-true: it actually
      put the selection of the node inside the IAllocator, so callers were not
      able to specify replace primary node.
      This patch does:
        - split the arguments to the constructor in three sets: mode and name
          are always passed, and then we differentiate between allocation
          parameters and relocation ones
        - add a new relocate_from option to the IAllocator constructor which
          is a list of nodes we want to move the instance off
        - rename the 'nodes' argument in the request object to 'relocate_from'
          since this is clearer and is not confused with the result field also
          called 'nodes'
      Reviewed-by: ultrotter
  4. 23 Apr, 2008 10 commits
    • Manuel Franceschini's avatar
      Fix burnin ImportExport CreateInstance opcode · 96bb2f71
      Manuel Franceschini authored
      This patch adds the two attributes file_storage_dir and file_driver
      to the CreateInstance opcode in the ImportExport method, since
      otherwise it will fail with the file storage patches.
      Reviewed-by: iustinp
    • Guido Trotter's avatar
      burnin: improve instance create message · 6d54548e
      Guido Trotter authored
      When the allocator or a non-mirrored template are used the message shown by
      burnin at instance creation time was wrong. Fixing it.
      Reviewed-by: iustinp
    • Guido Trotter's avatar
      burnin: remove created exports · 4a7ff493
      Guido Trotter authored
      Make burnin remove exports after importing the instance back.
      Reviewed-by: iustinp
    • Guido Trotter's avatar
      Add gnt-backup remove functionality · 9ac99fda
      Guido Trotter authored
      This patch also fixes the LUExportInstance Prereq docstring.
      Reviewed-by: iustinp
    • Manuel Franceschini's avatar
      Add instance rename to burnin · 054a8696
      Manuel Franceschini authored
      This patch adds the possibility to execute instance renaming when
      doing a cluster burnin. The optional parameter --rename takes
      one 'spare' instance name.
      Given this option it renames all given instances to the spare one
      and back to their original name.
      Reviewed-by: iustinp
    • Iustin Pop's avatar
      Generalize the replace_secondary mode in iallocator · 2a139bb0
      Iustin Pop authored
      Currently the replace_secondary mode is too restrictive. This patch
      changes this to a general 'relocate' mode where the node(s) to be
      changed are specified via a new key in the request dict ('nodes') so
      that we can change any of the instance's nodes.
      Note that for the relocate mode, len(nodes) == required_nodes, so the
      required nodes field is redundant, but it is provided for consistency
      with the allocate mode.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Implement replace_secondary in the dumb allocator · eb0994e7
      Iustin Pop authored
      This patch allows the dumb allocator to perform the replace secondary
      request type. This is done simply by not allowing the current instances
      nodes as a valid selection, and using the existing instance data instead
      of the request (which doesn't have the instance info when doing the
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Send required_nodes field to the iallocator scripts · 27579978
      Iustin Pop authored
      This patch adds the 'required_nodes' field in the request dict for the
      This means that the handmade-checks in the create instance can be
      simplified, and that the dumb allocator can be made simple. Therefore
      the patch also modifies it.
      The patch also sends the disk_space_total to the script in realocate
      mode and a small fix for showing errors (include stderr too).
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Allow burnin to use an iallocator in instance creation · b91bde14
      Iustin Pop authored
      This patch adds iallocator support to burnin, currently only in instance
      creation. This means that, depending on the external algorithm, not all
      nodes might get instances.
      The patch also restricts node selection and iallocator options together.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Move all iallocator functions into a class · d1c2dd75
      Iustin Pop authored
      This patch moves all the iallocator function into a separate class that
      is then somewhat easier to use. It doesn't bring any new functionality.
      The patch also changes the way the iallocator is called - the
      OpTestAllocator opcode is no longer needed, and all its parameters
      should be passed directly to the IAllocator constructor.
      Reviewed-by: ultrotter
  5. 22 Apr, 2008 1 commit
  6. 21 Apr, 2008 3 commits
    • Iustin Pop's avatar
      Only change instance status if not already so · 455a3445
      Iustin Pop authored
      This patch makes the _SetInstanceStatus only change the status of the
      instance (in the config file) if it's not already in the desired state.
      This skips the increase of the config serial no without actual data
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Reuse common code between MarkInstance{Up,Down} · 6a408fb2
      Iustin Pop authored
      This patch creates a new method ConfigWriter._SetInstanceStatus that
      consists of the common code between MarkInstanceUp and MarkInstanceDown.
      These two methods become wrappers over the _SetInstanceStatus.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Abstract the json functions into a separate module · 8d14b30d
      Iustin Pop authored
      This simple patch adds a new module that holds the simplejson functions
      for serialization/deserialization. This reduces the amount of redundant
      The patch also adds some normalizations to the json output:
        - the output text will always have an EOL as last char
        - extra spaces before EOL are removed
      Reviewed-by: ultrotter
  7. 16 Apr, 2008 6 commits
    • Michael Hanselmann's avatar
      Add --readd option to “gnt-node add” · e7c6e02b
      Michael Hanselmann authored
      This allows us to readd a node after it failed and required a
      reinstallation or replacement.
      Reviewed-by: iustinp
    • Iustin Pop's avatar
      A pure whitespace change for style compliance · 35a0d128
      Iustin Pop authored
      Reviewed-by: amishchenko
    • Iustin Pop's avatar
      IAllocator part 3: LUCreateInstance changes · 538475ca
      Iustin Pop authored
      This (final) patch allows the instance's nodes to be selected
      automatically based on the passed allocator algorithm.
      The patch changes the pnode opcode parameter from required to optional,
      now either the pnode or the iallocator must be passed.
      A possible improvement could be to organize all the _IAllocator
      functions into a separate class, but that can come later and the current
      version is functionally ok.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Reorder checks in instance create · 901a65c1
      Iustin Pop authored
      This patch reorders the checks in the instance create prereq so that all
      checks and normalisations that are not node-dependent are done before
      the node dependent checks.
      This is done so that, after the instance-related opcode parameters are
      checked and fixed, we can run the allocator and compute the primary (and
      any secondary) nodes, and only then proceed with node-related checks.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Implement 'out' direction on allocator tests · 298fe380
      Iustin Pop authored
      This patch adds the paths for searching for instance allocators and
      makes the LUTestAllocator code run the allocator and return the results
      if the direction specified is 'out'. 'out' means that the opcode will
      return the result of the allocator run, instead of the allocator input
      file ('in').
      The patch unifies all names to refer to 'iallocator' instead of plain
      The patch also adds an example allocator that can be used for testing
      this new functionality.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Allocator framework, 1st part: allocator input generation · d61df03e
      Iustin Pop authored
      In preparation for the introduction of automatic instance allocator,
      this patch adds an allocator simulation opcode, that based on the input
      parameters, will return either the input message to the allocator
      (implemented) or the result of the allocator run (not yet implemented).
      This allows algorithm tests against simulated allocations and the
      current cluster state.
      The patch adds the following:
        - a function that generates the generic cluster information for the
        - a function that generates the 'new instance' information
        - a function that generates the 'replace_secondary' information
      These three functions will be used by the allocator framework later to
      generate the actual information for the external algorithms. Currently
      we just return the json-serialized text.
      Reviewed-by: imsnah
  8. 15 Apr, 2008 5 commits
  9. 11 Apr, 2008 1 commit
  10. 10 Apr, 2008 2 commits
    • Guido Trotter's avatar
      Verify: make skipping checks possible · e54c4c5e
      Guido Trotter authored
      Add a general way to skip some checks at cluster-verify time and make the N+1
      memory redundancy check optional.
      Reviewed-by: iustinp
    • Guido Trotter's avatar
      Verify: add N+1 Memory redundancy verification · 2b3b6ddd
      Guido Trotter authored
      For every node we check that we can host all the instances it's currently
      secondary for belonging to the same primary. This ensures that if a node fails
      all its instances can fit on their secondary node. The code only works when
      failover is forced to go to the secondary node, and cannot go to an arbitrary
      node in the cluster, which is the case in Ganeti 1.2.
      Reviewed-by: iustinp