On Mon, Aug 24, 2009 at 05:54:00PM +0100, Luca Bigliardi wrote:
> 
> Run post phase of node-remove on the removed node as well.
> 
> Signed-off-by: Luca Bigliardi <[email protected]>
> ---
>  doc/hooks.rst |    2 +-
>  lib/cmdlib.py |    7 ++++++-
>  lib/mcpu.py   |    1 +
>  3 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/doc/hooks.rst b/doc/hooks.rst
> index ecd6c9e..bb66158 100644
> --- a/doc/hooks.rst
> +++ b/doc/hooks.rst
> @@ -133,7 +133,7 @@ Removes a node from the cluster.
>  :directory: node-remove
>  :env. vars: NODE_NAME
>  :pre-execution: all existing nodes except the removed node
> -:post-execution: all existing nodes except the removed node
> +:post-execution: all existing nodes

Please modify this to explain that the removed node is getting a
'special treatment' :)

>  OP_NODE_SET_PARAMS
>  ++++++++++++++++++
> diff --git a/lib/cmdlib.py b/lib/cmdlib.py
> index 02a5128..82bf23b 100644
> --- a/lib/cmdlib.py
> +++ b/lib/cmdlib.py
> @@ -2155,7 +2155,8 @@ class LURemoveNode(LogicalUnit):
>        "NODE_NAME": self.op.node_name,
>        }
>      all_nodes = self.cfg.GetNodeList()
> -    all_nodes.remove(self.op.node_name)
> +    if self.op.node_name in all_nodes:
> +      all_nodes.remove(self.op.node_name)
>      return env, all_nodes, all_nodes
>  
>    def CheckPrereq(self):
> @@ -2198,6 +2199,10 @@ class LURemoveNode(LogicalUnit):
>  
>      self.context.RemoveNode(node.name)
>  
> +    # Run hooks on the node before it's removed
> +    hm = self.proc.hmclass(self.rpc.call_hooks_runner, self)
> +    hm.RunPhase(constants.HOOKS_PHASE_POST, [node.name])

This can raise errors here, which would abort the operation. Since this
is a 'post' hook, I think we should just log, not abort the actual
removal.

What do you think?

iustin

Reply via email to