1. 27 Jun, 2008 4 commits
    • Guido Trotter's avatar
      LUAddNode: use node-verify to check node hostname · 5c0527ed
      Guido Trotter authored
      As we can't use ssh.VerifyNodeHostname directly, we'll set up a mini
      node-verify to do checking between the master and the new node. In the
      future networking checks, or more nodes, can be added as well.
      
      Reviewed-by: iustinp
      5c0527ed
    • Guido Trotter's avatar
      LUAddNode: use self.sstore, not a local ss · 3d1e7706
      Guido Trotter authored
      Since we're inside a LU we have access to self.sstore.
      No need to use ss, which separate instantiation will disappear in a few
      patches! ;)
      
      Reviewed-by: iustinp
      3d1e7706
    • Guido Trotter's avatar
      LUAddNode: upload files via rpc, not scp · b5602d15
      Guido Trotter authored
      We used to scp all the ssconf files, and the vnc password file to the
      new node. With this patch we use the upload_file rpc, specifying just
      the new node as a destination. All the files previously copied by scp
      are already allowed by the backend.
      
      Reviewed-by: iustinp
      b5602d15
    • Guido Trotter's avatar
      Change fping to TcpPing in two LUs · 937f983d
      Guido Trotter authored
      Two LUs are using RunCmd to call fping, in order to check for an IP
      presence on the network. Substituting it with TcpPing will get rid of
      it, which makes it not break in the new world order, where the master
      cannot fork.
      
      Reviewed-by: iustinp
      937f983d
  2. 26 Jun, 2008 3 commits
    • Guido Trotter's avatar
      When removing a node don't ssh to it · d489ca4f
      Guido Trotter authored
      Even in 1.2 this behaviour is broken, as the rpc call will remove the
      ssh keys before we get a chance to log in. Now the rpc takes care of
      shutting down the node daemon as well, so we definitely can avoid this.
      
      This makes the LURemoveNode operation work again with the threaded
      master daemon.
      
      Reviewed-by: iustinp
      d489ca4f
    • Guido Trotter's avatar
      Remove spurious check during LUAddNode · 49abbd3e
      Guido Trotter authored
      There is no point in checking whether the cluster VNC password file
      exists as a prerequisite for AddNode, considering the check happens on
      the master node, not the target one. Removing this check.
      
      Reviewed-by: iustinp
      49abbd3e
    • Guido Trotter's avatar
      Improve LURemoveNode BuildHooksEnv docstring · d08869ee
      Guido Trotter authored
      Reviewed-by: iustinp
      d08869ee
  3. 25 Jun, 2008 1 commit
    • Michael Hanselmann's avatar
      Cleanup old DRBD 0.7.x code · 00fb8246
      Michael Hanselmann authored
      Apparently there were still some leftovers. While removing an instance,
      I got the message "unhandled exception 'module' object has no attribute
      'LD_MD_R1'".
      
      Reviewed-by: iustinp
      00fb8246
  4. 23 Jun, 2008 1 commit
    • Iustin Pop's avatar
      Fix gnt-cluster “command” and “copyfile” · b3989551
      Iustin Pop authored
      Since the disabling of forking in the master daemon, the two ssh-based
      subcommands were not working anymore. However, there is no need at all
      for the commands to be run from the master daemon (permissions to read
      the cluster private ssh key notwithstanding), they can be run directly
      from the command line utilities.
      
      The patch removes the two opcodes OpRunClusterCommand and
      OpClusterCopyFile (and their associated LUs) and changes the code in
      ‘gnt-cluster’ to query the list of nodes and run directly the SshRunner
      over the list. As such, all forking is done from the gnt-cluster script,
      and the commands are working again.
      
      Reviewed-by: imsnah
      b3989551
  5. 22 Jun, 2008 1 commit
    • Iustin Pop's avatar
      Add a ‘tags’ field to instance and node listing · 130a6a6f
      Iustin Pop authored
      Currently there isn't any easy way to list all nodes or instance and
      their tags; you have to query each node in turn, or list all the tags
      via something like “gnt-cluster search-tags '.*'”. Of course, this is
      not optimal.
      
      The patch adds a new fields to “gnt-instance list” and “gnt-node list”
      called ‘tags’, that will list the tags of the object in comma-separated
      form. This field will be empty if there are no tags (when using a
      separator this output can still be parsed by other scripts).
      
      At opcode level, there is a new fields called ‘tags’ that returns a
      (python) list of the object tags.
      
      Reviewed-by: ultrotter
      130a6a6f
  6. 17 Jun, 2008 2 commits
    • Iustin Pop's avatar
      Fix an error-handling case · c7cdfc90
      Iustin Pop authored
      There is a mistake in handling grow-disk for an invalid disk. This patch
      fixes it.
      
      Reviewed-by: imsnah
      c7cdfc90
    • Iustin Pop's avatar
      Implement disk grow at LU level · 8729e0d7
      Iustin Pop authored
      This patch adds a new opcode and LU for growing an instance's disk.
      
      The opcode allows growing only one disk at time, and will throw an error
      if the operation fails midway (e.g. on the primary node after it has
      been increased on the secondary node). As such, it might actually leave
      different sized LVs on different nodes, but this will not create
      problems.
      
      Reviewed-by: imsnah
      8729e0d7
  7. 16 Jun, 2008 1 commit
    • Guido Trotter's avatar
      Move SetKey to WritableSimpleStore and use it · 05f86716
      Guido Trotter authored
      Before we used to be able to update SimpleStore by just calling SetKey, this
      feature is now moved to an external class, which inherits from it. In this
      patch the new WritableSimpleStore class is also put to use, in the LUs that
      need it. Rather than making each LU instantiate it, we have a new LogicalUnit
      flag REQ_WSSTORE which defaults to False, but when declared to be True asks the
      LogicalUnit to be initialized with a writeable version of the SimpleStore.
      LUMasterFailover and LURenameCluster are then changed to use it.
      
      InitCluster is also changed to instantiate a WritableSimpleStore, rather
      than a normal one.
      
      Reviewed-by: imsnah
      05f86716
  8. 15 Jun, 2008 3 commits
    • Guido Trotter's avatar
      Activate down instances' disks on replace-disks · 22985314
      Guido Trotter authored
      When replacing disks or evacuating nodes with instances administratively
      down ganeti fails because the instance disks are not active. This patch
      activates them, performs the replacement, and shuts them down again.
      Changing this also fixes the same issue on gnt-node evacuate.
      
      Reviewed-by: iustinp
      
      22985314
    • Guido Trotter's avatar
      FailoverInstance: change AddInstance with Update · b6102dab
      Guido Trotter authored
      We're not adding a new instance, just making configuration changes to
      the one we're working on.
      
      Reviewed-by: imsnah
      
      b6102dab
    • Iustin Pop's avatar
      Fix an error message in instance add · 3e91897b
      Iustin Pop authored
      There is a mistake in the error message generated when we can't reach a
      node for checking for available disk space. Without it, the error
      message is:
      Failure: prerequisites not met for this operation:
      Cannot get current information from node '{u'gnte2.lab.k1024.org':
      {'cpu_total': 1, 'memory_free': 480, 'vg_size': 131068, 'memory_total':
      504, 'bootid': '2176dd3b-2f96-42f0-8b6e-2873ecaf5f9c', 'memory_dom0':
      134, 'vg_free': 130172}, u'gnte1.lab.k1024.org': False}'
      
      instead of the expected:
      Failure: prerequisites not met for this operation:
      Cannot get current information from node 'gnte2.lab.k1024.org'
      
      Reviewed-by: imsnah
      3e91897b
  9. 12 Jun, 2008 4 commits
  10. 31 May, 2008 5 commits
    • Iustin Pop's avatar
      Add check for node memory in instance creation · 49ce1563
      Iustin Pop authored
      Currently the check for enough memory is done only on instance start
      command and failover command. But we also start an instance in instance
      create, therefore we need to check this instead of failing to start in
      the hypervisor phase.
      
      The patch adds a check for node memory in the case the creation command
      specifies that the instance should be started. It is allowed for the
      memory to be less than needed if the instance will not be started, in
      order to allow migration and other such cases.
      
      Reviewed-by: imsnah
      49ce1563
    • Iustin Pop's avatar
      Show cluster hypervisor for gnt-cluster info · 8a12ce45
      Iustin Pop authored
      Author: schreiberal
      Reviewed-by: iustinp
      8a12ce45
    • Iustin Pop's avatar
      Forward-port: make gnt-modify work with new HVM parameters · ec1ba002
      Iustin Pop authored
      This fixes gnt-instance modify so it actually works with the
      new HVM parameters for Ganeti 1.2
      
      Author: schreiberal
      Reviewed-by: iustinp
      ec1ba002
    • Iustin Pop's avatar
      Forward-port: show only parameters relevant to the instance · a8340917
      Iustin Pop authored
      This patch modifies the code for "gnt-instance info .." to only display
      instance parameters that actually apply to that instance, i.e. for PVM
      instances no HVM parameters are shown and vice versa.
      
      Author: schreiberal
      Reviewed-by: iustinp
      a8340917
    • Iustin Pop's avatar
      Forward-port: patch 2/4 extended HVM features for 1.2 · 31a853d2
      Iustin Pop authored
      This patch adds the commandline extensions and the code to store
      and display the extended HVM features.
      
      Author: schreiberal
      Reviewed-by: iustinp
      31a853d2
  11. 30 May, 2008 2 commits
    • Iustin Pop's avatar
      Complete removal of md/drbd 0.7 code · abdf0113
      Iustin Pop authored
      This patch removes the last of the md and drbd 0.7 code. Cluster which
      have the old device types will be broken if they have this applied.
      
      Reviewed-by: imsnah
      abdf0113
    • Iustin Pop's avatar
      LURemoveInstance: fix op.ignore_failures usage · 5c54b832
      Iustin Pop authored
      Currently: the LURemoveInstance.Exec() method uses the ignore_failures
      attribute of the OpRemoveInstance opcode, but it doesn't check for its
      existence. The patch adds this attribute to _OP_REQP and to all the
      places where this opcode was created.
      
      This attributes is always passed by gnt-instance, but burnin didn't pass
      it so it can fail if it enters the 'fail to remove disks' branch of the
      method (which is why it was not triggered until now).
      
      Reviewed-by: ultrotter, imsnah
      5c54b832
  12. 13 May, 2008 2 commits
    • Iustin Pop's avatar
      Implement node daemon conectivity tests · 9d4bfc96
      Iustin Pop authored
      This patch adds in gnt-cluster verify checks for inter-node tcp
      communication checks on the node daemon port for both the primary and
      (if defined) secondary networks.
      
      The output looks like (4-node cluster, one with the secondary interface
      down):
      * Verifying node node1.example.com
        - ERROR: tcp communication with node 'node3.example.com': failure using the secondary interface(s)
      * Verifying node node2.example.com
        - ERROR: tcp communication with node 'node3.example.com': failure using the secondary interface(s)
      * Verifying node node3.example.com
        - ERROR: tcp communication with node 'node1.example.com': failure using the secondary interface(s)
        - ERROR: tcp communication with node 'node2.example.com': failure using the secondary interface(s)
        - ERROR: tcp communication with node 'node4.example.com': failure using the secondary interface(s)
      * Verifying node node4.example.com
        - ERROR: tcp communication with node 'node3.example.com': failure using the secondary interface(s)
      
      Reviewed-by: imsnah
      9d4bfc96
    • Michael Hanselmann's avatar
      Forward-port changes made to readd in 1.2 · 102b115b
      Michael Hanselmann authored
      qa_node.py: Fix typo in message
      cmdlib.py: Don't add readded node to node list
      ganeti-qa.py: Make sure readd isn't done for master node
      
      Reviewed-by: iustinp
      102b115b
  13. 07 May, 2008 1 commit
  14. 05 May, 2008 2 commits
  15. 30 Apr, 2008 4 commits
    • Guido Trotter's avatar
      Add cluster-verify hooks · d8fff41c
      Guido Trotter authored
      Only post-hooks are run on cluster verify, and then their output is sent back
      to the LU, which upon failure displays it to the user and changes the result of
      the execution to a failure.
      
      Reviewed-by: iustinp
      
      d8fff41c
    • Guido Trotter's avatar
      Add a LU Hooks notification function · 1fce5219
      Guido Trotter authored
      Previously LUs could be failed by pre-hooks, and post-hooks just had effects by
      themselves. This patch allows a LU to define the HooksCallBack function if it
      wants to know about its hooks' results and alter its results in response.
      
      The ChainOpCode execution path contains some commented out hooks code, which
      this patch modifies to run the HooksCallBack function, so this is not forgot if
      it ever gets uncommented out.
      
      Reviewed-by: iustinp
      
      1fce5219
    • Guido Trotter's avatar
      Remove NoHooksLU.BuildHooksEnv · 10cd4a29
      Guido Trotter authored
      Since NoHooksLU defines HPATH as None, BuildHooksEnv will never be called (as
      the LogicalUnit.BuildHooksEnv docstring correctly states). Removing the
      function altogether, to avoid having dead code lying around, and to make sure
      the non-implemented one in LogicalUnit will be called if someone mistakenly
      tries to call it, so it's immediately clear that something is wrong.
      
      Reviewed-by: iustinp
      
      10cd4a29
    • Guido Trotter's avatar
      LogicalUnit.BuildHooksEnv, update docstring · 8a3fe350
      Guido Trotter authored
      The LogicalUnit.BuildHooksEnv docstring used to say that the node list should
      not include the master node. This is obviously not the case checking the
      relevant code, and double-checking with iustin he confirmed it just document
      some obsolete behaviour. This patch removes those remarks making the docstring
      shorter, easier, and, last but not least, correct! ;)
      
      Reviewed-by: iustinp
      
      8a3fe350
  16. 28 Apr, 2008 4 commits
    • Manuel Franceschini's avatar
      Raise PrereqError when exporting file-based instance · b6023d6c
      Manuel Franceschini authored
      This patch adds a check to LUExportInstance.CheckPrereq to raise an
      error when an instance with file disks is exported.
      
      Reviewed-by: ultrotter
      b6023d6c
    • Iustin Pop's avatar
      Convert cli.SubmitOpCode to use the master · 685ee993
      Iustin Pop authored
      This patch converts the cli.py SubmitOpCode method to use the unix
      protocol and thus execute the opcodes via the master.
      
      The patch allows a partial burnin to work with the master. Currently the
      query opcodes, since they are executed via the SubmitOpCode, are
      executed inside a job too, which is suboptimal, but they work fine.
      
      The cmd lock has been removed from the master, but the cli.py still
      takes the lock. This is ok for this in-progress patch (since the master
      still has only one executor thread). This will be fixed in a future
      patch.
      
      Reviewed-by: ultrotter
      685ee993
    • Iustin Pop's avatar
      Move iallocator script execution to ganeti-noded · 8d528b7c
      Iustin Pop authored
      Currently the iallocator execution takes place in the master, which is a
      violation of the current architecture, and will create problems with a
      threaded master daemon.
      
      This patch moves the execution to the backend, similar to the hooks
      runner, by:
        - introducing a new class that handles the execution in the backend
          (and could be used also for listing the allocators, etc.)
        - introducing a new rpc call
        - replacing the actual execution in IAllocator.Run() with a rpc call
      
      This passes burnin with the dumb allocator
      
      Reviewed-by: imsnah
      8d528b7c
    • 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
      768f0a80