• Iustin Pop's avatar
    Fix node readd issues · a8ae3eb5
    Iustin Pop authored
    
    
    This patch fixes a few node readd issues.
    
    Currently, the node readd consists of two opcodes:
      - OpSetNodeParms, which resets the offline/drained flags
      - OpAddNode (with readd=True), which reconfigures the node
    
    The problem is that between these two, the configuration is inconsistent
    for certain cluster configurations. Thus, this patch removes the first
    opcode and modified the LUAddNode to deal with this case too.
    
    The patch also modifies the computation of the intended master_candidate
    status, and actually sets the readded node to master candidate if
    needed. Previously, we didn't modify the existing node at all.
    
    Finally, the patch modifies the bottom of the Exec() function for this
    LU to:
      - trigger a node update, which in turn redistributes the ssconf files
        to all nodes (and thus the new node too)
      - if the new node is not a master candidate, then call the
        node_demote_from_mc RPC so that old master files are cleared
    
    My testing shows this behaves correctly for various cases.
    Signed-off-by: default avatarIustin Pop <iustin@google.com>
    Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
    a8ae3eb5
cmdlib.py 247 KB