1. 14 Oct, 2008 8 commits
    • Iustin Pop's avatar
      Fix ordering of instance/nodes · c1f1cbb2
      Iustin Pop authored
      After the locking changes, and the partial locking of nodes, the
      instance/node list is not ordered anymore. Reorder so that it behaves as
      before.
      
      Reviewed-by: ultrotter
      c1f1cbb2
    • 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
      338e51e8
    • Iustin Pop's avatar
      Fix a bug with instance creation and hvparameters · 8705eb96
      Iustin Pop authored
      When creating an instance, we need to check not the opcode hvparams, but
      the final, filled hvparams against validity. While we do this for the
      remote node calls (i.e. ValidateParams), we didn't do this for
      CheckParameterSyntax.
      
      Reviewed-by: imsnah
      8705eb96
    • 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
      57821cac
    • 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
      24838135
    • Iustin Pop's avatar
      Change gnt-instance modify to the hvparams model · 74409b12
      Iustin Pop authored
      Reviewed-by: imsnah
      74409b12
    • Iustin Pop's avatar
      Change gnt-instance list to the hvparams model · 5018a335
      Iustin Pop authored
      This is just a change of the various hvm_ and pvm parameters to the hv
      model. Parameters are queried via hv/$name or via the whole dict as
      returned by hvparams.
      
      Reviewed-by: ultrotter,imsnah
      5018a335
    • Iustin Pop's avatar
      Switch instance hypervisor parameters to hvparams · 6785674e
      Iustin Pop authored
      This big patch changes instance create to the new hvparams structure.
      Old parameters are removed, so old jobs or old instances file will break
      current clusters.
      
      Reviewed-by: ultrotter
      6785674e
  2. 12 Oct, 2008 1 commit
    • Iustin Pop's avatar
      Abstract checking own address into a function · caad16e2
      Iustin Pop authored
      Currently, we check if we have a given ip address (i.e. it's alive on
      one of our interfaces) but manually calling TcpPing(source=localhost).
      This works, but having it spread all over the code makes it hard to
      change the implementation.
      
      The patch abstracts this into a separate utils.OwnIpAddress(addr)
      function. We add a rpc call for it, which we use instead of the
      (single-use of) call_node_tcp_ping. We leave node_tcp_ping in, as seems
      useful and eventually it should be removed in a separate patch.
      
      Reviewed-by: imsnah
      caad16e2
  3. 10 Oct, 2008 4 commits
    • Guido Trotter's avatar
      LUVerifyCluster: fix error from rpc call · 2eb78bc8
      Guido Trotter authored
      When calling node_verify leads to an error _VerifyNodes tries to iterate
      over a non-sequence. Catch the error before and avoid this from
      happening.
      
      Reviewed-by: iustinp
      2eb78bc8
    • Iustin Pop's avatar
      Convert rpc module to RpcRunner · 72737a7f
      Iustin Pop authored
      This big patch changes the call model used in internode-rpc from
      standalong function calls in the rpc module to via a RpcRunner class,
      that holds all the methods. This can be used in the future to enable
      smarter processing in the RPC layer itself (some quick examples are not
      setting the DiskID from cmdlib code, but only once in each rpc call,
      etc.).
      
      There are a few RPC calls that are made outside of the LU code, and
      these calls are left as staticmethods, so they can be used without a
      class instance (which requires a ConfigWriter instance).
      
      Reviewed-by: imsnah
      72737a7f
    • Iustin Pop's avatar
      Cleanup in cmdlib for standalone function calls · b9bddb6b
      Iustin Pop authored
      This patch is a cleanup of the standalone functions in cmdlib. Many of
      them too as argument a ConfigWriter instance, but some also took other
      parameters from the lu (e.g. proc), and in the future, if we want to
      also pass the RpcRunner, we would have to add yet another parameter.
      
      One option is to make all these methods of top-level LogicalUnit class.
      I took another approach, and made (almost) all these functions take as
      first parameter the lu instance. It's like methods, just not declared
      under LogicalUnit.
      
      Reviewed-by: imsnah
      b9bddb6b
    • Iustin Pop's avatar
      Small random fixes · 7b3a8fb5
      Iustin Pop authored
      Indentation in bootstrap was wrong and some names in cmdlib.py were not
      right.
      
      Reviewed-by: imsnah
      7b3a8fb5
  4. 09 Oct, 2008 1 commit
  5. 08 Oct, 2008 2 commits
    • Iustin Pop's avatar
      Sanitize the hypervisor names · 00cd937c
      Iustin Pop authored
      Since in 2.0 the user will possibly have more interaction with the
      hypervisor names, we sanitize them by removing the version numbers
      (the version can be a prerequisite for the ganeti installation, we
      shouldn't document it in variable names).
      
      Reviewed-by: schreiberal
      00cd937c
    • Iustin Pop's avatar
      Move the hypervisor attribute to the instances · e69d05fd
      Iustin Pop authored
      This (big) patch moves the hypervisor type from the cluster to the
      instance level; the cluster attribute remains as the default hypervisor,
      and will be renamed accordingly in a next patch. The cluster also gains
      the ‘enable_hypervisors’ attribute, and instances can be created with
      any of the enabled ones (no provision yet for changing that attribute).
      
      The many many changes in the rpc/backend layer are due to the fact that
      all backend code read the hypervisor from the local copy of the config,
      and now we have to send it (either in the instance object, or as a
      separate parameter) for each function.
      
      The node list by default will list the node free/total memory for the
      default hypervisor, a new flag to it should exist to select another
      hypervisor. Instance list has a new field, hypervisor, that shows the
      instance hypervisor. Cluster verify runs for all enabled hypervisor
      types.
      
      The new FIXMEs are related to IAllocator, since now the node
      total/free/used memory counts are wrong (we can't reliably compute the
      free memory).
      
      Reviewed-by: imsnah
      e69d05fd
  6. 06 Oct, 2008 2 commits
    • Iustin Pop's avatar
      backend.py change to get cluster name from master · 62c9ec92
      Iustin Pop authored
      Currently there are three function in backend that need the cluster name
      in order to instantiate an SshRunner. The patch changes these to get the
      cluster name from the master in the rpc call; once the multi-hypervisor
      change is implemented, then very few places in which we need the SCR
      remain in the backend.
      
      Reviewed-by: killerfoxi, imsnah
      62c9ec92
    • Iustin Pop's avatar
      Fix SshRunner breakage from the changed API · 6b0469d2
      Iustin Pop authored
      More places actually use the SshRunner than just the gnt-cluster
      commands.
      
      Reviewed-by: ultrotter
      6b0469d2
  7. 01 Oct, 2008 5 commits
  8. 29 Sep, 2008 1 commit
    • Iustin Pop's avatar
      Extend DRBD disks with shared secret attribute · f9518d38
      Iustin Pop authored
      This patch, which is similar to r1679 (Extend DRBD disks with minors
      attribute), extends the logical and physical id of the DRBD disks with a
      shared secret attribute. This is generated at disk creation time and
      saved in the config file.
      
      The generation of the secret is done so that we don't have duplicates in
      the configuration (otherwise the goal of preventing cross-connection
      will not be reached), so we add to config.py more than just a simple
      call to utils.GenerateSecret().
      
      The patch does not yet enable the use of the secrets.
      
      Reviewed-by: imsnah
      f9518d38
  9. 27 Sep, 2008 2 commits
  10. 25 Sep, 2008 2 commits
    • René Nussbaumer's avatar
      Fix iallocator name · 1ce4bbe3
      René Nussbaumer authored
      port forward of patch from revision 1690 with following message:
      
      Patch on revision 1686 used the wrong field: ial.name, which is the instance
      name and not the iallocator name. self.op.iallocator is the right field.
      
      Sorry for this inconvenience.
      
      Reviewed-by: imsnah
      1ce4bbe3
    • René Nussbaumer's avatar
      Fix a broken format string · 207a6c74
      René Nussbaumer authored
      This patch fixes a broken format string. It's expecting 3 parameters, but only
      gets 2. This change will add the missing parameter. This is a forward-port
      of the fix in Ganeti 1.2
      
      Reviewed-by: imsnah
      207a6c74
  11. 23 Sep, 2008 2 commits
    • Iustin Pop's avatar
      Switch to static minors for DRBD · a1578d63
      Iustin Pop authored
      With some todos remaining, this patch switches the DRBD devices to use
      the passed minors, and the cmdlib code (add instance and replace disks)
      to request and assign minors to the DRBD disks.
      
      Todos:
        - look at the disk RPC calls to see which can be optimized away, since
          we now know the minor beforehand
        - remove the _FindUnusedMinor usage from the few places it's still
          used (not for actual disks, but for temporary use in meta devs) and
          eventually replace with _CheckMinorUnused or such
      
      Of course, this and/or the previous two patches break existing clusters.
      Again.
      
      Reviewed-by: imsnah
      a1578d63
    • Iustin Pop's avatar
      Fix disk replace secondary with static minors · 468b46f9
      Iustin Pop authored
      The code in 'updating instance configuration' section of the replace
      disks with change secondary node was setting a wrong new logical_id for
      the drbd devices (only set the new node, not the new minor). The patch
      fixes this by remembering the new logical_id that we use for activating
      the drbd and reusing it (instead of recomputing).
      
      Since the minors are not needed to be allocated before the LVs are
      created, we also move the minor allocation step (currently as None)
      after this step.
      
      Reviewed-by: imsnah
      468b46f9
  12. 22 Sep, 2008 1 commit
    • Iustin Pop's avatar
      Extend DRBD disks with minors attribute · ffa1c0dc
      Iustin Pop authored
      This patch converts the DRBD disks to contain also a minor (per each
      node) attribute. This minor is not yet used and is always initialized
      with None, so the patch does not have any real-world impact - except for
      automatically upgrading config files (it adds the minors as None, None).
      
      Reviewed-by: imsnah
      ffa1c0dc
  13. 18 Sep, 2008 2 commits
    • Guido Trotter's avatar
      Apply filter properly in LUQuery{Nodes, Instances} · 3fa93523
      Guido Trotter authored
      Currently when not locking all nodes/instances are returned, regardless
      if the user asked only for some of them. With this patch we return to
      the previous behaviour:
        - if no names are specified return info on all current ones
        - if some names are specified and are not found give an error
        - otherwise return only info on the specified names
      
      Reviewed-by: iustinp
      3fa93523
    • Guido Trotter's avatar
      Remove auto_balance from burnin/cmdlib · c2c2a903
      Guido Trotter authored
      There is no such feature in trunk yet.
      
      Reviewed-by: iustinp
      c2c2a903
  14. 11 Sep, 2008 6 commits
    • Guido Trotter's avatar
      Parallelize Tag operations · 8646adce
      Guido Trotter authored
      For now we lock the instance/node for adding/deleting tags from it, but
      we could probably in the future do without, with more support from the
      config for atomic operations.
      
      Reviewed-by: iustinp
      8646adce
    • Guido Trotter's avatar
      Parallelize LUSetClusterParams (and add a FIXME) · c53279cf
      Guido Trotter authored
      Reviewed-by: imsnah
      c53279cf
    • Guido Trotter's avatar
      Parallelize LURemoveExport · 3656b3af
      Guido Trotter authored
      Reviewed-by: imsnah
      3656b3af
    • Guido Trotter's avatar
      Parallelize LURemoveInstance · cf472233
      Guido Trotter authored
      Using the new add/remove infrastructure this becomes pretty easy! :)
      
      Reviewed-by: imsnah
      cf472233
    • Guido Trotter's avatar
      Parallelize LUCreateInstance · 7baf741d
      Guido Trotter authored
      Finally, instance create on different node, without iallocator, can run
      in parallel. Iallocator usage still needs all nodes to be locked,
      unfortunately. As a bonus most checks which could have been moved to
      ExpandNames, before any locking is done.
      
      Reviewed-by: imsnah
      7baf741d
    • Guido Trotter's avatar
      Implement adding/removal of locks by declaration · ca2a79e1
      Guido Trotter authored
      With this patch LUs can declare locks to be added when they start and/or
      removed after they finish. For now locks can only be added in the
      acquired state, and removed if owned, and added locks default to be
      removed again, unless some action is taken.
      
      Reviewed-by: imsnah
      ca2a79e1
  15. 10 Sep, 2008 1 commit