3.2.4.1.2 Determining Cluster Node Configuration and State

This section describes the sequence of methods that a client SHOULD follow in order to determine whether a computer is configured as a cluster node, and if so, whether it is currently an Active Node.

A client that implements version 2.0 of the protocol SHOULD<223> perform the following procedure:

  1. The client SHOULD query the cluster installation status of the server from the registry, as specified in section 3.1.3.1. If the registry query fails, the client SHOULD deduce that the server is not configured as a cluster node.

  2. The client SHOULD<224> query whether the cluster software of the server is running, as specified in section 3.1.3.2.

  3. If the cluster software of the server is not running, as determined in the previous step, the client SHOULD<225> attempt an RPC connection to the server, as specified in section 3.2.3. The client SHOULD interpret a failure to establish an RPC connection to mean that the server is not an active node in the cluster.

  4. The client SHOULD query the cluster node state, as specified in section 3.2.4.1.1. The client SHOULD interpret the failure of this call to mean that the server is not an active node in the cluster.

A client that implements version 3.0 of the protocol SHOULD perform the following procedure:

  1.  Query whether the server's cluster software is running, as specified in section 3.1.3.2.

  2. If the server's cluster software is running, as specified in section 3.1.3.2, the client SHOULD establish an RPC connection to the server, as specified in section 3.2.3. The client SHOULD interpret a failure to establish an RPC connection to mean that the server is not an active node in the cluster.

  3. The client SHOULD enumerate the nodes of the cluster, as specified in the ApiCreateEnum (section 3.1.4.1.8 for protocol version 2, or 3.1.4.2.8 for protocol version 3) method. The client SHOULD interpret the failure of this method to mean that the server is not an active node in the cluster.

  4. For each node in the enumeration, the client SHOULD query the cluster node state, as specified in section 3.2.4.1.1. If at least one node is found to have state ClusterNodeUp or ClusterNodePaused, as specified in the ApiGetNodeState (section 3.1.4.1.69 for protocol version 2, or 3.1.4.2.69 for protocol version 3) method, the client SHOULD conclude that the target computer is an active node in the cluster. The client MAY stop querying the state of the remaining nodes in the enumeration. If no node is found to have state ClusterNodeUp or ClusterNodePaused, as specified in section 3.2.4.1.1, the client SHOULD conclude that the target computer is a configured node in the cluster, although not an active node. If a cluster node state query, as specified in section 3.2.4.1.1, fails, the client SHOULD conclude that the target computer is not a node in the cluster.