1. 05 Dec, 2008 4 commits
    • Iustin Pop's avatar
      Cleanup the config file on demotion from candidate · 56aa9fd5
      Iustin Pop authored
      This patch adds a simple rpc which makes a backup of the config file and
      then removes it. This is done so that cluster verify doesn't complain
      immediately after demoting a node.
      
      Reviewed-by: imsnah
      56aa9fd5
    • Iustin Pop's avatar
      watcher: handle offline nodes better · cbfc4681
      Iustin Pop authored
      This patch changes the LUQueryInstances to show a different state for
      offline nodes and also modifies the watcher to understand the offline
      state in its checks.
      
      Reviewed-by: ultrotter
      cbfc4681
    • Iustin Pop's avatar
      node list: add the offline field · 9ddb5e45
      Iustin Pop authored
      Reviewed-by: ultrotter
      9ddb5e45
    • Iustin Pop's avatar
      Add a new node parameter 'offline' · fc0fe88c
      Iustin Pop authored
      This patch adds a new node parameter called offline that will be used to
      mark nodes which should be touched by commands.
      
      We also add this flag at cluster init, node add, and export it to
      iallocator scripts.
      
      Reviewed-by: ultrotter
      fc0fe88c
  2. 04 Dec, 2008 1 commit
  3. 03 Dec, 2008 5 commits
    • Guido Trotter's avatar
      LUQueryExports: fix rpcresult handling · b04285f2
      Guido Trotter authored
      call_export_list is a multi node call, so we need to go through the
      results, extrapolate the good ones, and return a failure value for the
      bad ones.
      
      Reviewed-by: imsnah
      b04285f2
    • Guido Trotter's avatar
      LUAddNode: Auto-make master candidates · 0fff97e9
      Guido Trotter authored
      When a node is added, if there are not enough master candidates, we'll
      automatically promote it.
      
      Reviewed-by: imsnah
      0fff97e9
    • Guido Trotter's avatar
      LUAddNode: Check the correct result · f08ce603
      Guido Trotter authored
      This is a typo in the conversion to RpcResult
      
      Reviewed-by: imsnah
      f08ce603
    • Iustin Pop's avatar
      A few fixes related to master candidates · 3a26773f
      Iustin Pop authored
      This patch:
        - fixes cluster verify when all nodes are master candidates, but the
          candidate_pool_size is higher
        - warn when the master node is not marked as candidate
        - disable setting master node to regular node
        - don't pass the master node to context.ReaddNode since the job queue
          doesn't like getting our own node name
      
      Reviewed-by: ultrotter
      3a26773f
    • Iustin Pop's avatar
      Fix cluster rename and known_hosts · ec85e3d5
      Iustin Pop authored
      This patch rewrites and distributes ganeti's known_hosts file in case of
      a cluster rename.
      
      We also fix a problem in the node add (from where I copied the
      known_hosts file distribution).
      
      Reviewed-by: ultrotter
      ec85e3d5
  4. 02 Dec, 2008 13 commits
    • Iustin Pop's avatar
      Fix gnt-cluster verify w.r.t. rpc changes · 25361b9a
      Iustin Pop authored
      This partially reorganizes the cluster verify LU:
        - introduce constants for the node verify rpc call
        - move from additional rpc calls to a single rpc call, the
          call_node_info, which gaters all data needed
      
      Also fix a small error (self.LogWarning instead of self.Warning).
      
      Reviewed-by: imsnah
      25361b9a
    • Iustin Pop's avatar
      Fix cluster rename · 55cf7d83
      Iustin Pop authored
      With the recent configwriter/ssconf changes, cluster rename becomes
      trivial. This patch gets rids of the code and just updates the cluster
      object.
      
      Reviewed-by: imsnah
      55cf7d83
    • Iustin Pop's avatar
      Convert rpc results to a custom type · 781de953
      Iustin Pop authored
      For a long time we had the problem that both RPC-layer errors and
      results from the remote node share the same "valuespace". This is
      because we shouldn't raise an exception when only one node failed
      (and lose the results from the other nodes).
      
      This patch attempts to address this problem by returning a special
      object from RPC calls, which separates the rpc-layer status and the
      remote results into different attributes.
      
      All the users of rpc (mainly cmdlib, but also bootstrap and the
      HooksMaster in mcpu) have been converted to this new model. The code has
      changed from, e.g. for boolean return types:
      
        if not self.rpc.call_...
      
      to
      
        result = self.rpc.call_
        if result.failed or not result.data:
           ^ rpc-layer error    |
                                - result payload
      
      While this is slightly more complicated, it will allow cleaner checks in
      the future; right now the code is just a plain port, without
      optimizations.
      
      There's also a "result.Raise()" which raises an OpExecError if the
      rpc-layer had errors.
      
      One side-effect of the patch is that now all return types from the
      rpc.call_ functions are of either RpcResult (single-node) or dicts of
      (node name, RpcResult); previously, some functions were returning
      different object types based on error status.
      
      The code passes burnin (after many retries :).
      
      Reviewed-by: imsnah
      781de953
    • Guido Trotter's avatar
      Use the new utils.CheckBEParams function · d4b72030
      Guido Trotter authored
      Where we used/forgot to validate beparams we now use the new common function.
      
      Reviewed-by: imsnah
      d4b72030
    • Guido Trotter's avatar
      Handle default/none values in hv/be params · 8edcd611
      Guido Trotter authored
      When a value is set to constants.VALUE_DEFAULT we have to remove it from
      the specific instance dict, as this way it will be populated from the
      cluster before. If instead it's specified as constants.VALUE_NONE we'll
      explicitely set it to None, to override its presence with a different
      values in such defaults. However, currently, we handle None values only
      for hvparams, that have a real use case for them.
      
      Reviewed-by: imsnah
      8edcd611
    • Guido Trotter's avatar
      ImportExport: make src_node and src_path optional · b9322a9f
      Guido Trotter authored
      If src_node is not there we'll default to using the currently exported
      instance name as src_path. Also, if src_path is not absolute we'll look
      for it in EXPORT_DIR.
      
      Reviewed-by: iustinp
      b9322a9f
    • Guido Trotter's avatar
      LUCreateInstance: handle import without src_node · c0cbdc67
      Guido Trotter authored
      If we get called with no source node we'll thread src_path as an
      instance name exported in EXPORT_DIR in one of the nodes and look for
      it with the export_list rpc call.
      
      Reviewed-by: iustinp
      c0cbdc67
    • Guido Trotter's avatar
      LUCreateInstance: keep src node lock on import · 9c8971d7
      Guido Trotter authored
      Currently the node lock also guards against removing the import at the
      wrong time, so if we're importing an instance image we want to keep the
      source node locked. In the future we might want to put export locks at a
      different level than node locks.
      
      Reviewed-by: iustinp
      9c8971d7
    • Iustin Pop's avatar
      Adjust cluster-verify to check for candidate role · 112f18a5
      Iustin Pop authored
      Currently cluster verify checks all nodes for the same set of files,
      even if the nodes are not master candidates.
      
      This patch adds back checking of ssconf files for consistency and splits
      the checksum check into different error reporting messages based on
      candidate role.
      
      Reviewed-by: imsnah
      112f18a5
    • Iustin Pop's avatar
      Prevent demotion from candidate based on pool size · 3e83dd48
      Iustin Pop authored
      In gnt-cluster modify we prevent demotion from the candidate role if
      there are not enough master candidates left.
      
      Reviewed-by: imsnah
      3e83dd48
    • Iustin Pop's avatar
      Add cluster candidate pool size parameter · 4b7735f9
      Iustin Pop authored
      This patch adds a new cluster paramater "candidate_pool_size" which
      tracks the desired size of the list of nodes with the master_candidate
      flag set.
      
      Reviewed-by: imsnah
      4b7735f9
    • Iustin Pop's avatar
      Add a gnt-node modify operation · b31c8676
      Iustin Pop authored
      This patch adds the OpCode, LogicalUnit and gnt-node command for
      modifying node parameters, more specifically the master candidate flag
      for a node.
      
      Reviewed-by: imsnah
      b31c8676
    • Iustin Pop's avatar
      Add master/master_candidate fields to node list · 0e67cdbe
      Iustin Pop authored
      This patch adds listing of the master_candidate field (as Y/N) and of
      the master role (again Y/N) for nodes.
      
      Reviewed-by: imsnah
      0e67cdbe
  5. 01 Dec, 2008 1 commit
    • Iustin Pop's avatar
      Fix errors when the node info RPC is incomplete · d599d686
      Iustin Pop authored
      [Forward-port from the 1.2 branch]
      
      If ganeti starts before xend, the node information will not have all the
      fields filled in. The patch changes so that missing keys will be treated
      as unknown (this applies to other cases as well, not only xend not
      started).
      
      Reviewed-by: ultrotter
      d599d686
  6. 27 Nov, 2008 3 commits
    • Iustin Pop's avatar
      Fix gnt-backup export · 726d7d68
      Iustin Pop authored
      This patch fixes a bug in disk calculation for gnt-backup export, which
      completely broke one-disk instance export.
      
      The patch also corrects some error messages and style issues.
      
      Reviewed-by: ultrotter
      726d7d68
    • Iustin Pop's avatar
      Fix a message in LUExportInstance · 268b8e42
      Iustin Pop authored
      We never verified the node name before, so this is most likely not a
      non-retrieve but a wrong name case.
      
      Reviewed-by: ultrotter
      268b8e42
    • 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
      112050d9
  7. 25 Nov, 2008 5 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
      24991749
    • Iustin Pop's avatar
      Slight change to the LU initialization code · 4be4691d
      Iustin Pop authored
      This patch adds support for a separate LU.CheckArguments() method which
      should do syntactic checks without holding locks and without polluting
      the ExpandNames which is a lock-related function. See for example the
      FIXME in LUSetInstanceParams.CheckPrereq.
      
      The patch also removes the REQ_MASTER and IsCluster checks since with
      the current architecture, inside LU code we are always in a valid
      cluster and we are always running on the master node.
      
      Reviewed-by: ultrotter
      4be4691d
    • Iustin Pop's avatar
      Fix a bug in LUSetInstanceParams · b637ae4d
      Iustin Pop authored
      The wrong names were reused in a copy-paste.
      
      Reviewed-by: imsnah
      b637ae4d
    • 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
      b6fdf8b8
    • Iustin Pop's avatar
      Change _GenerateDiskTemplate iv_name generation · e2a65344
      Iustin Pop authored
      Currently the _GenerateDiskTemplate assumes it does initial creation of
      disks (i.e. it starts with index 0).
      
      For dynamic disk adds, we need to pass an additional offset. This patch
      adds this offset and modifies its sole current caller.
      
      Reviewed-by: imsnah
      e2a65344
  8. 24 Nov, 2008 7 commits
    • Guido Trotter's avatar
      LUCreateInstance: Fix import mac AUTO mode · b4364a6b
      Guido Trotter authored
      Previously on import LUCreateInstance used to recycle the mac if the instance
      name was the same than the one used at export time. Now we do the same, but
      apply the setting separately for each nic.
      
      Reviewed-by: iustinp
      b4364a6b
    • Guido Trotter's avatar
      LUCreateInstance unlock all nodes mid-way · e36e96b4
      Guido Trotter authored
      When creating a new instance, after saving the instance data to the config file
      and creating the disks, but before waiting for sync and installing the OS, we
      release the node locks, to allow for more instance creations to proceed in
      parallel.
      
      Reviewed-by: iustinp
      e36e96b4
    • Guido Trotter's avatar
      IAllocator: subtract down instances from free mem · 18640d69
      Guido Trotter authored
      Currently free_memory just reports the amount of free ram, as seen by the
      hypervisor. We adjust this amount by subtracting the memory for any instance
      which is down, and the difference for any instance which is configured to have
      more memory than the amount it's currently running at.
      
      Reviewed-by: iustinp
      18640d69
    • Guido Trotter's avatar
      IAllocator: use the right hypervisor · 8cc7e742
      Guido Trotter authored
      Since the hypervisor is instance dependent we'll get one on instance creation,
      and use the one in the instance config on relocation.
      
      Reviewed-by: iustinp
      8cc7e742
    • Guido Trotter's avatar
      IAllocator: fill i_list in a more proper way · b57e9819
      Guido Trotter authored
      - reuse the previously called cluster_info, rather than calling it again
      - get all the instances from the config atomically, to prevent race conditions
      - use a list comprehension, for simplicity
      
      Reviewed-by: iustinp
      b57e9819
    • Guido Trotter's avatar
      Parallelize instance operations on the same node · 90a7547a
      Guido Trotter authored
      With static minors we don't have a race condition anymore when
      starting/stopping/rebooting/reinstalling more than one instance on the same
      node, so we'll drop node locking altogether.
      
      Reviewed-by: iustinp
      90a7547a
    • Guido Trotter's avatar
      Convert iallocator to the new _ComputeDiskSize · dafc7302
      Guido Trotter authored
      _ComputeDiskSize's API was changed for multidisk support in r2010, but
      iallocator's call to it were not fixed. Converting them now.
      
      Reviewed-by: iustinp
      dafc7302
  9. 23 Nov, 2008 1 commit