<pcs-capabilities>
  <capability-list>
    <!--
      "optionally" means a user or client may but is not required to specify
      given parameters. The provider of a feature/capability is required to
      implement means for specifying and processing these parameters.
    -->

    <capability id="booth" in-pcs="1" in-pcsd="0">
      <description>
        Supports booth cluster ticket manager:
        * create and delete a booth config file and keyfile
        * configure booth tickets in the config file
        * grant and revoke booth tickets
        * manage booth service for running booth on a single host: start, stop,
          enable, disable
        * manage booth resource for running booth as a cluster resource:
          create, delete, restart
        * pull a config from a host, sync a config to the local cluster
        * show booth status
        All changes are done on the local host only and have to be manually
        pushed (synchronized) to all cluster nodes and other arbitrators /
        sites (unles a feature which does this atomatically is implemented and
        added to this list).

        pcs commands: booth
      </description>
    </capability>
    <capability id="booth.set-config" in-pcs="0" in-pcsd="1">
      <description>
        Save a booth config and key file to the local host.

        daemon urls: booth_set_config
      </description>
    </capability>
    <capability id="booth.set-config.multiple" in-pcs="0" in-pcsd="1">
      <description>
        Save more booth configs and keys to the local host.

        daemon urls: booth_save_files
      </description>
    </capability>
    <capability id="booth.get-config" in-pcs="0" in-pcsd="1">
      <description>
        Provide the local booth config and key file.

        daemon urls: booth_get_config
      </description>
    </capability>



    <capability id="cluster.config.backup-local" in-pcs="1" in-pcsd="0">
      <description>
        Create a tarball containing cluster configuration files (corosync,
        pacemaker, pcsd) from the local host.

        pcs commands: config backup
      </description>
    </capability>
    <capability id="cluster.config.restore-cluster" in-pcs="1" in-pcsd="0">
      <description>
        Restore the cluster configuration on all cluster nodes from a tarball
        created by pcs backup. List of cluster nodes is extracted from the
        tarball.

        pcs commands: config restore
      </description>
    </capability>
    <capability id="cluster.config.restore-local" in-pcs="1" in-pcsd="1">
      <description>
        Restore the cluster configuration on the local host from a tarball
        created by pcs backup.

        pcs commands: config restore --local
        daemon urls: config_restore
      </description>
    </capability>



    <capability id="cluster.config.export.to-pcs-commands" in-pcs="0" in-pcsd="0">
      <description>
        Creates a list of pcs commands which upon execution recreates
        the current cluster running on the local host.

        pcs commands: config export pcs-commands[-verbose]
      </description>
    </capability>
    <capability id="cluster.config.import-cman" in-pcs="0" in-pcsd="0">
      <description>
        Converts CMAN cluster configuration files to a Corosync/Pacemaker
        cluster config files or pcs commands.

        pcs commands: config import-cman
      </description>
    </capability>



    <capability id="cluster.create" in-pcs="1" in-pcsd="1">
      <description>
        Set up a new cluster.

        pcs commands: cluster setup
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.separated-name-and-address" in-pcs="1" in-pcsd="1">
      <description>
        It is possible to specify a node's address different from its name.
        Corosync will communicate with the node via the specified address(es).

        pcs commands: cluster setup
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.transport.knet" in-pcs="1" in-pcsd="1">
      <description>
        Knet transport is supported including encryption and compression.

        pcs commands: cluster setup
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.transport.udp-udpu" in-pcs="1" in-pcsd="1">
      <description>
        Udp and udpu transports are supported.

        pcs commands: cluster setup
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.transport.udp-udpu.no-rrp" in-pcs="1" in-pcsd="1">
      <description>
        Redundant ring protocol (rrp) is not supported.

        pcs commands: cluster setup
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.enable" in-pcs="1" in-pcsd="1">
      <description>
        Enable cluster services on cluster nodes during cluster setup.

        pcs commands: cluster setup --enable
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.start" in-pcs="1" in-pcsd="1">
      <description>
        Start cluster services on cluster nodes during cluster setup.

        pcs commands: cluster setup --start
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.start.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for cluster nodes to start during cluster setup if start requested.

        pcs commands: cluster setup --start --wait[=timeout]
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.no-keys-sync" in-pcs="1" in-pcsd="1">
      <description>
        Do not create and distribute these files when creating a cluster:
         * pcsd ssl cert
         * pcsd ssl key
         * pacemaker authkey
         * corosync authkey

        pcs commands: cluster setup --no-keys-sync
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="cluster.create.local" in-pcs="1" in-pcsd="0">
      <description>
        Do not connect to nodes when creating a cluster. Save created
        corosync.conf to the specified file instead.

        pcs commands: cluster setup --corosync_conf=path
      </description>
    </capability>
    <capability id="cluster.destroy" in-pcs="1" in-pcsd="1">
      <description>
        Destroy cluster on the local host.

        pcs commands: cluster destroy
        daemon urls: cluster_destroy
      </description>
    </capability>
    <capability id="cluster.destroy.all" in-pcs="1" in-pcsd="1">
      <description>
        Destroy cluster on all nodes defined in a cluster which the local host
        belongs to.

        pcs commands: cluster destroy --all
        daemon urls: cluster_destroy (parameter all=1)
      </description>
    </capability>
    <capability id="cluster.report" in-pcs="1" in-pcsd="0">
      <description>
        Create a tarball containing everything needed when reporting cluster
        problems.

        pcs commands: cluster report
      </description>
    </capability>
    <capability id="cluster.verify" in-pcs="1" in-pcsd="0">
      <description>
        Check cluster configuration for errors.
      </description>
    </capability>



    <capability id="corosync.authkey.update" in-pcs="1" in-pcsd="0">
      <description>
        Update corosync authkey.

        pcs commands: cluster authkey corosync
      </description>
    </capability>
    <capability id="corosync.config.get" in-pcs="1" in-pcsd="1">
      <description>
        Provide the local corosync.conf file.

        pcs commands: cluster corosync
        daemon urls: get_corosync_conf
      </description>
    </capability>
    <capability id="corosync.config.get.struct" in-pcs="1" in-pcsd="0">
      <description>
        Provide the local corosync.conf in a structured format.

        pcs commands: cluster config show
      </description>
    </capability>
    <capability id="corosync.config.set" in-pcs="0" in-pcsd="1">
      <description>
        Save a corosync.conf file to the local host.

        daemon urls: set_corosync_conf
      </description>
    </capability>
    <capability id="corosync.config.update" in-pcs="1" in-pcsd="0">
      <description>
        Update all corosync settings in runtime.

        pcs commands: cluster config update
      </description>
    </capability>
    <capability id="corosync.config.reload" in-pcs="1" in-pcsd="0">
      <description>
        Instruct corosync to reload its configuration from its config files.

        pcs commands: cluster reload corosync
      </description>
    </capability>
    <capability id="corosync.config.sync-to-local-cluster" in-pcs="1" in-pcsd="0">
      <description>
        Push corosync configuration from the local host to all cluster nodes.

        pcs commands: cluster sync
      </description>
    </capability>
    <capability id="corosync.link.add" in-pcs="1" in-pcsd="0">
      <description>
        Add a new corosync link.

        pcs commands: pcs cluster link add
      </description>
    </capability>
    <capability id="corosync.link.remove" in-pcs="1" in-pcsd="0">
      <description>
        Remove an existing corosync link.

        pcs commands: pcs cluster link delete | remove
      </description>
    </capability>
    <capability id="corosync.link.remove.list" in-pcs="1" in-pcsd="0">
      <description>
        Remove several existing corosync links in one go.

        pcs commands: pcs cluster link delete | remove
      </description>
    </capability>
    <capability id="corosync.link.update" in-pcs="1" in-pcsd="0">
      <description>
        Change addresses and/or options of an existing corosync link.

        pcs commands: pcs cluster link update
      </description>
    </capability>
    <capability id="corosync.qdevice" in-pcs="1" in-pcsd="0">
      <description>
        Set up, manage and show status of a corosync qdevice. Specific
        functionality depends on supported model.

        pcs commands: pcs qdevice
      </description>
    </capability>
    <capability id="corosync.qdevice.model.net" in-pcs="1" in-pcsd="0">
      <description>
        Set up and manage a corosync qdevice model "net": setup, destroy, start,
        stop, kill, enable, disable, show status.

        pcs commands: pcs qdevice
      </description>
    </capability>
    <capability id="corosync.qdevice.model.net.certificates" in-pcs="0" in-pcsd="1">
      <description>
        Provide the certificate of the qdevice instance's certificate authority
        and sign certificate requests.

        daemon urls:
          qdevice_net_get_ca_certificate
          /api/v1/qdevice-qdevice-net-sign-certificate-request/v1
      </description>
    </capability>
    <capability id="corosync.quorum" in-pcs="1" in-pcsd="0">
      <description>
        Show and change corosync quorum configuration.

        pcs commands: quorum config, quorum update
      </description>
    </capability>
    <capability id="corosync.quorum.status" in-pcs="1" in-pcsd="1">
      <description>
        Show corosync quorum status on a node.

        pcs commands: quorum status
        daemon urls: get_quorum_info
      </description>
    </capability>
    <capability id="corosync.quorum.device" in-pcs="1" in-pcsd="0">
      <description>
        Show and change corosync qdevice configuration.

        pcs commands: quorum device ( add | delete | remove | update | status ),
          quorum config
      </description>
    </capability>
    <capability id="corosync.quorum.device.client" in-pcs="0" in-pcsd="1">
      <description>
        Control qdevice client service: start, stop, enable, disable

        daemon urls: qdevice_client_start, qdevice_client_stop,
          qdevice_client_enable, qdevice_client_disable
      </description>
    </capability>
    <capability id="corosync.quorum.device.heuristics" in-pcs="1" in-pcsd="0">
      <description>
        Show and change corosync qdevice heuristics configuration.

        pcs commands: quorum config, quorum device add ... heuristics,
          quorum device update ... heuristics,
          quorum device heuristics ( delete | remove )
      </description>
    </capability>
    <capability id="corosync.quorum.device.model.net" in-pcs="1" in-pcsd="0">
      <description>
        Show and change corosync qdevice model "net" configuration.

        pcs commands: quorum device ( add | delete | remove | update | status ),
          quorum config
      </description>
    </capability>
    <capability id="corosync.quorum.device.client.model.net.certificates" in-pcs="0" in-pcsd="1">
      <description>
        Set up and destroy certificates in qdevice model net client.

        daemon urls:
          qdevice_net_client_init_certificate_storage
          /api/v1/qdevice-client-net-import-certificate/v1
          qdevice_net_client_destroy
      </description>
    </capability>
    <capability id="corosync.quorum.set-expected-votes-runtime" in-pcs="1" in-pcsd="0">
      <description>
        Set expected votes in the live cluster to specified value.

        pcs commands: quorum expected-votes
      </description>
    </capability>
    <capability id="corosync.quorum.unblock" in-pcs="1" in-pcsd="0">
      <description>
        Cancel waiting for all nodes when establishing quorum.

        pcs commands: quorum unblock
      </description>
    </capability>
    <capability id="corosync.totem.block_unlisted_ips" in-pcs="1" in-pcsd="1">
      <description>
        It is possible to set and change corosync's totem.block_unlisted_ips
        option. The option is also present when corosync.conf is
        listed / displayed.

        pcs commands: cluster setup, cluster config update, cluster config show
        daemon urls: /api/v1/cluster-setup/v1
      </description>
    </capability>
    <capability id="corosync.uidgid" in-pcs="1" in-pcsd="0">
      <description>
        Show and change configured uids and gids allowed to connect to corosync.
      </description>
    </capability>



    <capability id="node.add" in-pcs="1" in-pcsd="1">
      <description>
        Add a new node to a cluster.

        pcs commands: cluster node add
        daemon urls: /api/v1/cluster-add-nodes/v1
      </description>
    </capability>
    <capability id="node.add.separated-name-and-address" in-pcs="1" in-pcsd="1">
      <description>
        It is possible to specify a node's address different from its name.
        Corosync will communicate with the node via the specified address(es).

        pcs commands: cluster node add
        daemon urls: /api/v1/cluster-add-nodes/v1
      </description>
    </capability>
    <capability id="node.add.enable" in-pcs="1" in-pcsd="1">
      <description>
        Enable cluster services on the new cluster node during adding a node.

        pcs commands: cluster node add --enable
        daemon urls: /api/v1/cluster-add-nodes/v1
      </description>
    </capability>
    <capability id="node.add.start" in-pcs="1" in-pcsd="1">
      <description>
        Start cluster services on the new cluster node during adding a node.

        pcs commands: cluster node add --start
        daemon urls: /api/v1/cluster-add-nodes/v1
      </description>
    </capability>
    <capability id="node.add.start.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for the new node start cluster service during adding a node if
        start requested.

        pcs commands: cluster node add --start --wait[=timeout]
        daemon urls: /api/v1/cluster-add-nodes/v1
      </description>
    </capability>
    <capability id="node.add.list" in-pcs="0" in-pcsd="1">
      <description>
        Add several nodes to a cluster at once.

        daemon urls: /api/v1/cluster-add-nodes/v1
      </description>
    </capability>
    <capability id="node.remove" in-pcs="1" in-pcsd="1">
      <description>
        Remove a node from a cluster.

        pcs commands: cluster node ( delete | remove )
        daemon urls: /api/v1/cluster-remove-nodes/v1
      </description>
    </capability>
    <capability id="node.remove.list" in-pcs="1" in-pcsd="1">
      <description>
        Remove several nodes from a cluster at once.

        pcs commands: cluster node ( delete | remove )
        daemon urls: /api/v1/cluster-remove-nodes/v1
      </description>
    </capability>
    <capability id="node.remove-from-caches" in-pcs="1" in-pcsd="1">
      <description>
        Remove specified node from various cluster caches.

        pcs commands: cluster node clear
        daemon urls:
          /api/v1/cluster-node-clear/v1
      </description>
    </capability>
    <capability id="node.guest" in-pcs="1" in-pcsd="0">
      <description>
        Add (based on an existing cluster resource) and remove a guest node to
        a cluster. When adding, it is possible to wait for the node to start.

        pcs commands: cluster node ( add-guest | delete-guest | remove-guest )
      </description>
    </capability>
    <capability id="node.remote" in-pcs="1" in-pcsd="0">
      <description>
        Add and remove a remote node to a cluster. When adding, it is possible
        to specify operations and instance and meta attributes for the newly
        created pcmk_remote resource and wait for the new remote node to start.

        pcs commands: cluster node ( add-remote | delete-remote | remove-remote )
      </description>
    </capability>
    <capability id="node.remote.onfail-demote" in-pcs="1" in-pcsd="0">
      <description>
        Support for "demote" value of resource operation's "on-fail" option

        pcs commands: cluster node add-remote
      </description>
    </capability>



    <capability id="node.start-stop-enable-disable" in-pcs="1" in-pcsd="1">
      <description>
        Allow starting, stopping, enabling and disabling cluster services on one
        node or the local host if no node specified.

        pcs commands: cluster (start | stop | enable | disable)
        daemon urls: cluster_start, cluster_stop, cluster_enable,
          cluster_disable
      </description>
    </capability>
    <capability id="node.start-stop-enable-disable.all" in-pcs="1" in-pcsd="1">
      <description>
        Allow starting, stopping, enabling and disabling cluster services on all
        nodes in the cluster.

        pcs commands: cluster (start | stop | enable | disable) --all
        daemon urls: cluster_start, cluster_stop, cluster_enable,
          cluster_disable (param: all == 1)
      </description>
    </capability>
    <capability id="node.start-stop-enable-disable.list" in-pcs="1" in-pcsd="0">
      <description>
        Allow starting, stopping, enabling and disabling cluster services on
        specified nodes in a cluster.

        pcs commands: cluster (start | stop | enable | disable) node1 node2 ...
      </description>
    </capability>
    <capability id="node.start-stop-enable-disable.start-wait" in-pcs="1" in-pcsd="0">
      <description>
        Wait for the cluster nodes to start.

        pcs commands: cluster start --wait[=timeout]
      </description>
    </capability>
    <capability id="node.start-stop-enable-disable.stop-component" in-pcs="0" in-pcsd="1">
      <description>
        At the node level, provide means for stopping services separatelly so
        the nodes stopping can be synchronized on the cluster level.

        daemon urls: cluster_stop (param: component)
      </description>
    </capability>
    <capability id="node.kill" in-pcs="1" in-pcsd="0">
      <description>
        Kill cluster services on the local node.

        pcs commands: cluster kill
      </description>
    </capability>
    <capability id="node.restart" in-pcs="0" in-pcsd="1">
      <description>
        Restart one host machine or the local host machine if no host specified.

        daemon urls: node_restart
      </description>
    </capability>



    <capability id="node.attributes" in-pcs="1" in-pcsd="1">
      <description>
        Show node attributes, add and remove a node attribute.

        pcs commands: node attribute
        daemon urls: add_node_attr_remote
      </description>
    </capability>
    <capability id="node.attributes.set-list-for-node" in-pcs="1" in-pcsd="0">
      <description>
        Set list of node attributes for a node.

        pcs commands: node attribute
      </description>
    </capability>
    <capability id="node.maintenance" in-pcs="1" in-pcsd="1">
      <description>
        Put one node or the local host if no node specified to and from
        maintenance mode. If this functionality is not available,
        node.attributes can be used instead to set the maintenance attribute.

        pcs commands: node ( maintenance | unmaintenance )
        daemon urls:
          /api/v1/node-maintenance-unmaintenance/v1
      </description>
    </capability>
    <capability id="node.maintenance.all" in-pcs="1" in-pcsd="1">
      <description>
        Put all cluster nodes defined in a cluster which the local host belongs
        to to and from maintenance mode.

        pcs commands: node ( maintenance | unmaintenance ) --all
        daemon urls:
          /api/v1/node-maintenance-unmaintenance-all/v1
      </description>
    </capability>
    <capability id="node.maintenance.list" in-pcs="1" in-pcsd="1">
      <description>
        Put specified nodes in a cluster to and from maintenance mode.

        pcs commands: node ( maintenance | unmaintenance ) node1 node2 ...
        daemon urls: /api/v1/node-maintenance-unmaintenance/v1
      </description>
    </capability>
    <capability id="node.maintenance.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for nodes to finish transition to or from maintenance mode.

        pcs commands: node ( maintenance | unmaintenance ) --wait[=timeout]
        daemon urls: /api/v1/node-maintenance-unmaintenance/v1
      </description>
    </capability>
    <capability id="node.standby" in-pcs="1" in-pcsd="1">
      <description>
        Put one node or the local host if no node specified to and from
        standby mode. If this functionality is not available, node.attributes
        can be used instead to set the standby attribute.

        pcs commands: node ( standby | unstandby )
        daemon urls:
          /api/v1/node-standby-unstandby/v1
      </description>
    </capability>
    <capability id="node.standby.all" in-pcs="1" in-pcsd="1">
      <description>
        Put all cluster nodes defined in a cluster which the local host belongs
        to to and from standby mode.

        pcs commands: node ( standby | unstandby ) --all
        daemon urls:
          /api/v1/node-standby-unstandby-all/v1
      </description>
    </capability>
    <capability id="node.standby.list" in-pcs="1" in-pcsd="1">
      <description>
        Put specified nodes in a cluster to and from standby mode.

        pcs commands: node ( standby | unstandby ) node1 node2 ...
        daemon urls: /api/v1/node-standby-unstandby/v1
      </description>
    </capability>
    <capability id="node.standby.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for nodes to finish transition to or from standby mode.

        pcs commands: node ( standby | unstandby ) --wait[=timeout]
        daemon urls: /api/v1/node-standby-unstandby/v1
      </description>
    </capability>
    <capability id="node.utilization" in-pcs="1" in-pcsd="1">
      <description>
        Show node utilization attributes, add and remove a node utilization
        attribute.

        pcs commands: node utilization
        daemon urls: set_node_utilization
      </description>
    </capability>
    <capability id="node.utilization.set-list-for-node" in-pcs="1" in-pcsd="0">
      <description>
        Set several node utilization attributes for a single node at once.

        pcs commands: node utilization
      </description>
    </capability>



    <capability id="node.confirm-off" in-pcs="1" in-pcsd="0">
      <description>
        Confirm to the cluster that the specified node is powered off.

        pcs commands: stonith confirm
      </description>
    </capability>
    <capability id="node.fence" in-pcs="1" in-pcsd="0">
      <description>
        Fence the specified node.

        pcs commands: stonith fence
      </description>
    </capability>



    <capability id="pcmk.acl.enable-disable" in-pcs="1" in-pcsd="0">
      <description>
        Enable and disable pacemaker ACLs. If this capability is not available,
        pcmk.properties.cluster can be used instead to set the enable-acl
        property.

        pcs commands: acl ( enable | disable )
      </description>
    </capability>
    <capability id="pcmk.acl.group" in-pcs="1" in-pcsd="1">
      <description>
        Create (with or without role ids) and delete ACL groups one at a time.
        Show ACL groups.

        pcs commands: acl group ( create | delete | remove ), acl config
        daemon urls:
          /api/v1/acl-create-group/v1
          /api/v1/acl-remove-group/v1
      </description>
    </capability>
    <capability id="pcmk.acl.role" in-pcs="1" in-pcsd="1">
      <description>
        Create, delete, assign, unassign and show ACL roles, add and delete
        roles' permissions, all one at a time.

        pcs commands: acl role ( create | delete | remove | assign | unassign ),
          acl permission ( add | delete | remove )
        daemon urls:
          /api/v1/acl-create-role/v1
          /api/v1/acl-remove-role/v1
          /api/v1/acl-add-permission/v1
          /api/v1/acl-remove-permission/v1
          /api/v1/acl-assign-role-to-group/v1
          /api/v1/acl-unassign-role-from-group/v1
          /api/v1/acl-assign-role-to-target/v1
          /api/v1/acl-unassign-role-from-target/v1
      </description>
    </capability>
    <capability id="pcmk.acl.role.create-with-permissions" in-pcs="1" in-pcsd="1">
      <description>
        Create an ACL role and its permissions in one command.

        pcs commands: acl role create
        daemon urls:
          /api/v1/acl-create-role/v1
      </description>
    </capability>
    <capability id="pcmk.acl.role.delete-with-users-groups" in-pcs="1" in-pcsd="1">
      <description>
        When deleting a role, optionally delete users and groups to which the
        role is assigned, if those users and groups do not have any other roles
        assigned.

        daemon urls:
          /api/v1/acl-remove-role/v1
      </description>
    </capability>
    <capability id="pcmk.acl.role.delete-with-users-groups-implicit" in-pcs="0" in-pcsd="1">
      <description>
        When deleting a role, automatically delete users and groups to which the
        role is assigned, if those users and groups do not have any other roles
        assigned.
      </description>
    </capability>
    <capability id="pcmk.acl.user" in-pcs="1" in-pcsd="1">
      <description>
        Create (with or without role ids) and delete ACL users one at a time.
        Show ACL groups.

        pcs commands: acl user ( create | delete | remove ), acl config
        daemon urls:
          /api/v1/acl-create-target/v1
          /api/v1/acl-remove-target/v1
      </description>
    </capability>



    <capability id="pcmk.alert" in-pcs="1" in-pcsd="1">
      <description>
        Set and show pacemaker alerts configuration:
        * create an alert including its id, description, options and meta
          attributes
        * delete a list of alerts specified by theit ids
        * update an alert including its description, options and meta attributes
        * create an alert recipient in the specified agent including its id,
          description, options and meta attributes
        * delete a list of recipients specified by theit ids
        * update an alert recipient including its description, options and meta
          attributes

        daemon urls:
          /api/v1/alert-add-recipient/v1
          /api/v1/alert-create-alert/v1
          /api/v1/alert-remove-alert/v1
          /api/v1/alert-remove-recipient/v1
          /api/v1/alert-update-alert/v1
          /api/v1/alert-update-recipient/v1
      </description>
    </capability>



    <capability id="pcmk.cib.edit" in-pcs="1" in-pcsd="0">
      <description>
        Edit a CIB XML (as a plain text), support a CIB scope and editing the
        configuration section.

        pcs commands: cluster edit
      </description>
    </capability>
    <capability id="pcmk.cib.get" in-pcs="1" in-pcsd="1">
      <description>
        Provide a CIB XML as a plain text.

        pcs commands: cluster cib
        daemon urls: get_cib
      </description>
    </capability>
    <capability id="pcmk.cib.get.scope" in-pcs="1" in-pcsd="0">
      <description>
        Support a CIB scope when providing a CIB including providing just the
        configuration section.

        pcs commands: cluster cib
      </description>
    </capability>
    <capability id="pcmk.cib.checkpoints" in-pcs="1" in-pcsd="0">
      <description>
        List, view (in a human-readable format) and restore CIB checkpoints.

        pcs commands: config checkpoint [ view | restore ]
      </description>
    </capability>
    <capability id="pcmk.cib.checkpoints.diff" in-pcs="1" in-pcsd="0">
      <description>
        Show differences between two specified checkpoints.

        pcs commands: config checkpoint diff
      </description>
    </capability>
    <capability id="pcmk.cib.set" in-pcs="1" in-pcsd="0">
      <description>
        Push a CIB XML to a cluster, support CIB scope, pushing the
        configuration section and pushing a CIB diff. Optionally wait for the
        changes to take effect.

        pcs commands: cluster cib-push
      </description>
    </capability>
    <capability id="pcmk.cib.roles.promoted-unpromoted" in-pcs="1" in-pcsd="1">
      <description>
        Support for new roles `Promoted` and `Unpromoted` introduced in
        pacemaker 2.1.
      </description>
    </capability>



    <capability id="pcmk.constraint.no-autocorrect" in-pcs="1" in-pcsd="1">
      <description>
        Internal option --autocorrect is not available anymore.
      </description>
    </capability>
    <capability id="pcmk.constraint.hide-expired" in-pcs="1" in-pcsd="0">
      <description>
        Expired constraints are not listed by default. When --all option is
        specified, expired constraints and rules are denoted with "(expired)".

        pcs commands: constraint [ config ] --all
          constraint location [ config ] --all
      </description>
    </capability>
    <capability id="pcmk.constraint.location.simple" in-pcs="1" in-pcsd="1">
      <description>
        Create and delete a location constraint for one resource.

        pcs commands: constraint location ( prefers | avoids ),
          constraint location ( delete | remove ),
          constraint ( delete | remove )
        daemon urls: add_constraint_remote (param: c_type=loc),
          remove_constraint_remote
      </description>
    </capability>
    <capability id="pcmk.constraint.location.simple.options" in-pcs="1" in-pcsd="0">
      <description>
        Constraint options (resource-discovery) and id can be specified when
        creating a constraint and are shown in constraint listing.

        pcs commands: constraint location add
      </description>
    </capability>
    <capability id="pcmk.constraint.location.simple.resource-regexp" in-pcs="1" in-pcsd="0">
      <description>
        Resources can be specified by regular expressions.

        pcs commands: regexp%resource_id
      </description>
    </capability>
    <capability id="pcmk.constraint.location.simple.rule" in-pcs="1" in-pcsd="1">
      <description>
        Can create rule location constraints.

        pcs commands: constraint location rule
        daemon urls: add_constraint_rule_remote (param: c_type=loc)
      </description>
    </capability>
    <capability id="pcmk.constraint.location.simple.rule.node-attr-type-number" in-pcs="1" in-pcsd="1">
      <description>
        Rules support a node attribute type 'number'.

        pcs commands: constraint location rule
        daemon urls: add_constraint_rule_remote (param: c_type=loc)
      </description>
    </capability>
    <capability id="pcmk.constraint.location.simple.rule.options" in-pcs="1" in-pcsd="0">
      <description>
        Constraint options (resource-discovery, role, rule-id, score-attribute)
        and id can be specified when creating a constraint and are shown in
        constraint listing.

        pcs commands: constraint location rule
      </description>
    </capability>
    <capability id="pcmk.constraint.location.simple.rule.rule-add-remove" in-pcs="1" in-pcsd="0">
      <description>
        Add (including options role, rule-id, score-attribute) and remove rules
        to an existing rule location constraint.

        pcs commands: constraint rule ( add | delete | remove )
      </description>
    </capability>
    <capability id="pcmk.constraint.colocation.simple" in-pcs="1" in-pcsd="1">
      <description>
        Create and delete a colocation constraint for a pair of resources.

        pcs commands: constraint colocation add,
          constraint colocation ( delete | remove ),
          constraint ( delete | remove )
        daemon urls: add_constraint_remote (param: c_type=col),
          remove_constraint_remote
      </description>
    </capability>
    <capability id="pcmk.constraint.colocation.simple.options" in-pcs="1" in-pcsd="0">
      <description>
        Can set constraint options, constraint id and resources's role.

        pcs commands: constraint colocation add
      </description>
    </capability>
    <capability id="pcmk.constraint.colocation.set" in-pcs="1" in-pcsd="1">
      <description>
        Create and delete a colocation constraint for sets of resources.

        pcs commands: constraint colocation set, constraint ( delete | remove )
        daemon urls:
          /api/v1/constraint-colocation-create-with-set/v1
          remove_constraint_remote
      </description>
    </capability>
    <capability id="pcmk.constraint.colocation.set.options" in-pcs="1" in-pcsd="1">
      <description>
        Can set resource set options and constraint options.

        pcs commands: constraint colocation set
        daemon urls:
          /api/v1/constraint-colocation-create-with-set/v1
      </description>
    </capability>
    <capability id="pcmk.constraint.order.simple" in-pcs="1" in-pcsd="1">
      <description>
        Create and delete an order constraint for a pair of resources, including
        specifying resources' action.

        pcs commands: constraint order add, constraint order ( delete | remove ),
          constraint ( delete | remove )
        daemon urls: add_constraint_remote (param: c_type=ord),
          remove_constraint_remote
      </description>
    </capability>
    <capability id="pcmk.constraint.order.simple.options" in-pcs="1" in-pcsd="0">
      <description>
        Can set constraint options and constraint id.

        pcs commands: constraint order add
      </description>
    </capability>
    <capability id="pcmk.constraint.order.set" in-pcs="1" in-pcsd="1">
      <description>
        Create and delete an order constraint for sets of resources.

        pcs commands: constraint order set, constraint remove
        daemon urls:
          /api/v1/constraint-order-create-with-set/v1
          remove_constraint_remote
      </description>
    </capability>
    <capability id="pcmk.constraint.order.set.options" in-pcs="1" in-pcsd="1">
      <description>
        Can set resource set options and constraint options.

        pcs commands: constraint order set
        daemon urls:
          /api/v1/constraint-order-create-with-set/v1
      </description>
    </capability>
    <capability id="pcmk.constraint.ticket.simple" in-pcs="1" in-pcsd="1">
      <description>
        Create and delete a ticket constraint for one resource, including
        specifying a resource role and loss policy.

        pcs commands: constraint ticket add,
          constraint ticket ( delete | remove ), constraint ( delete | remove )
        daemon urls:
          /api/v1/constraint-ticket-create/v1
          /api/v1/constraint-ticket-remove/v1
      </description>
    </capability>
    <capability id="pcmk.constraint.ticket.simple.constraint-id" in-pcs="1" in-pcsd="1">
      <description>
        Can set constraint id when creating a ticket constraint.

        pcs commands: constraint ticket add
        daemon urls:
          /api/v1/constraint-ticket-create-with-set/v1
      </description>
    </capability>
    <capability id="pcmk.constraint.ticket.set" in-pcs="1" in-pcsd="1">
      <description>
        Create and delete a ticket constraint for sets of resources, including
        specifying loss policy.

        pcs commands: constraint ticket set, constraint ( delete | remove )
        daemon urls:
          /api/v1/constraint-ticket-create-with-set/v1
          remove_constraint_remote
      </description>
    </capability>
    <capability id="pcmk.constraint.ticket.set.options" in-pcs="1" in-pcsd="1">
      <description>
        Can set resource set options and constraint options (resources role, a
        constraint id).

        pcs commands: constraint ticket set
        daemon urls:
          /api/v1/constraint-ticket-create-with-set/v1
      </description>
    </capability>



    <capability id="pcmk.properties.cluster" in-pcs="1" in-pcsd="1">
      <description>
        Show and set pacemaker cluster properties, can set multiple properties
        at once.

        pcs commands: prop [ set | unset ]
        daemon urls: update_cluster_settings
      </description>
    </capability>
    <capability id="pcmk.properties.cluster.describe" in-pcs="0" in-pcsd="1">
      <description>
        Show cluster properties definition and description (meta data).

        daemon urls: get_cluster_properties_definition
      </description>
    </capability>
    <capability id="pcmk.properties.operation-defaults" in-pcs="1" in-pcsd="0">
      <description>
        Show and set resource operations defaults, can set multiple defaults at
        once.

        pcs commands: resource op defaults
      </description>
    </capability>
    <capability id="pcmk.properties.operation-defaults.multiple" in-pcs="1" in-pcsd="0">
      <description>
        Support for managing multiple sets of resource operations defaults.

        pcs commands: resource op defaults set create | delete | remove | update
      </description>
    </capability>
    <capability id="pcmk.properties.operation-defaults.rule" in-pcs="1" in-pcsd="0">
      <description>
        Support for rules with 'attribute', 'date', 'resource' and 'op'
        expressions in sets of resource operations defaults.

        pcs commands: resource op defaults set create
      </description>
    </capability>
    <capability id="pcmk.properties.operation-defaults.rule.hide-expired" in-pcs="1" in-pcsd="0">
      <description>
        Sets of operation defaults with expired rules are not listed by
        default. When --all option is specified, expired sets and rules are
        denoted with "(expired)". Use --no-expire-check to disable evaluating
        whether rules are expired.

        pcs commands: resource op defaults [config] --all | --no-check-expired
      </description>
    </capability>
    <capability id="pcmk.properties.operation-defaults.rule.node-attr-type-number" in-pcs="1" in-pcsd="0">
      <description>
        Rules support a node attribute type 'number'.

        pcs commands: resource op defaults set create
      </description>
    </capability>
    <capability id="pcmk.properties.operation-defaults.rule-rsc-op" in-pcs="1" in-pcsd="0">
      <description>
        Support for rules with 'resource' and 'op' expressions in sets of
        resource operations defaults.

        pcs commands: resource op defaults set create
      </description>
    </capability>
    <capability id="pcmk.properties.resource-defaults" in-pcs="1" in-pcsd="0">
      <description>
        Show and set resources defaults, can set multiple defaults at once.

        pcs commands: resource defaults
      </description>
    </capability>
    <capability id="pcmk.properties.resource-defaults.multiple" in-pcs="1" in-pcsd="0">
      <description>
        Support for managing multiple sets of resources defaults.

        pcs commands: resource defaults set create | delete | remove | update
      </description>
    </capability>
    <capability id="pcmk.properties.resource-defaults.rule" in-pcs="1" in-pcsd="0">
      <description>
        Support for rules with 'attribute', 'date' and 'resource' expressions
        in sets of resources defaults.

        pcs commands: resource defaults set create
      </description>
    </capability>
    <capability id="pcmk.properties.resource-defaults.rule.hide-expired" in-pcs="1" in-pcsd="0">
      <description>
        Sets of resource defaults with expired rules are not listed by
        default. When --all option is specified, expired sets and rules are
        denoted with "(expired)". Use --no-expire-check to disable evaluating
        whether rules are expired.

        pcs commands: resource defaults [config] --all | --no-check-expired
      </description>
    </capability>
    <capability id="pcmk.properties.resource-defaults.rule.node-attr-type-number" in-pcs="1" in-pcsd="0">
      <description>
        Rules support a node attribute type 'number'.

        pcs commands: resource defaults set create
      </description>
    </capability>
    <capability id="pcmk.properties.resource-defaults.rule-rsc-op" in-pcs="1" in-pcsd="0">
      <description>
        Support for rules with 'resource' expressions in sets of resources
        defaults.

        pcs commands: resource defaults set create
      </description>
    </capability>



    <capability id="pcmk.resource.create" in-pcs="1" in-pcsd="1">
      <description>
        Create a resource (including specifying its options). Optionally put
        the resource into a new clone or to an existing or new group. When
        putting the resource to a group, optionally specify the resource's
        position in the group. Optionally disable the resource upon its
        creation.

        pcs commands: resource create
        daemon urls:
          /api/v1/resource-create/v1
          /api/v1/resource-create-as-clone/v1
          /api/v1/resource-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.clone.custom-id" in-pcs="1" in-pcsd="1">
      <description>
        It is possible to set custom id for a clone.

        pcs commands: resource create ... clone
        daemon urls:
          /api/v1/resource-create-as-clone/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.in-existing-bundle" in-pcs="1" in-pcsd="0">
      <description>
        Put a newly created resource into an existing bundle.

        pcs commands: resource create ... bundle
      </description>
    </capability>
    <capability id="pcmk.resource.create.no-master" in-pcs="1" in-pcsd="1">
      <description>
        It is not possible to create master resources.

        pcs commands: resource create
        daemon urls:
          /api/v1/resource-create/v1
          /api/v1/resource-create-as-clone/v1
          /api/v1/resource-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.promotable" in-pcs="1" in-pcsd="1">
      <description>
        Put a newly created resource into a promotable clone.

        pcs commands: resource create ... promotable
        daemon urls: /api/v1/resource-create-as-clone/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.promotable.custom-id" in-pcs="1" in-pcsd="1">
      <description>
        It is possible to set custom id for a promotable clone.

        pcs commands: resource create ... promotable
        daemon urls:
          /api/v1/resource-create-as-clone/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.meta" in-pcs="1" in-pcsd="1">
      <description>
        Set resource meta attributes when creating a resource. When creating a
        resource as a clone resource, it is possible to set clone meta
        attributes.

        pcs commands: resource create
        daemon urls: /api/v1/resource-create/v1
                     /api/v1/resource-create-as-clone/v1
                     /api/v1/resource-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.operations" in-pcs="1" in-pcsd="1">
      <description>
        Set resource operations when creating a resource, also allow to disable
        copying operations from a resource agent.

        pcs commands: resource create ... op
        daemon urls: /api/v1/resource-create/v1
                     /api/v1/resource-create-as-clone/v1
                     /api/v1/resource-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.operations.onfail-demote" in-pcs="1" in-pcsd="1">
      <description>
        Support for "demote" value of resource operation's "on-fail" option

        pcs commands: resource create ... op
        daemon urls: /api/v1/resource-create/v1
                     /api/v1/resource-create-as-clone/v1
                     /api/v1/resource-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.resource.create.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for the created resource to start.

        pcs commands: resource create ... --wait
        daemon urls: /api/v1/resource-create/v1
                     /api/v1/resource-create-as-clone/v1
                     /api/v1/resource-create-in-group/v1
      </description>
    </capability>

    <capability id="pcmk.resource.delete" in-pcs="1" in-pcsd="1">
      <description>
        Delete a resource.

        pcs commands: resource ( delete | remove )
        daemon urls: remove_resource
      </description>
    </capability>
    <capability id="pcmk.resource.delete.list" in-pcs="0" in-pcsd="1">
      <description>
        Delete several resources at once.

        daemon urls: remove_resource
      </description>
    </capability>

    <capability id="pcmk.resource.update" in-pcs="1" in-pcsd="1">
      <description>
        Update instance options of a resource. Several options can be updated at
        once.

        pcs commands: resource update
        daemon urls: update_resource (param: resource_id is set)
      </description>
    </capability>
    <capability id="pcmk.resource.update.meta" in-pcs="1" in-pcsd="0">
      <description>
        Can update both instance and meta attributes of a resource, several
        instance and meta attributes can be specified.

        pcs commands: resource update ... meta
      </description>
    </capability>
    <capability id="pcmk.resource.update.operations" in-pcs="1" in-pcsd="0">
      <description>
        Can update both instance attributes and operations of a resource,
        several instance attributes and operations can be specified.

        pcs commands: resource update ... op
      </description>
    </capability>
    <capability id="pcmk.resource.update.operations.onfail-demote" in-pcs="1" in-pcsd="0">
      <description>
        Support for "demote" value of resource operation's "on-fail" option

        pcs commands: resource update ... op
      </description>
    </capability>
    <capability id="pcmk.resource.update.wait" in-pcs="1" in-pcsd="0">
      <description>
        Wait for the changes to take effect.

        pcs commands: resource update --wait
      </description>
    </capability>
    <capability id="pcmk.resource.update-meta" in-pcs="1" in-pcsd="1">
      <description>
        Update a meta attribute of a (primitive, clone, group) resource.

        pcs commands: resource meta
        daemon urls: add_meta_attr_remote
      </description>
    </capability>
    <capability id="pcmk.resource.update-meta.list" in-pcs="1" in-pcsd="0">
      <description>
        Update several meta attributes of a resource at once.

        pcs commands: resource update meta, resource meta
      </description>
    </capability>
    <capability id="pcmk.resource.update-meta.wait" in-pcs="1" in-pcsd="0">
      <description>
        Wait for the changes to take effect.

        pcs commands: resource update --wait, resource meta --wait
      </description>
    </capability>
    <capability id="pcmk.resource.update-operations" in-pcs="1" in-pcsd="0">
      <description>
        Create and delete an operation of an existing resource. An operation can
        be deleted based on its id or definition (resource and action and
        options).

        pcs commands: resource op ( add | delete | remove )
      </description>
    </capability>
    <capability id="pcmk.resource.update-operations.onfail-demote" in-pcs="1" in-pcsd="0">
      <description>
        Support for "demote" value of resource operation's "on-fail" option

        pcs commands: resource op add
      </description>
    </capability>

    <capability id="pcmk.resource.group" in-pcs="1" in-pcsd="1">
      <description>
        Support resource groups:
        * Create a group containing specified resources
        * Add a resource to a group, optionally specifying the resource's
          position
        * Remove a resource from a group
        * Ungroup - get all resources out of a group and delete the (now empty)
          group

        pcs commands: resource group ( add | delete | remove ),
          resource ungroup
        daemon urls:
          /api/v1/resource-group-add/v1
          resource_ungroup
          resource_change_group
          update_resource
      </description>
    </capability>
    <capability id="pcmk.resource.group.add-remove-list" in-pcs="1" in-pcsd="0">
      <description>
        Add or remove several resource from a group at once.

        pcs commands: resource group ( add | delete | remove )
      </description>
    </capability>
    <capability id="pcmk.resource.group.wait" in-pcs="1" in-pcsd="0">
      <description>
        Wait for the changes to take effect.

        pcs commands: resource group ( add | delete | remove ) --wait,
          resource ungroup --wait
      </description>
    </capability>
    <capability id="pcmk.resource.clone" in-pcs="1" in-pcsd="1">
      <description>
        Turn an existing resource to a clone resource and the other way around.

        pcs commands: resource clone, resource unclone
        daemon urls: update_resource, resource_clone, resource_unclone
      </description>
    </capability>
    <capability id="pcmk.resource.clone.custom-id" in-pcs="1" in-pcsd="0">
      <description>
        It is possible to set custom id for a clone.

        pcs commands: resource clone
      </description>
    </capability>
    <capability id="pcmk.resource.clone.wait" in-pcs="1" in-pcsd="0">
      <description>
        Wait for the changes to take effect.

        pcs commands: resource clone -- wait, resource unclone --wait
      </description>
    </capability>
    <capability id="pcmk.resource.clone.meta-in-create" in-pcs="1" in-pcsd="0">
      <description>
        Set clone meta attributes when cloning a resource.

        pcs commands: resource clone
      </description>
    </capability>
    <capability id="pcmk.resource.promotable" in-pcs="1" in-pcsd="1">
      <description>
        Turn an existing resource to a promotable clone resource and the other
        way around.

        pcs commands: resource promotable, resource unclone
      </description>
    </capability>
    <capability id="pcmk.resource.promotable.custom-id" in-pcs="1" in-pcsd="0">
      <description>
        It is possible to set custom id for a promotable clone.

        pcs commands: resource promotable
      </description>
    </capability>
    <capability id="pcmk.resource.promotable.wait" in-pcs="1" in-pcsd="0">
      <description>
        Wait for the changes to take effect.

        pcs commands: resource promotable --wait, resource unclone --wait
      </description>
    </capability>
    <capability id="pcmk.resource.promotable.meta-in-create" in-pcs="1" in-pcsd="0">
      <description>
        Set promotable clone meta attributes when turning an existing resource
        to a promotable clone resource.

        pcs commands: resource promotable
      </description>
    </capability>
    <capability id="pcmk.resource.bundle" in-pcs="1" in-pcsd="0">
      <description>
        Support bundle resources: mainly create, update and delete them as well
        as put a resource into a bundle. Includes support in other resource
        related commands.

        pcs commands: resource bundle ( create | update )
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.container-docker" in-pcs="1" in-pcsd="0">
      <description>
        Support docker container in bundle resources.

        pcs commands: resource bundle
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.container-docker.promoted-max" in-pcs="1" in-pcsd="0">
      <description>
        Support promoted-max option of docker container in bundle resources.

        pcs commands: resource bundle
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.container-podman" in-pcs="1" in-pcsd="0">
      <description>
        Support podman container in bundle resources.

        pcs commands: resource bundle
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.container-podman.promoted-max" in-pcs="1" in-pcsd="0">
      <description>
        Support promoted-max option of podman container in bundle resources.

        pcs commands: resource bundle
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.container-rkt" in-pcs="1" in-pcsd="0">
      <description>
        Support rkt container in bundle resources.

        pcs commands: resource bundle
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.container-rkt.promoted-max" in-pcs="1" in-pcsd="0">
      <description>
        Support promoted-max option of rkt container in bundle resources.

        pcs commands: resource bundle
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.reset" in-pcs="1" in-pcsd="0">
      <description>
        Configure specified bundle with given options. Unlike update, this
        command resets the bundle according given options - no previous options
        are kept. Resources inside the bundle are kept as they are.

        pcs commands: resource bundle reset
      </description>
    </capability>
    <capability id="pcmk.resource.bundle.wait" in-pcs="1" in-pcsd="0">
      <description>
        Wait for the changes to take effect when creating or updating a bundle
        resource.

        pcs commands: resource bundle ( create | update ) --wait
      </description>
    </capability>

    <capability id="pcmk.resource.enable-disable" in-pcs="1" in-pcsd="1">
      <description>
        Disable and enable a resource.

        pcs commands: resource disable, resource enable
        daemon urls:
          /api/v1/resource-disable/v1
          /api/v1/resource-enable/v1
      </description>
    </capability>
    <capability id="pcmk.resource.enable-disable.list" in-pcs="1" in-pcsd="1">
      <description>
        Disable or enable several resources at once.

        pcs commands: resource disable, resource enable
        daemon urls:
          /api/v1/resource-disable/v1
          /api/v1/resource-enable/v1
      </description>
    </capability>
    <capability id="pcmk.resource.enable-disable.tag" in-pcs="1" in-pcsd="0">
      <description>
        Disable or enable resources in specified tags at once.

        pcs commands: resource disable, resource enable
      </description>
    </capability>
    <capability id="pcmk.resource.enable-disable.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for resources to start or stop.

        pcs commands: resource disable --wait, resource enable --wait
        daemon urls:
          /api/v1/resource-disable/v1
          /api/v1/resource-enable/v1
      </description>
    </capability>
    <capability id="pcmk.resource.disable.safe" in-pcs="1" in-pcsd="1">
      <description>
        Do not disable resources if other resources would be affected.

        pcs commands: resource disable --safe [--no-strict],
          resource safe-disable
        daemon urls:
          /api/v1/resource-disable-safe/v1
      </description>
    </capability>
    <capability id="pcmk.resource.disable.safe.tag" in-pcs="1" in-pcsd="0">
      <description>
        Do not disable resources in specified tags if other resources would be
        affected.

        pcs commands: resource disable --safe [--no-strict],
          resource safe-disable
      </description>
    </capability>
    <capability id="pcmk.resource.disable.safe.brief" in-pcs="1" in-pcsd="0">
      <description>
        Do not disable resources if other resources would be affected without
        printing pacemaker simulation output.

        pcs commands: resource disable --safe --brief,
          resource safe-disable --brief
      </description>
    </capability>
    <capability id="pcmk.resource.disable.simulate" in-pcs="1" in-pcsd="1">
      <description>
        Show effects caused by disabling resources.

        pcs commands: resource disable --simulate,
          resource safe-disable --simulate
        daemon urls:
          /api/v1/resource-disable-simulate/v1
      </description>
    </capability>
    <capability id="pcmk.resource.disable.simulate.brief" in-pcs="1" in-pcsd="1">
      <description>
        Show only a list of affected resources instead of the whole listing of
        effects caused by disabling resources.

        pcs commands: resource disable --simulate --brief,
          resource safe-disable --simulate --brief
        daemon urls:
          /api/v1/resource-disable-simulate/v1
      </description>
    </capability>
    <capability id="pcmk.resource.disable.simulate.tag" in-pcs="1" in-pcsd="1">
      <description>
        Show effects caused by disabling resources in specified tags.

        pcs commands: resource disable --simulate
        daemon urls:
          /api/v1/resource-disable-simulate/v1
      </description>
    </capability>
    <capability id="pcmk.resource.manage-unmanage" in-pcs="1" in-pcsd="1">
      <description>
        Put a resource into unmanaged and managed mode.

        pcs commands: resource unmanage, resource manage
        daemon urls: /api/v1/resource-manage/v1
                     /api/v1/resource-unmanage/v1
      </description>
    </capability>
    <capability id="pcmk.resource.manage-unmanage.list" in-pcs="1" in-pcsd="1">
      <description>
        Put several resources into unmanaged or managed mode at once.

        pcs commands: resource unmanage, resource manage
        daemon urls: /api/v1/resource-manage/v1
                     /api/v1/resource-unmanage/v1
      </description>
    </capability>
    <capability id="pcmk.resource.manage-unmanage.tag" in-pcs="1" in-pcsd="1">
      <description>
        Put resources in specified tags into unmanaged or managed mode at once.

        pcs commands: resource unmanage, resource manage
        daemon urls: /api/v1/resource-manage/v1
                     /api/v1/resource-unmanage/v1
      </description>
    </capability>
    <capability id="pcmk.resource.manage-unmanage.with-monitor" in-pcs="1" in-pcsd="1">
      <description>
        Optionally disable or enable monitor operations when putting resources
        into unmanaged or managed mode respectively.

        pcs commands: resource ( unmanage | manage ) --with-monitor
        daemon urls: /api/v1/resource-manage/v1
                     /api/v1/resource-unmanage/v1
      </description>
    </capability>
    <capability id="pcmk.resource.utilization" in-pcs="1" in-pcsd="1">
      <description>
        Show resource utilization attributes, add and remove a resource
        utilization attribute.

        pcs commands: resource utilization
        daemon urls: set_resource_utilization
      </description>
    </capability>
    <capability id="pcmk.resource.utilization-set-list-for-resource" in-pcs="1" in-pcsd="0">
      <description>
        Set several resource utilization attributes for a single resource at
        once.

        pcs commands: resource utilization
      </description>
    </capability>

    <capability id="pcmk.resource.ban-move-clear" in-pcs="1" in-pcsd="1">
      <description>
        Ban a resource on a specified node and move a resource to a specified
        node by creating constraints. Provide means to remove the constraints.
        Applies to one specified resource. Optional parameters: a node, limiting
        to a master role, a constraint lifetime. Optionally wait for the
        constraints to take effect.

        pcs commands: pcs resource ( ban | clear | move )
        daemon urls:
          /api/v1/resource-ban/v1
          /api/v1/resource-move/v1
          /api/v1/resource-unmove-unban/v1
      </description>
    </capability>
    <capability id="pcmk.resource.ban-move-clear.clear-expired" in-pcs="1" in-pcsd="1">
      <description>
        An option to clear only constraints with expired lifetime.

        pcs commands: pcs resource clear --expired
        daemon urls:
          /api/v1/resource-unmove-unban/v1
      </description>
    </capability>
    <capability id="pcmk.resource.debug" in-pcs="1" in-pcsd="0">
      <description>
        Force a resource operation to happen on the local node and show debug
        log of it. Support start, stop, promote, demote and monitor operations.

        pcs commands: resource ( debug-start | debug-stop | debug-promote
          | debug-demote | debug-monitor )
      </description>
    </capability>
    <capability id="pcmk.resource.cleanup" in-pcs="1" in-pcsd="0">
      <description>
        Delete failed operations from history of resources and redetect their
        current state. Optionally specify a resource and/or a node.

        pcs commands: resource cleanup
      </description>
    </capability>
    <capability id="pcmk.resource.cleanup.one-resource" in-pcs="1" in-pcsd="1">
      <description>
        Delete failed operations from history of a specified resource on all
        nodes and redetect its current state.

        pcs commands: resource cleanup
        daemon urls: resource_cleanup
      </description>
    </capability>
    <capability id="pcmk.resource.cleanup.strict" in-pcs="1" in-pcsd="1">
      <description>
        Deleting failed operations from history of a specified resource can be
        limited to inner resources only in case of bundled/cloned/grouped
        resources.

        pcs commands: resource cleanup --strict
        daemon urls: resource_cleanup (param: strict=1)
      </description>
    </capability>
    <capability id="pcmk.resource.refresh" in-pcs="1" in-pcsd="0">
      <description>
        Forget history of resources and redetect their current state. Optionally
        specify a resource and/or a node.

        pcs commands: resource refresh
      </description>
    </capability>
    <capability id="pcmk.resource.refresh.one-resource" in-pcs="1" in-pcsd="1">
      <description>
        Forget history of a specified resource on all nodes and redetect its
        current state.

        pcs commands: resource refresh
        daemon urls: resource_refresh
      </description>
    </capability>
    <capability id="pcmk.resource.refresh.strict" in-pcs="1" in-pcsd="1">
      <description>
        Deleting history of a specified resource can be limited to inner
        resources only in case of bundled/cloned/grouped resources.

        pcs commands: resource refresh --strict
        daemon urls: resource_refresh (param: strict=1)
      </description>
    </capability>
    <capability id="pcmk.resource.failcount" in-pcs="1" in-pcsd="0">
      <description>
        Show or reset failcount of a specified resource on all nodes or on
        a specified node.

        pcs commands: resource failcount ( show | reset )
      </description>
    </capability>
    <capability id="pcmk.resource.relocate" in-pcs="1" in-pcsd="0">
      <description>
        Relocate all or specified resources to their preferred nodes, this also
        includes a dry-run mode, means for displaying resources' optimal
        placement and means for cleaning up related temporary settings.

        pcs commands: resource relocate ( dry-run | run | show | clear )
      </description>
    </capability>
    <capability id="pcmk.resource.restart" in-pcs="1" in-pcsd="0">
      <description>
        Restart a resource, allow specifying a node for multi-node resources
        (clones, bundles), allow waiting for the resource to restart.

        pcs commands: resource restart
      </description>
    </capability>
    <capability id="pcmk.resource.relations" in-pcs="1" in-pcsd="0">
      <description>
        Display relations of a resource specified by its id with other resources
        in a tree structure.

        pcs commands: resource relations
      </description>
    </capability>



    <capability id="pcmk.stonith.create" in-pcs="1" in-pcsd="1">
      <description>
        Create a stonith resource (including specifying its options). Optionally
        disable the resource upon its creation.

        pcs commands: stonith create
        daemon urls:
          /api/v1/stonith-create/v1
          /api/v1/stonith-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.create.in-group" in-pcs="1" in-pcsd="1">
      <description>
        Put a new stonith resource into an existing or new group upon its
        creation. Optionally specify the resource's position in the group.

        pcs commands: stonith create ... group
        daemon urls:
          /api/v1/stonith-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.create.meta" in-pcs="1" in-pcsd="1">
      <description>
        Set resource meta attributes when creating a stonith resource.

        pcs commands: stonith create ... meta
        daemon urls:
          /api/v1/stonith-create/v1
          /api/v1/stonith-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.create.operations" in-pcs="1" in-pcsd="1">
      <description>
        Set resource operations when creating a stonith resource.

        pcs commands: stonith create ... op
        daemon urls:
          /api/v1/stonith-create/v1
          /api/v1/stonith-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.create.operations.onfail-demote" in-pcs="1" in-pcsd="1">
      <description>
        Support for "demote" value of resource operation's "on-fail" option

        pcs commands: stonith create ... op
        daemon urls:
          /api/v1/stonith-create/v1
          /api/v1/stonith-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.create.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for the created resource to start.

        pcs commands: stonith create ... --wait
        daemon urls:
          /api/v1/stonith-create/v1
          /api/v1/stonith-create-in-group/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.delete" in-pcs="1" in-pcsd="1">
      <description>
        Delete a stonith resource.

        pcs commands: stonith ( delete | remove )
        daemon urls: currently missing, remove_resource is used instead which
          works for now
      </description>
    </capability>
    <capability id="pcmk.stonith.delete.list" in-pcs="0" in-pcsd="1">
      <description>
        Delete several stonith resources at once.

        daemon urls: remove_resource
      </description>
    </capability>
    <capability id="pcmk.stonith.update" in-pcs="1" in-pcsd="1">
      <description>
        Update instance options of a stonith resource.

        pcs commands: stonith update
        daemon urls: update_fence_device (param: resource_id is set)
      </description>
    </capability>
    <capability id="pcmk.stonith.update.scsi-devices" in-pcs="1" in-pcsd="0">
      <description>
        Update scsi fencing devices without affecting other resources.

        pcs commands: stonith update-scsi-devices
      </description>
    </capability>
    <capability id="pcmk.stonith.update.scsi-devices.add-remove" in-pcs="1" in-pcsd="0">
      <description>
        Update scsi fencing devices without affecting other resources using
        add/remove cli syntax.

        pcs commands: stonith update-scsi-devices
      </description>
    </capability>
    <capability id="pcmk.stonith.scsi-unfence-node-v2" in-pcs="0" in-pcsd="1">
      <description>
        Unfence scsi devices on a cluster node. In comparison with v1, only
        newly added devices are unfenced. In case any existing device is
        fenced, unfencing will be skipped.

        daemon urls: /api/v1/scsi-unfence-node/v2
      </description>
    </capability>
    <capability id="pcmk.stonith.enable-disable" in-pcs="1" in-pcsd="1">
      <description>
        Disable and enable a stonith resource.

        pcs commands: stonith disable, stonith enable
        daemon urls:
          /api/v1/resource-disable/v1
          /api/v1/resource-enable/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.enable-disable.list" in-pcs="1" in-pcsd="1">
      <description>
        Disable or enable several stonith resources at once.

        pcs commands: stonith disable, stonith enable
        daemon urls:
          /api/v1/resource-disable/v1
          /api/v1/resource-enable/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.enable-disable.wait" in-pcs="1" in-pcsd="1">
      <description>
        Wait for resources to start or stop.

        pcs commands: stonith disable --wait, stonith enable --wait
        daemon urls:
          /api/v1/resource-disable/v1
          /api/v1/resource-enable/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.cleanup" in-pcs="1" in-pcsd="0">
      <description>
        Delete failed operations from history of stonith resources and redetect
        their current state. Optionally specify a resource and/or a node.

        pcs commands: stonith cleanup
      </description>
    </capability>
    <capability id="pcmk.stonith.cleanup.one-resource" in-pcs="1" in-pcsd="1">
      <description>
        Delete failed operations from history of a specified stonith resource on
        all nodes and redetect its current state.

        pcs commands: stonith cleanup
        daemon urls: resource_cleanup
      </description>
    </capability>
    <capability id="pcmk.stonith.cleanup.strict" in-pcs="1" in-pcsd="1">
      <description>
        Deleting failed operations from history of stonith resources can be
        limited to inner resources only in case of bundled/cloned/grouped
        resources.

        pcs commands: stonith cleanup --strict
        daemon urls: resource_cleanup (param: strict=1)
      </description>
    </capability>
    <capability id="pcmk.stonith.refresh" in-pcs="1" in-pcsd="0">
      <description>
        Forget history of stonith resources and redetect their current state.
        Optionally specify a resource and/or a node.

        pcs commands: stonith refresh
      </description>
    </capability>
    <capability id="pcmk.stonith.refresh.one-resource" in-pcs="1" in-pcsd="1">
      <description>
        Forget history of a specified stonith resource on all nodes and redetect
        its current state.

        pcs commands: stonith refresh
        daemon urls: resource_refresh
      </description>
    </capability>
    <capability id="pcmk.stonith.refresh.strict" in-pcs="1" in-pcsd="1">
      <description>
        Deleting history of stonith resources can be limited to inner resources
        only in case of bundled/cloned/grouped resources.

        pcs commands: stonith refresh --strict
        daemon urls: resource_refresh (param: strict=1)
      </description>
    </capability>
    <capability id="pcmk.stonith.history.cleanup" in-pcs="1" in-pcsd="0">
      <description>
        Cleanup fencing history. Optionally specify a node.

        pcs commands: stonith history cleanup
      </description>
    </capability>
    <capability id="pcmk.stonith.history.show" in-pcs="1" in-pcsd="0">
      <description>
        Display fencing history. Optionally specify a node.

        pcs commands: stonith history show
      </description>
    </capability>
    <capability id="pcmk.stonith.history.update" in-pcs="1" in-pcsd="0">
      <description>
        Update fencing history.

        pcs commands: stonith history update
      </description>
    </capability>
    <capability id="pcmk.stonith.levels" in-pcs="1" in-pcsd="1">
      <description>
        Basic stonith levels configuration:
        * add a new stonith level with specified level, node and stonith device
        * remove a stonith level with specified level, node and stonith device

        pcs commands: stonith level [ add | delete | remove ]
        daemon urls:
         /api/v1/fencing-topology-add-level/v1
         /api/v1/fencing-topology-remove-all-levels/v1
         /api/v1/fencing-topology-remove-levels-by-params/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.levels.add-remove-devices-list" in-pcs="1" in-pcsd="1">
      <description>
        Add or remove a list of stonith to a fencing level.

        pcs commands: stonith level ( add | delete | remove )
        daemon urls:
         /api/v1/fencing-topology-add-level/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.levels.node-attr" in-pcs="1" in-pcsd="1">
      <description>
        Support specifying a target by a node attribute.

        pcs commands: attrib%name=value
        daemon urls:
         /api/v1/fencing-topology-add-level/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.levels.node-regexp" in-pcs="1" in-pcsd="1">
      <description>
        Support specifying a target by a regular expression applied to node
        name.

        pcs commands: regexp%pattern
        daemon urls:
         /api/v1/fencing-topology-add-level/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.levels.clear" in-pcs="1" in-pcsd="1">
      <description>
        Remove all fencing levels.

        pcs commands: stonith level clear
        daemon urls:
          /api/v1/fencing-topology-remove-all-levels/v1
      </description>
    </capability>
    <capability id="pcmk.stonith.levels.verify" in-pcs="1" in-pcsd="1">
      <description>
        Check if all cluster nodes and stonith devices used in fencing levels exist

        pcs commands: stonith level verify
        daemon urls:
          /api/v1/fencing-topology-verify/v1
      </description>
    </capability>



    <capability id="pcmk.tag" in-pcs="1" in-pcsd="0">
      <description>
        Support pacemaker tags:
        * create a tag
        * add and/or remove IDs to/from an existing tag
        * remove specified tags
        * show cluster tag configuration

        pcs commands: tag config, tag create, tag (delete | remove), tag update
      </description>
    </capability>
    <capability id="pcmk.tag.resources" in-pcs="1" in-pcsd="0">
      <description>
        Resources ids can be put in tags.

        pcs commands: tag create, tag update
      </description>
    </capability>



    <capability id="pcs.auth.client" in-pcs="1" in-pcsd="0">
      <description>
        Can authenticate against other hosts to be able to connect to such
        hosts.

        pcs commands: pcs host auth
      </description>
    </capability>
    <capability id="pcs.auth.client.cluster" in-pcs="1" in-pcsd="0">
      <description>
        Can authenticate against other hosts in the local cluster without
        specifying them explicitely to be able to connect to such host.

        pcs commands: pcs cluster auth
      </description>
    </capability>
    <capability id="pcs.auth.client.token" in-pcs="1" in-pcsd="0">
      <description>
        Can authenticate to other hosts by specifying a token for the hosts.

        pcs commands: pcs host auth --token
      </description>
    </capability>
    <capability id="pcs.auth.server" in-pcs="0" in-pcsd="1">
      <description>
        Other hosts can authenticate against the local host to be able to
        connect to the local host.

        daemon urls: auth, check_auth
      </description>
    </capability>
    <capability id="pcs.auth.server.token" in-pcs="1" in-pcsd="0">
      <description>
        Add token to be accepted as a valid authentication token.

        pcs commands: pcs host accept_token
      </description>
    </capability>
    <capability id="pcs.auth.deauth-client" in-pcs="1" in-pcsd="0">
      <description>
        Remove authentication tokens from a local host so that the local host
        will not be able to connect to such remote hosts.

        pcs commands: pcs host deauth
      </description>
    </capability>
    <capability id="pcs.auth.deauth-server" in-pcs="1" in-pcsd="0">
      <description>
        Remove authentication tokens from a local host so that remote hosts
        will not be able to connect with such tokens to the local host.

        pcs commands: pcs pcsd deauth
      </description>
    </capability>
    <capability id="pcs.auth.separated-name-and-address" in-pcs="1" in-pcsd="1">
      <description>
        It is possible to specify a host's address different from its name when
        authenticating. Pcs/pcsd will communicate with the host via the
        specified address.
      </description>
    </capability>
    <capability id="pcs.auth.no-bidirectional" in-pcs="1" in-pcsd="1">
      <description>
        Authentication is not bidirectional, i.e. 'auth against B C' run on A
        authenticates A against B and C and nothing more.
      </description>
    </capability>
    <capability id="pcs.auth.known-host-change" in-pcs="0" in-pcsd="1">
      <description>
        Allow modifying the list of authenticated hosts by adding (or changing
        if a host already exists) and removing hosts.

        daemon urls: known_hosts_change
      </description>
    </capability>
    <capability id="pcs.auth.export-cluster-known-hosts" in-pcs="0" in-pcsd="1">
      <description>
        Provide a list of known hosts participating in a local cluster.

        daemon urls: get_cluster_known_hosts
      </description>
    </capability>
    <capability id="pcs.automatic-pcs-configs-sync" in-pcs="0" in-pcsd="1">
      <description>
        Automatically synchronize pcs/pcsd configuration files across the local
        cluster. This consists of the synchonization itself done by the daemon
        and commands to configure it (daemon and client).

        daemon urls: get_sync_capabilities, set_sync_options, get_configs,
          set_configs
      </description>
    </capability>
    <capability id="pcs.cfg-in-file.cib" in-pcs="1" in-pcsd="0">
      <description>
        Can work with a CIB provided in a file instead of the live CIB of the
        local cluster,

        pcs commands: -f
      </description>
    </capability>
    <capability id="pcs.permissions" in-pcs="0" in-pcsd="1">
      <description>
        Configure, list and enforce permissions for pcs/pcsd commands.

        daemon urls: get_permissions, set_permissions
      </description>
    </capability>
    <capability id="pcs.request-timeout" in-pcs="1" in-pcsd="0">
      <description>
        It is possible to set a request timeout applied in node to node
        communication at pcs level.

        pcs commands: --request-timeout
      </description>
    </capability>
    <capability id="pcs.daemon-ssl-cert.set" in-pcs="1" in-pcsd="1">
      <description>
        Set a SSL certificate (a certificate-key pair) to be used by pcsd on the
        local host.

        pcs commands: pcsd certkey
        daemon urls: set_certs
      </description>
    </capability>
    <capability id="pcs.daemon-ssl-cert.sync-to-local-cluster" in-pcs="1" in-pcsd="0">
      <description>
        Push the daemon's SSL certificate from the local host to all nodes in
        the local cluster.

        pcs commands: pcsd sync-certificates
      </description>
    </capability>



    <capability id="pcs.disaster-recovery.essentials" in-pcs="1" in-pcsd="0">
      <description>
        Configure disaster-recovery with the local cluster as the primary site
        and one recovery site. Display local disaster-recovery config. Display
        status of all sites. Remove disaster-recovery config.

        pcs commands: dr config, dr destroy, dr set-recovery-site, dr status
      </description>
    </capability>



    <capability id="resource-agents.describe" in-pcs="1" in-pcsd="1">
      <description>
        Describe a resource agent - present its metadata.

        pcs commands: resource describe
        daemon urls:
          /api/v1/resource-agent-describe-agent/v1
      </description>
    </capability>
    <capability id="resource-agents.list" in-pcs="1" in-pcsd="1">
      <description>
        List resource agents available on the local host.

        pcs commands: resource list
        daemon urls:
          /api/v1/resource-agent-list-agents/v1
      </description>
    </capability>
    <capability id="resource-agents.list.detailed" in-pcs="1" in-pcsd="1">
      <description>
        List resource agents available on the local host including their
        description, list available standards and providers, filter agents by
        name.

        pcs commands: resource list, resource standards, resource providers,
          resource agents
        daemon urls:
          /api/v1/resource-agent-list-agents/v1
          /api/v1/resource-agent-list-agents-for-standard-and-provider/v1
          /api/v1/resource-agent-list-ocf-providers/v1
          /api/v1/resource-agent-list-standards/v1
      </description>
    </capability>
    <capability id="stonith-agents.describe" in-pcs="1" in-pcsd="1">
      <description>
        Describe a stonith agent - present its metadata.

        pcs commands: stonith describe
        daemon urls:
          /api/v1/stonith-agent-describe-agent/v1
      </description>
    </capability>
    <capability id="stonith-agents.list" in-pcs="1" in-pcsd="1">
      <description>
        List stonith agents available on the local host.

        pcs commands: stonith list
        daemon urls:
          /api/v1/stonith-agent-list-agents/v1
      </description>
    </capability>
    <capability id="stonith-agents.list.detailed" in-pcs="1" in-pcsd="1">
      <description>
        List stonith agents available on the local host including their
        description, filter agents by name.

        pcs commands: stonith list
        daemon urls:
          /api/v1/stonith-agent-list-agents/v1
      </description>
    </capability>



    <capability id="sbd" in-pcs="1" in-pcsd="1">
      <description>
        Enable and disable SBD in the local cluster, show cluster SBD
        configuration and status. Can set SBD with a watchdog.

        pcs commands: stonith sbd ( enable | disable ), stonith sbd status,
          stonith sbd config
        daemon urls:
          /api/v1/sbd-disable-sbd/v1
          /api/v1/sbd-enable-sbd/v1
      </description>
    </capability>
    <capability id="sbd.option-timeout-action" in-pcs="1" in-pcsd="1">
      <description>
        Allows to set SBD_TIMEOUT_ACTION option.
      </description>
    </capability>
    <capability id="sbd.shared-block-device" in-pcs="1" in-pcsd="0">
      <description>
        Support SBD with shared block devices:
        * setup a device
        * set a device message
        * optionally use up to 3 devices when enabling SBD in a cluster

        pcs commands: stonith sbd device ( setup | message ), stonith sbd enable
      </description>
    </capability>
    <capability id="sbd-node" in-pcs="0" in-pcsd="1">
      <description>
        Configure SBD on the node level:
        * check if node can run SBD
        * set and get SBD config
        * set stonith watchdog timeout
        * enable and disable SBD service

        daemon urls: check_sbd, set_sbd_config, get_sbd_config,
          set_stonith_watchdog_timeout_to_zero, remove_stonith_watchdog_timeout,
          sbd_enable, sbd_disable
      </description>
    </capability>
    <capability id="sbd-node.shared-block-device" in-pcs="0" in-pcsd="1">
      <description>
        Configure SBD on the node level with shared block devices:
        * check if node can run SBD and has access to the specified SBD devices

        daemon urls: check_sbd
      </description>
    </capability>



    <capability id="status.corosync.membership" in-pcs="1" in-pcsd="0">
      <description>
        Show corosync membership on a node.

        pcs commands: status corosync
      </description>
    </capability>
    <capability id="status.pcmk.local-node" in-pcs="0" in-pcsd="1">
      <description>
        Show status pacemaker status of the local node.

        daemon urls: pacemaker_node_status
      </description>
    </capability>
    <capability id="status.pcmk.resources.hide-inactive" in-pcs="1" in-pcsd="0">
      <description>
        Can hide inactive resources when showing resource status.

        pcs commands: status resources --hide-inactive
      </description>
    </capability>
    <capability id="status.pcmk.resources.id" in-pcs="1" in-pcsd="0">
      <description>
        Display status of a single resource or tag.

        pcs commands: status resources [resource id | tag id]
          resource status [resource id | tag id]
          stonith status [resource id | tag id]
      </description>
    </capability>
    <capability id="status.pcmk.resources.node" in-pcs="1" in-pcsd="0">
      <description>
        Display status of resources on a specified node.

        pcs commands: status resources node=node
          resource status node=node
          stonith status node=node
      </description>
    </capability>
    <capability id="status.pcmk.resources.orphaned" in-pcs="1" in-pcsd="0">
      <description>
        Display orphaned resources when showing resource status.

        pcs commands: status resources
      </description>
    </capability>
    <capability id="status.pcmk.xml" in-pcs="1" in-pcsd="0">
      <description>
        Display pacemaker status in XML format.

        pcs commands: status xml
      </description>
    </capability>

    <capability id="pcs.rest-api.v1.1" in-pcs="0" in-pcsd="1">
      <description>
        The following library commands has been exposed as urls (/api/v1/*/v1)
        of pcsd and exchanged pre-library commands:
          acl.add_permission
          acl.assign_role_to_group
          acl.assign_role_to_target
          acl.create_role
          acl.remove_permission
          acl.remove_role
          acl.unassign_role_from_group
          acl.unassign_role_from_target
          alert.add_recipient
          alert.create_alert
          alert.remove_alert
          alert.remove_recipient
          alert.update_alert
          alert.update_recipient
          constraint_colocation.create_with_set
          constraint_order.create_with_set
          constraint_ticket.create
          constraint_ticket.create_with_set
          constraint_ticket.remove
          fencing_topology.add_level
          fencing_topology.remove_all_levels
          fencing_topology.remove_levels_by_params
          node.standby_unstandby_list
          qdevice.client_net_import_certificate
          qdevice.qdevice_net_sign_certificate_request
          resource_agent.describe_agent
          resource_agent.list_agents
          resource.create
          resource.create_as_clone
          resource.create_in_group
          resource.disable
          resource.enable
          resource.group_add
          resource.manage
          resource.unmanage
          sbd.disable_sbd
          sbd.enable_sbd
          stonith_agent.describe_agent
          stonith_agent.list_agents
          stonith.create
          stonith.create_in_group
      </description>
    </capability>
  </capability-list>
</pcs-capabilities>
