3.1.1.1.1 Resources
A cluster resource is any physical or logical component that can be hosted by a cluster and can be owned by only one node at a time. The cluster state includes at least a list of all cluster resources. This list includes the following for each cluster resource: the configuration, the current owner, and the current state. The configuration of a resource consists of the information that is needed to host that resource in a cluster.
A protocol client can perform the following management operations on a cluster resource (see section 4.1 for an example):
Create: Create a new instance of a specific type of resource. For more information, refer to 3.1.4.1.10 (protocol version 2) or 3.1.4.2.10 (protocol version 3).
Delete: Delete a resource from the nonvolatile cluster state. For more information, refer to 3.1.4.1.11 (protocol version 2) or 3.1.4.2.11 (protocol version 3).
Online: Bringing a resource online consists of starting the resource or making the resource active or available on a cluster node. For more information, refer to 3.1.4.1.18 (protocol version 2) or 3.1.4.2.18 (protocol version 3).
Offline: Bringing a resource offline consists of stopping the resource or making the resource inactive or unavailable on all cluster nodes. For more information, refer to 3.1.4.1.19 (protocol version 2) or 3.1.4.2.19 (protocol version 3).
Fail: Force the resource to fail its health check. For more information, refer to 3.1.4.1.17 (protocol version 2) or 3.1.4.2.17 (protocol version 3).
Get state: Query the state of the resource. For more information, refer to 3.1.4.1.13 (protocol version 2) or 3.1.4.2.13 (protocol version 3).
Query configuration: Querying the configuration data for a resource. For more information, see sections 3.1.4.1.8, 3.1.4.1.15, 3.1.4.1.16, 3.1.4.1.22, and 3.1.4.1.23 (protocol version 2), and sections 3.1.4.2.8, 3.1.4.2.15, 3.1.4.2.16, 3.1.4.2.22, and 3.1.4.2.23 (protocol version 3).
Set configuration: Change the configuration data for a resource. For more information, see sections 3.1.4.1.14, 3.1.4.1.20, 3.1.4.1.21, 3.1.4.1.24, 3.1.4.1.25, 3.1.4.1.26, and 3.1.4.1.74 (protocol version 2), and sections 3.1.4.2.14, 3.1.4.2.20, 3.1.4.2.21, 3.1.4.2.24, 3.1.4.2.25, 3.1.4.2.26, and 3.1.4.2.74 (protocol version 3).
A resource is uniquely identified in a cluster by separate Unicode strings that contain the name and ID of the resource. Both the resource name and resource ID are case-insensitive and contain any Unicode character in any position except as follows: the string is null-terminated, the string contains no Unicode null character other than for termination, and the string contains at least one character that is not Unicode 0x20, 0x09, 0x0d, 0x0a, or null. In addition to these exceptions, the resource ID string does not include the backslash ('\') character. The size of resource name and ID strings are not limited by this protocol. The resource name can be changed (so long as it remains unique). The resource ID is assigned by the cluster at resource creation and remains constant until the resource is deleted. A resource cannot have a name that is the same as the ID of a different resource.
Each resource has an associated persistent state, which itself has a value of either online or offline. The persistent state of a resource is stored in a nonvolatile cluster state. The persistent state of a resource indicates whether the resource was most recently commanded to transition online or offline by a protocol client. A client can query the current state of a resource. The server will maintain the current state of a resource. The current state of a resource is one of the values that is specified in section 3.1.4.1.13 (protocol version 2) or 3.1.4.2.13 (protocol version 3) when a client successfully queries for the state.
A resource maintains a set of configured nodes that restrict where the resource is hosted. The possible node hosts are stored in a nonvolatile cluster state.
A resource can be designated as a core resource. A core resource is critical to the operation of the cluster and cannot be deleted from the non-volatile cluster state. How a server determines which resources are core resources is implementation-specific, except as specified in section 3.1.4.1.7 (protocol version 2) or section 3.1.4.2.7 (protocol version 3).
A resource is associated with a set of characteristics that are defined by its resource type. For example, a characteristic can be used to determine whether it is appropriate to create more than one instance of a resource type in a group or within the cluster.
The nonvolatile cluster state associated with a resource includes a set of flags; these flags can be set by a client individually for each resource and the server returns them when queried by a client. The flags, as defined in section 2.2.2.5, are interpreted by the server as appropriate for the individual flag value. Any other flag values are not interpreted by the server or associated with any semantics.
A resource maintains a state sequence number that represents whether a change in the resource's configuration or state has occurred.
A resource can be placed in locked mode. This is maintained in the volatile cluster state.