3.1.4.3.1.43 CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE

The CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE resource control code controls when the designated resource enters or leaves maintenance mode. The designated resource SHOULD enter or leave maintenance mode, as specified in section 3.1.1.1.1.2.<168>

ClusAPI Protocol version 2.0 servers SHOULD<169> support this control. ClusAPI Protocol version 3.0 servers MUST support this control.

The server MUST fail this method by using error ERROR_INVALID_FUNCTION (0x00000001) if maintenance mode is set for any nonstorage class resource type.

For ClusAPI Protocol version 2.0, the client MUST provide either a CLUS_MAINTENANCE_MODE_INFO structure, as specified in section 2.2.3.14, or a CLUS_MAINTENANCE_MODE_INFO_EX, as specified in section 2.2.3.15, in the buffer that is designated by lpInBuffer.

If the CLUS_MAINTENANCE_MODE_INFO_EX structure is used, the client MUST place the resource in extended maintenance mode by using type MaintenanceModeTypeDisableIsAliveCheck before the resource can be set to extended maintenance mode type MaintenanceModeTypeOfflineResource. Similarly, if the extended maintenance mode type is currently set to MaintenanceModeTypeOfflineResource, the client MUST set the resource to extended maintenance mode type MaintenanceModeTypeDisableIsAliveCheck before removing the resource from maintenance mode. The client SHOULD NOT remove the resource from maintenance mode using simple mode if the resource was originally placed in maintenance mode using extended mode.

For ClusAPI Protocol version 2.0, when a resource is moved to a new hosting node in the cluster, a server MUST set the resource's maintenance mode state so that the resource is not in maintenance mode.

For ClusAPI Protocol version 3.0, the client MUST provide a CLUS_MAINTENANCE_MODE_INFO structure, as specified in section 2.2.3.14, or a CLUS_MAINTENANCE_MODE_INFO_EX, as specified in section 2.2.3.15, in the buffer that is designated by lpInBuffer.

If the CLUS_MAINTENANCE_MODE_INFO_EX structure is used, the client SHOULD place the resource in extended maintenance mode by using type MaintenanceModeTypeUnclusterResource but MAY use the other types for backward compatibility with protocol version 2.0.

For ClusAPI Protocol version 3.0, a resource MUST store its maintenance mode state as part of the nonvolatile cluster state. Upon restart of the cluster, a resource MUST remain in its maintenance mode state until removed by either administrative action or notification from another server component.

After successful completion of the method, the server SHOULD NOT write any data to the buffer that is designated by lpOutBuffer.

The server MUST accept a CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE resource control code request if its protocol server state is in the read/write state, as specified in section 3.1.1.