summaryrefslogtreecommitdiffstats
path: root/cts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cts/README.md9
-rw-r--r--cts/cli/regression.access_render.exp46
-rw-r--r--cts/cli/regression.acls.exp246
-rw-r--r--cts/cli/regression.daemons.exp736
-rw-r--r--cts/cli/regression.rules.exp8
-rw-r--r--cts/cli/regression.tools.exp2600
-rw-r--r--cts/cli/regression.upgrade.exp53
-rw-r--r--cts/cli/regression.validity.exp298
-rw-r--r--cts/cli/tickets.xml32
-rw-r--r--cts/cts-attrd.in2
-rwxr-xr-xcts/cts-cli.in300
-rw-r--r--cts/cts-fencing.in28
-rw-r--r--cts/cts-log-watcher.in3
-rw-r--r--cts/scheduler/exp/utilization-order4.exp2
-rw-r--r--cts/scheduler/stderr/order-wrong-kind.stderr2
-rw-r--r--cts/scheduler/summary/order-wrong-kind.summary2
-rw-r--r--cts/valgrind-pcmk.suppressions8
17 files changed, 3561 insertions, 814 deletions
diff --git a/cts/README.md b/cts/README.md
index cbf319a..595268d 100644
--- a/cts/README.md
+++ b/cts/README.md
@@ -103,6 +103,15 @@ CTS includes:
*must* match the hosts' names as returned by `uname -n`; they do not have to
match the machines' fully qualified domain names.
+* Optionally, configure the exerciser as a log aggregator, using something like
+ `rsyslog` log forwarding. If aggregation is detected, the exerciser will look
+ for new messages locally instead of requesting them repeatedly from cluster
+ nodes.
+ * Currently, `/var/log/messages` on the exerciser is the only supported log
+ destination. Further, if it's specified explicitly on the command line as
+ the log file, then CTS lab will not check for aggregation.
+ * CTS lab does not currently detect systemd journal log aggregation.
+
### Run
diff --git a/cts/cli/regression.access_render.exp b/cts/cli/regression.access_render.exp
index 37f093d..d818b65 100644
--- a/cts/cli/regression.access_render.exp
+++ b/cts/cli/regression.access_render.exp
@@ -1,22 +1,22 @@
Created new pacemaker configuration
-Setting up shadow instance
-A new shadow instance was created. To begin using it paste the following into your shell:
- CIB_shadow=cts-cli ; export CIB_shadow
+A new shadow instance was created. To begin using it, enter the following into your shell:
+ export CIB_shadow=cts-cli
=#=#=#= Begin test: Configure some ACLs =#=#=#=
=#=#=#= Current cib after: Configure some ACLs =#=#=#=
-<cib epoch="1" num_updates="0" admin_epoch="0">
+<cib epoch="2" num_updates="0" admin_epoch="0">
<configuration>
<crm_config/>
<nodes/>
<resources/>
<constraints/>
<acls>
- <acl_role id="role-deny-acls">
+ <acl_role id="role-deny-acls-write-resources">
<acl_permission id="deny-acls" kind="deny" xpath="/cib/configuration/acls"/>
+ <acl_permission id="write-resources" kind="write" xpath="/cib/configuration/resources"/>
<acl_permission id="read-rest" kind="read" xpath="/cib"/>
</acl_role>
<acl_target id="tony">
- <role id="role-deny-acls"/>
+ <role id="role-deny-acls-write-resources"/>
</acl_target>
</acls>
</configuration>
@@ -26,7 +26,7 @@ A new shadow instance was created. To begin using it paste the following into y
* Passed: cibadmin - Configure some ACLs
=#=#=#= Begin test: Enable ACLs =#=#=#=
=#=#=#= Current cib after: Enable ACLs =#=#=#=
-<cib epoch="2" num_updates="0" admin_epoch="0">
+<cib epoch="3" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -37,12 +37,13 @@ A new shadow instance was created. To begin using it paste the following into y
<resources/>
<constraints/>
<acls>
- <acl_role id="role-deny-acls">
+ <acl_role id="role-deny-acls-write-resources">
<acl_permission id="deny-acls" kind="deny" xpath="/cib/configuration/acls"/>
+ <acl_permission id="write-resources" kind="write" xpath="/cib/configuration/resources"/>
<acl_permission id="read-rest" kind="read" xpath="/cib"/>
</acl_role>
<acl_target id="tony">
- <role id="role-deny-acls"/>
+ <role id="role-deny-acls-write-resources"/>
</acl_target>
</acls>
</configuration>
@@ -52,7 +53,7 @@ A new shadow instance was created. To begin using it paste the following into y
* Passed: crm_attribute - Enable ACLs
=#=#=#= Begin test: An instance of ACLs render (into color) =#=#=#=
<!-- ACLs as evaluated for user tony -->
-\x1b[34m<cib epoch="2" num_updates="0" admin_epoch="0">
+\x1b[34m<cib epoch="3" num_updates="0" admin_epoch="0">
\x1b[34m<configuration>
\x1b[34m<crm_config>
\x1b[34m<cluster_property_set id="cib-bootstrap-options">
@@ -60,15 +61,16 @@ A new shadow instance was created. To begin using it paste the following into y
\x1b[34m</cluster_property_set>
\x1b[34m</crm_config>
\x1b[34m<nodes/>
- \x1b[34m<resources/>
+ \x1b[32m<resources/>
\x1b[34m<constraints/>
\x1b[31m<acls>
- \x1b[31m<acl_role id="role-deny-acls">
+ \x1b[31m<acl_role id="role-deny-acls-write-resources">
\x1b[31m<acl_permission id="deny-acls" kind="deny" xpath="/cib/configuration/acls"/>
+ \x1b[31m<acl_permission id="write-resources" kind="write" xpath="/cib/configuration/resources"/>
\x1b[31m<acl_permission id="read-rest" kind="read" xpath="/cib"/>
\x1b[31m</acl_role>
\x1b[31m<acl_target id="tony">
- \x1b[31m<role id="role-deny-acls"/>
+ \x1b[31m<role id="role-deny-acls-write-resources"/>
\x1b[31m</acl_target>
\x1b[31m</acls>
\x1b[34m</configuration>
@@ -78,7 +80,7 @@ A new shadow instance was created. To begin using it paste the following into y
* Passed: cibadmin - An instance of ACLs render (into color)
=#=#=#= Begin test: An instance of ACLs render (into namespacing) =#=#=#=
<!-- ACLs as evaluated for user tony -->
-<pcmk-access-readable:cib epoch="2" num_updates="0" admin_epoch="0" xmlns:pcmk-access-readable="http://clusterlabs.org/ns/pacemaker/access/readable" xmlns:pcmk-access-denied="http://clusterlabs.org/ns/pacemaker/access/denied">
+<pcmk-access-readable:cib epoch="3" num_updates="0" admin_epoch="0" xmlns:pcmk-access-writable="http://clusterlabs.org/ns/pacemaker/access/writable" xmlns:pcmk-access-readable="http://clusterlabs.org/ns/pacemaker/access/readable" xmlns:pcmk-access-denied="http://clusterlabs.org/ns/pacemaker/access/denied">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -86,15 +88,16 @@ A new shadow instance was created. To begin using it paste the following into y
</cluster_property_set>
</crm_config>
<nodes/>
- <resources/>
+ <pcmk-access-writable:resources/>
<constraints/>
<pcmk-access-denied:acls>
- <acl_role id="role-deny-acls">
+ <acl_role id="role-deny-acls-write-resources">
<acl_permission id="deny-acls" kind="deny" xpath="/cib/configuration/acls"/>
+ <acl_permission id="write-resources" kind="write" xpath="/cib/configuration/resources"/>
<acl_permission id="read-rest" kind="read" xpath="/cib"/>
</acl_role>
<acl_target id="tony">
- <role id="role-deny-acls"/>
+ <role id="role-deny-acls-write-resources"/>
</acl_target>
</pcmk-access-denied:acls>
</configuration>
@@ -105,7 +108,7 @@ A new shadow instance was created. To begin using it paste the following into y
=#=#=#= Begin test: An instance of ACLs render (into text) =#=#=#=
<!-- ACLs as evaluated for user tony -->
vvv---[ READABLE ]---vvv
-<cib epoch="2" num_updates="0" admin_epoch="0">
+<cib epoch="3" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -113,17 +116,20 @@ vvv---[ READABLE ]---vvv
</cluster_property_set>
</crm_config>
<nodes/>
+
+ vvv---[ WRITABLE ]---vvv
<resources/>
<constraints/>
vvv---[ ~DENIED~ ]---vvv
<acls>
- <acl_role id="role-deny-acls">
+ <acl_role id="role-deny-acls-write-resources">
<acl_permission id="deny-acls" kind="deny" xpath="/cib/configuration/acls"/>
+ <acl_permission id="write-resources" kind="write" xpath="/cib/configuration/resources"/>
<acl_permission id="read-rest" kind="read" xpath="/cib"/>
</acl_role>
<acl_target id="tony">
- <role id="role-deny-acls"/>
+ <role id="role-deny-acls-write-resources"/>
</acl_target>
</acls>
</configuration>
diff --git a/cts/cli/regression.acls.exp b/cts/cli/regression.acls.exp
index c0b0c4f..1822328 100644
--- a/cts/cli/regression.acls.exp
+++ b/cts/cli/regression.acls.exp
@@ -30,8 +30,8 @@ A new shadow instance was created. To begin using it, enter the following into y
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -87,8 +87,8 @@ A new shadow instance was created. To begin using it, enter the following into y
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -145,8 +145,8 @@ A new shadow instance was created. To begin using it, enter the following into y
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -203,8 +203,8 @@ A new shadow instance was created. To begin using it, enter the following into y
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -264,8 +264,8 @@ A new shadow instance was created. To begin using it, enter the following into y
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -328,8 +328,8 @@ A new shadow instance was created. To begin using it, enter the following into y
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -372,14 +372,9 @@ crm_attribute: Error performing operation: Permission denied
=#=#=#= End test: unknownguy: Set stonith-enabled - Insufficient privileges (4) =#=#=#=
* Passed: crm_attribute - unknownguy: Set stonith-enabled
=#=#=#= Begin test: unknownguy: Create a resource =#=#=#=
-pcmk__check_acl trace: User 'unknownguy' without ACLs denied read/write access to /cib/configuration/resources/primitive[@id]
-pcmk__apply_creation_acl trace: Creation of <primitive> scaffolding with id="<unset>" is implicitly allowed
+pcmk__check_acl trace: User 'unknownguy' without ACLs denied read/write access to /cib/configuration/resources/primitive[@id='dummy']
+pcmk__apply_creation_acl trace: ACLs disallow creation of <primitive> with id="dummy"
Call failed: Permission denied
-<failed>
- <failed_update id="dummy" object_type="primitive" operation="cib_create" reason="Permission denied">
- <primitive id="dummy" class="ocf" provider="pacemaker" type="Dummy"/>
- </failed_update>
-</failed>
=#=#=#= End test: unknownguy: Create a resource - Insufficient privileges (4) =#=#=#=
* Passed: cibadmin - unknownguy: Create a resource
=#=#=#= Begin test: l33t-haxor: Query configuration =#=#=#=
@@ -433,8 +428,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -506,8 +501,8 @@ pcmk__apply_creation_acl trace: ACLs allow creation of <nvpair> with id="cib-bo
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -577,8 +572,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -643,8 +638,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -711,8 +706,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -801,8 +796,8 @@ Set 'dummy' option: id=dummy-meta_attributes-target-role set=dummy-meta_attribut
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -877,8 +872,8 @@ Stopped
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -951,8 +946,8 @@ Deleted 'dummy' option: id=dummy-meta_attributes-target-role name=target-role
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1028,8 +1023,8 @@ Set 'dummy' option: id=dummy-meta_attributes-target-role set=dummy-meta_attribut
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1154,8 +1149,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1229,8 +1224,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1303,8 +1298,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1377,8 +1372,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1451,8 +1446,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1522,8 +1517,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1589,8 +1584,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1656,8 +1651,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1723,8 +1718,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1790,8 +1785,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1857,8 +1852,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1924,8 +1919,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -1991,8 +1986,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -2058,8 +2053,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -2127,8 +2122,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -2196,8 +2191,8 @@ Call failed: Permission denied
</acl_user>
<acl_role id="observer">
<read id="observer-read-1" xpath="/cib"/>
- <write id="observer-write-1" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <write id="observer-write-2" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <write id="observer-write-1" xpath="//nvpair[@name='stonith-enabled']"/>
+ <write id="observer-write-2" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<read id="admin-read-1" xpath="/cib"/>
@@ -2273,8 +2268,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2323,14 +2318,9 @@ crm_attribute: Error performing operation: Permission denied
=#=#=#= End test: unknownguy: Set stonith-enabled - Insufficient privileges (4) =#=#=#=
* Passed: crm_attribute - unknownguy: Set stonith-enabled
=#=#=#= Begin test: unknownguy: Create a resource =#=#=#=
-pcmk__check_acl trace: User 'unknownguy' without ACLs denied read/write access to /cib/configuration/resources/primitive[@id]
-pcmk__apply_creation_acl trace: Creation of <primitive> scaffolding with id="<unset>" is implicitly allowed
+pcmk__check_acl trace: User 'unknownguy' without ACLs denied read/write access to /cib/configuration/resources/primitive[@id='dummy']
+pcmk__apply_creation_acl trace: ACLs disallow creation of <primitive> with id="dummy"
Call failed: Permission denied
-<failed>
- <failed_update id="dummy" object_type="primitive" operation="cib_create" reason="Permission denied">
- <primitive id="dummy" class="ocf" provider="pacemaker" type="Dummy"/>
- </failed_update>
-</failed>
=#=#=#= End test: unknownguy: Create a resource - Insufficient privileges (4) =#=#=#=
* Passed: cibadmin - unknownguy: Create a resource
=#=#=#= Begin test: l33t-haxor: Query configuration =#=#=#=
@@ -2388,8 +2378,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2469,8 +2459,8 @@ crm_attribute: Error performing operation: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2549,8 +2539,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2624,8 +2614,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2701,8 +2691,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2800,8 +2790,8 @@ Set 'dummy' option: id=dummy-meta_attributes-target-role set=dummy-meta_attribut
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2885,8 +2875,8 @@ Stopped
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -2968,8 +2958,8 @@ Deleted 'dummy' option: id=dummy-meta_attributes-target-role name=target-role
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3054,8 +3044,8 @@ Set 'dummy' option: id=dummy-meta_attributes-target-role set=dummy-meta_attribut
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3189,8 +3179,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3273,8 +3263,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3356,8 +3346,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3439,8 +3429,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3522,8 +3512,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3602,8 +3592,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3678,8 +3668,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3754,8 +3744,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3830,8 +3820,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3906,8 +3896,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -3982,8 +3972,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -4058,8 +4048,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -4134,8 +4124,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -4210,8 +4200,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -4288,8 +4278,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
@@ -4366,8 +4356,8 @@ Call failed: Permission denied
</acl_target>
<acl_role id="observer">
<acl_permission id="observer-read-1" kind="read" xpath="/cib"/>
- <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name=&apos;stonith-enabled&apos;]"/>
- <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name=&apos;target-role&apos;]"/>
+ <acl_permission id="observer-write-1" kind="write" xpath="//nvpair[@name='stonith-enabled']"/>
+ <acl_permission id="observer-write-2" kind="write" xpath="//nvpair[@name='target-role']"/>
</acl_role>
<acl_role id="admin">
<acl_permission id="admin-read-1" kind="read" xpath="/cib"/>
diff --git a/cts/cli/regression.daemons.exp b/cts/cli/regression.daemons.exp
index b34fba8..d530c4a 100644
--- a/cts/cli/regression.daemons.exp
+++ b/cts/cli/regression.daemons.exp
@@ -1,18 +1,31 @@
=#=#=#= Begin test: Get CIB manager metadata =#=#=#=
-<?xml version=""?>
<resource-agent name="pacemaker-based" version="">
- <version>1.1</version>
- <longdesc lang="en">Cluster options used by Pacemaker&apos;s Cluster Information Base manager</longdesc>
- <shortdesc lang="en">Cluster Information Base manager options</shortdesc>
+ <version>
+ 1.1
+ </version>
+ <longdesc lang="en">
+ Cluster options used by Pacemaker's Cluster Information Base manager
+ </longdesc>
+ <shortdesc lang="en">
+ Cluster Information Base manager options
+ </shortdesc>
<parameters>
<parameter name="enable-acl">
- <longdesc lang="en">Enable Access Control Lists (ACLs) for the CIB</longdesc>
- <shortdesc lang="en">Enable Access Control Lists (ACLs) for the CIB</shortdesc>
+ <longdesc lang="en">
+ Enable Access Control Lists (ACLs) for the CIB
+ </longdesc>
+ <shortdesc lang="en">
+ Enable Access Control Lists (ACLs) for the CIB
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="cluster-ipc-limit">
- <longdesc lang="en">Raise this if log has &quot;Evicting client&quot; messages for cluster daemon PIDs (a good value is the number of resources in the cluster multiplied by the number of nodes).</longdesc>
- <shortdesc lang="en">Maximum IPC message backlog before disconnecting a cluster daemon</shortdesc>
+ <longdesc lang="en">
+ Raise this if log has "Evicting client" messages for cluster daemon PIDs (a good value is the number of resources in the cluster multiplied by the number of nodes).
+ </longdesc>
+ <shortdesc lang="en">
+ Maximum IPC message backlog before disconnecting a cluster daemon
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
</parameters>
@@ -20,247 +33,399 @@
=#=#=#= End test: Get CIB manager metadata - OK (0) =#=#=#=
* Passed: pacemaker-based - Get CIB manager metadata
=#=#=#= Begin test: Get controller metadata =#=#=#=
-<?xml version=""?>
<resource-agent name="pacemaker-controld" version="">
- <version>1.1</version>
- <longdesc lang="en">Cluster options used by Pacemaker&apos;s controller</longdesc>
- <shortdesc lang="en">Pacemaker controller options</shortdesc>
+ <version>
+ 1.1
+ </version>
+ <longdesc lang="en">
+ Cluster options used by Pacemaker's controller
+ </longdesc>
+ <shortdesc lang="en">
+ Pacemaker controller options
+ </shortdesc>
<parameters>
<parameter name="dc-version">
- <longdesc lang="en">Includes a hash which identifies the exact changeset the code was built from. Used for diagnostic purposes.</longdesc>
- <shortdesc lang="en">Pacemaker version on cluster node elected Designated Controller (DC)</shortdesc>
- <content type="string" default=""/>
+ <longdesc lang="en">
+ Includes a hash which identifies the exact revision the code was built from. Used for diagnostic purposes.
+ </longdesc>
+ <shortdesc lang="en">
+ Pacemaker version on cluster node elected Designated Controller (DC)
+ </shortdesc>
+ <content type="string"/>
</parameter>
<parameter name="cluster-infrastructure">
- <longdesc lang="en">Used for informational and diagnostic purposes.</longdesc>
- <shortdesc lang="en">The messaging stack on which Pacemaker is currently running</shortdesc>
- <content type="string" default=""/>
+ <longdesc lang="en">
+ Used for informational and diagnostic purposes.
+ </longdesc>
+ <shortdesc lang="en">
+ The messaging layer on which Pacemaker is currently running
+ </shortdesc>
+ <content type="string"/>
</parameter>
<parameter name="cluster-name">
- <longdesc lang="en">This optional value is mostly for users&apos; convenience as desired in administration, but may also be used in Pacemaker configuration rules via the #cluster-name node attribute, and by higher-level tools and resource agents.</longdesc>
- <shortdesc lang="en">An arbitrary name for the cluster</shortdesc>
+ <longdesc lang="en">
+ This optional value is mostly for users' convenience as desired in administration, but may also be used in Pacemaker configuration rules via the #cluster-name node attribute, and by higher-level tools and resource agents.
+ </longdesc>
+ <shortdesc lang="en">
+ An arbitrary name for the cluster
+ </shortdesc>
<content type="string"/>
</parameter>
<parameter name="dc-deadtime">
- <longdesc lang="en">The optimal value will depend on the speed and load of your network and the type of switches used.</longdesc>
- <shortdesc lang="en">How long to wait for a response from other nodes during start-up</shortdesc>
+ <longdesc lang="en">
+ The optimal value will depend on the speed and load of your network and the type of switches used.
+ </longdesc>
+ <shortdesc lang="en">
+ How long to wait for a response from other nodes during start-up
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="cluster-recheck-interval">
- <longdesc lang="en">Pacemaker is primarily event-driven, and looks ahead to know when to recheck cluster state for failure timeouts and most time-based rules. However, it will also recheck the cluster after this amount of inactivity, to evaluate rules with date specifications and serve as a fail-safe for certain types of scheduler bugs. Allowed values: Zero disables polling, while positive values are an interval in seconds(unless other units are specified, for example "5min")</longdesc>
- <shortdesc lang="en">Polling interval to recheck cluster state and evaluate rules with date specifications</shortdesc>
+ <longdesc lang="en">
+ Pacemaker is primarily event-driven, and looks ahead to know when to recheck cluster state for failure-timeout settings and most time-based rules. However, it will also recheck the cluster after this amount of inactivity, to evaluate rules with date specifications and serve as a fail-safe for certain types of scheduler bugs. A value of 0 disables polling. A positive value sets an interval in seconds, unless other units are specified (for example, "5min").
+ </longdesc>
+ <shortdesc lang="en">
+ Polling interval to recheck cluster state and evaluate rules with date specifications
+ </shortdesc>
<content type="time" default=""/>
</parameter>
- <parameter name="load-threshold">
- <longdesc lang="en">The cluster will slow down its recovery process when the amount of system resources used (currently CPU) approaches this limit</longdesc>
- <shortdesc lang="en">Maximum amount of system load that should be used by cluster nodes</shortdesc>
- <content type="percentage" default=""/>
- </parameter>
- <parameter name="node-action-limit">
- <longdesc lang="en">Maximum number of jobs that can be scheduled per node (defaults to 2x cores)</longdesc>
- <shortdesc lang="en">Maximum number of jobs that can be scheduled per node (defaults to 2x cores)</shortdesc>
- <content type="integer" default=""/>
- </parameter>
<parameter name="fence-reaction">
- <longdesc lang="en">A cluster node may receive notification of its own fencing if fencing is misconfigured, or if fabric fencing is in use that doesn&apos;t cut cluster communication. Allowed values are &quot;stop&quot; to attempt to immediately stop Pacemaker and stay stopped, or &quot;panic&quot; to attempt to immediately reboot the local node, falling back to stop on failure.</longdesc>
- <shortdesc lang="en">How a cluster node should react if notified of its own fencing</shortdesc>
- <content type="string" default=""/>
+ <longdesc lang="en">
+ A cluster node may receive notification of a "succeeded" fencing that targeted it if fencing is misconfigured, or if fabric fencing is in use that doesn't cut cluster communication. Use "stop" to attempt to immediately stop Pacemaker and stay stopped, or "panic" to attempt to immediately reboot the local node, falling back to stop on failure. Allowed values: stop, panic
+ </longdesc>
+ <shortdesc lang="en">
+ How a cluster node should react if notified of its own fencing
+ </shortdesc>
+ <content type="select" default="">
+ <option value="stop"/>
+ <option value="panic"/>
+ </content>
</parameter>
<parameter name="election-timeout">
- <longdesc lang="en">Declare an election failed if it is not decided within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only ***</shortdesc>
+ <longdesc lang="en">
+ Declare an election failed if it is not decided within this much time. If you need to adjust this value, it probably indicates the presence of a bug.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only ***
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="shutdown-escalation">
- <longdesc lang="en">Exit immediately if shutdown does not complete within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only ***</shortdesc>
+ <longdesc lang="en">
+ Exit immediately if shutdown does not complete within this much time. If you need to adjust this value, it probably indicates the presence of a bug.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only ***
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="join-integration-timeout">
- <longdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only ***</shortdesc>
+ <longdesc lang="en">
+ If you need to adjust this value, it probably indicates the presence of a bug.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only ***
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="join-finalization-timeout">
- <longdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only ***</shortdesc>
+ <longdesc lang="en">
+ If you need to adjust this value, it probably indicates the presence of a bug.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only ***
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="transition-delay">
- <longdesc lang="en">Delay cluster recovery for this much time to allow for additional events to occur. Useful if your configuration is sensitive to the order in which ping updates arrive.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only *** Enabling this option will slow down cluster recovery under all conditions</shortdesc>
+ <longdesc lang="en">
+ Delay cluster recovery for this much time to allow for additional events to occur. Useful if your configuration is sensitive to the order in which ping updates arrive.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Enabling this option will slow down cluster recovery under all conditions
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="stonith-watchdog-timeout">
- <longdesc lang="en">If this is set to a positive value, lost nodes are assumed to self-fence using watchdog-based SBD within this much time. This does not require a fencing resource to be explicitly configured, though a fence_watchdog resource can be configured, to limit use to specific nodes. If this is set to 0 (the default), the cluster will never assume watchdog-based self-fencing. If this is set to a negative value, the cluster will use twice the local value of the `SBD_WATCHDOG_TIMEOUT` environment variable if that is positive, or otherwise treat this as 0. WARNING: When used, this timeout must be larger than `SBD_WATCHDOG_TIMEOUT` on all nodes that use watchdog-based SBD, and Pacemaker will refuse to start on any of those nodes where this is not true for the local value or SBD is not active. When this is set to a negative value, `SBD_WATCHDOG_TIMEOUT` must be set to the same value on all nodes that use SBD, otherwise data corruption or loss could occur.</longdesc>
- <shortdesc lang="en">How long before nodes can be assumed to be safely down when watchdog-based self-fencing via SBD is in use</shortdesc>
+ <longdesc lang="en">
+ If this is set to a positive value, lost nodes are assumed to achieve self-fencing using watchdog-based SBD within this much time. This does not require a fencing resource to be explicitly configured, though a fence_watchdog resource can be configured, to limit use to specific nodes. If this is set to 0 (the default), the cluster will never assume watchdog-based self-fencing. If this is set to a negative value, the cluster will use twice the local value of the `SBD_WATCHDOG_TIMEOUT` environment variable if that is positive, or otherwise treat this as 0. WARNING: When used, this timeout must be larger than `SBD_WATCHDOG_TIMEOUT` on all nodes that use watchdog-based SBD, and Pacemaker will refuse to start on any of those nodes where this is not true for the local value or SBD is not active. When this is set to a negative value, `SBD_WATCHDOG_TIMEOUT` must be set to the same value on all nodes that use SBD, otherwise data corruption or loss could occur.
+ </longdesc>
+ <shortdesc lang="en">
+ How long before nodes can be assumed to be safely down when watchdog-based self-fencing via SBD is in use
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="stonith-max-attempts">
- <longdesc lang="en">How many times fencing can fail before it will no longer be immediately re-attempted on a target</longdesc>
- <shortdesc lang="en">How many times fencing can fail before it will no longer be immediately re-attempted on a target</shortdesc>
+ <longdesc lang="en">
+ How many times fencing can fail before it will no longer be immediately re-attempted on a target
+ </longdesc>
+ <shortdesc lang="en">
+ How many times fencing can fail before it will no longer be immediately re-attempted on a target
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
- <parameter name="no-quorum-policy">
- <longdesc lang="en">What to do when the cluster does not have quorum Allowed values: stop, freeze, ignore, demote, suicide</longdesc>
- <shortdesc lang="en">What to do when the cluster does not have quorum</shortdesc>
- <content type="select" default="">
- <option value="stop" />
- <option value="freeze" />
- <option value="ignore" />
- <option value="demote" />
- <option value="suicide" />
- </content>
- </parameter>
- <parameter name="shutdown-lock">
- <longdesc lang="en">When true, resources active on a node when it is cleanly shut down are kept &quot;locked&quot; to that node (not allowed to run elsewhere) until they start again on that node after it rejoins (or for at most shutdown-lock-limit, if set). Stonith resources and Pacemaker Remote connections are never locked. Clone and bundle instances and the promoted role of promotable clones are currently never locked, though support could be added in a future release.</longdesc>
- <shortdesc lang="en">Whether to lock resources to a cleanly shut down node</shortdesc>
- <content type="boolean" default=""/>
- </parameter>
- <parameter name="shutdown-lock-limit">
- <longdesc lang="en">If shutdown-lock is true and this is set to a nonzero time duration, shutdown locks will expire after this much time has passed since the shutdown was initiated, even if the node has not rejoined.</longdesc>
- <shortdesc lang="en">Do not lock resources to a cleanly shut down node longer than this</shortdesc>
- <content type="time" default=""/>
+ <parameter name="load-threshold">
+ <longdesc lang="en">
+ The cluster will slow down its recovery process when the amount of system resources used (currently CPU) approaches this limit
+ </longdesc>
+ <shortdesc lang="en">
+ Maximum amount of system load that should be used by cluster nodes
+ </shortdesc>
+ <content type="percentage" default=""/>
</parameter>
- <parameter name="node-pending-timeout">
- <longdesc lang="en">Fence nodes that do not join the controller process group within this much time after joining the cluster, to allow the cluster to continue managing resources. A value of 0 means never fence pending nodes. Setting the value to 2h means fence nodes after 2 hours.</longdesc>
- <shortdesc lang="en">How long to wait for a node that has joined the cluster to join the controller process group</shortdesc>
- <content type="time" default=""/>
+ <parameter name="node-action-limit">
+ <longdesc lang="en">
+ Maximum number of jobs that can be scheduled per node (defaults to 2x cores)
+ </longdesc>
+ <shortdesc lang="en">
+ Maximum number of jobs that can be scheduled per node (defaults to 2x cores)
+ </shortdesc>
+ <content type="integer" default=""/>
</parameter>
</parameters>
</resource-agent>
=#=#=#= End test: Get controller metadata - OK (0) =#=#=#=
* Passed: pacemaker-controld - Get controller metadata
=#=#=#= Begin test: Get fencer metadata =#=#=#=
-<?xml version=""?>
<resource-agent name="pacemaker-fenced" version="">
- <version>1.1</version>
- <longdesc lang="en">Instance attributes available for all &quot;stonith&quot;-class resources and used by Pacemaker&apos;s fence daemon, formerly known as stonithd</longdesc>
- <shortdesc lang="en">Instance attributes available for all &quot;stonith&quot;-class resources</shortdesc>
+ <version>
+ 1.1
+ </version>
+ <longdesc lang="en">
+ Instance attributes available for all "stonith"-class resources and used by Pacemaker's fence daemon, formerly known as stonithd
+ </longdesc>
+ <shortdesc lang="en">
+ Instance attributes available for all "stonith"-class resources
+ </shortdesc>
<parameters>
<parameter name="pcmk_host_argument">
- <longdesc lang="en">some devices do not support the standard &apos;port&apos; parameter or may provide additional ones. Use this to specify an alternate, device-specific, parameter that should indicate the machine to be fenced. A value of none can be used to tell the cluster not to supply any additional parameters.</longdesc>
- <shortdesc lang="en">Advanced use only: An alternate parameter to supply instead of &apos;port&apos;</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support the standard 'port' parameter or may provide additional ones. Use this to specify an alternate, device-specific, parameter that should indicate the machine to be fenced. A value of "none" can be used to tell the cluster not to supply any additional parameters.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** An alternate parameter to supply instead of 'port'
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_host_map">
- <longdesc lang="en">Eg. node1:1;node2:2,3 would tell the cluster to use port 1 for node1 and ports 2 and 3 for node2</longdesc>
- <shortdesc lang="en">A mapping of host names to ports numbers for devices that do not support host names.</shortdesc>
- <content type="string" default=""/>
+ <longdesc lang="en">
+ For example, "node1:1;node2:2,3" would tell the cluster to use port 1 for node1 and ports 2 and 3 for node2.
+ </longdesc>
+ <shortdesc lang="en">
+ A mapping of node names to port numbers for devices that do not support node names.
+ </shortdesc>
+ <content type="string"/>
</parameter>
<parameter name="pcmk_host_list">
- <longdesc lang="en">A list of machines controlled by this device (Optional unless pcmk_host_list=static-list)</longdesc>
- <shortdesc lang="en">Eg. node1,node2,node3</shortdesc>
- <content type="string" default=""/>
+ <longdesc lang="en">
+ Comma-separated list of nodes that can be targeted by this device (for example, "node1,node2,node3"). If pcmk_host_check is "static-list", either this or pcmk_host_map must be set.
+ </longdesc>
+ <shortdesc lang="en">
+ Nodes targeted by this device
+ </shortdesc>
+ <content type="string"/>
</parameter>
<parameter name="pcmk_host_check">
- <longdesc lang="en">Allowed values: dynamic-list (query the device via the &apos;list&apos; command), static-list (check the pcmk_host_list attribute), status (query the device via the &apos;status&apos; command), none (assume every device can fence every machine)</longdesc>
- <shortdesc lang="en">How to determine which machines are controlled by the device.</shortdesc>
- <content type="string" default=""/>
+ <longdesc lang="en">
+ Use "dynamic-list" to query the device via the 'list' command; "static-list" to check the pcmk_host_list attribute; "status" to query the device via the 'status' command; or "none" to assume every device can fence every node. The default value is "static-list" if pcmk_host_map or pcmk_host_list is set; otherwise "dynamic-list" if the device supports the list operation; otherwise "status" if the device supports the status operation; otherwise "none" Allowed values: dynamic-list, static-list, status, none
+ </longdesc>
+ <shortdesc lang="en">
+ How to determine which nodes can be targeted by the device
+ </shortdesc>
+ <content type="select">
+ <option value="dynamic-list"/>
+ <option value="static-list"/>
+ <option value="status"/>
+ <option value="none"/>
+ </content>
</parameter>
<parameter name="pcmk_delay_max">
- <longdesc lang="en">Enable a delay of no more than the time specified before executing fencing actions. Pacemaker derives the overall delay by taking the value of pcmk_delay_base and adding a random delay value such that the sum is kept below this maximum.</longdesc>
- <shortdesc lang="en">Enable a base delay for fencing actions and specify base delay value.</shortdesc>
+ <longdesc lang="en">
+ Enable a delay of no more than the time specified before executing fencing actions. Pacemaker derives the overall delay by taking the value of pcmk_delay_base and adding a random delay value such that the sum is kept below this maximum.
+ </longdesc>
+ <shortdesc lang="en">
+ Enable a delay of no more than the time specified before executing fencing actions.
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="pcmk_delay_base">
- <longdesc lang="en">This enables a static delay for fencing actions, which can help avoid &quot;death matches&quot; where two nodes try to fence each other at the same time. If pcmk_delay_max is also used, a random delay will be added such that the total delay is kept below that value.This can be set to a single time value to apply to any node targeted by this device (useful if a separate device is configured for each target), or to a node map (for example, &quot;node1:1s;node2:5&quot;) to set a different value per target.</longdesc>
- <shortdesc lang="en">Enable a base delay for fencing actions and specify base delay value.</shortdesc>
+ <longdesc lang="en">
+ This enables a static delay for fencing actions, which can help avoid "death matches" where two nodes try to fence each other at the same time. If pcmk_delay_max is also used, a random delay will be added such that the total delay is kept below that value. This can be set to a single time value to apply to any node targeted by this device (useful if a separate device is configured for each target), or to a node map (for example, "node1:1s;node2:5") to set a different value for each target.
+ </longdesc>
+ <shortdesc lang="en">
+ Enable a base delay for fencing actions and specify base delay value.
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_action_limit">
- <longdesc lang="en">Cluster property concurrent-fencing=true needs to be configured first.Then use this to specify the maximum number of actions can be performed in parallel on this device. -1 is unlimited.</longdesc>
- <shortdesc lang="en">The maximum number of actions can be performed in parallel on this device</shortdesc>
+ <longdesc lang="en">
+ Cluster property concurrent-fencing="true" needs to be configured first. Then use this to specify the maximum number of actions can be performed in parallel on this device. A value of -1 means an unlimited number of actions can be performed in parallel.
+ </longdesc>
+ <shortdesc lang="en">
+ The maximum number of actions can be performed in parallel on this device
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pcmk_reboot_action">
- <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones.\nUse this to specify an alternate, device-specific, command that implements the &apos;reboot&apos; action.</longdesc>
- <shortdesc lang="en">Advanced use only: An alternate command to run instead of &apos;reboot&apos;</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'reboot' action.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** An alternate command to run instead of 'reboot'
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_reboot_timeout">
- <longdesc lang="en">Some devices need much more/less time to complete than normal.Use this to specify an alternate, device-specific, timeout for &apos;reboot&apos; actions.</longdesc>
- <shortdesc lang="en">Advanced use only: Specify an alternate timeout to use for reboot actions instead of stonith-timeout</shortdesc>
+ <longdesc lang="en">
+ Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'reboot' actions.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Specify an alternate timeout to use for 'reboot' actions instead of stonith-timeout
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="pcmk_reboot_retries">
- <longdesc lang="en">Some devices do not support multiple connections. Operations may &apos;fail&apos; if the device is busy with another task so Pacemaker will automatically retry the operation, if there is time remaining. Use this option to alter the number of times Pacemaker retries &apos;reboot&apos; actions before giving up.</longdesc>
- <shortdesc lang="en">Advanced use only: The maximum number of times to retry the &apos;reboot&apos; command within the timeout period</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'reboot' action before giving up.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** The maximum number of times to try the 'reboot' command within the timeout period
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pcmk_off_action">
- <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones.Use this to specify an alternate, device-specific, command that implements the &apos;off&apos; action.</longdesc>
- <shortdesc lang="en">Advanced use only: An alternate command to run instead of &apos;off&apos;</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'off' action.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** An alternate command to run instead of 'off'
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_off_timeout">
- <longdesc lang="en">Some devices need much more/less time to complete than normal.Use this to specify an alternate, device-specific, timeout for &apos;off&apos; actions.</longdesc>
- <shortdesc lang="en">Advanced use only: Specify an alternate timeout to use for off actions instead of stonith-timeout</shortdesc>
+ <longdesc lang="en">
+ Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'off' actions.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Specify an alternate timeout to use for 'off' actions instead of stonith-timeout
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="pcmk_off_retries">
- <longdesc lang="en">Some devices do not support multiple connections. Operations may &apos;fail&apos; if the device is busy with another task so Pacemaker will automatically retry the operation, if there is time remaining. Use this option to alter the number of times Pacemaker retries &apos;off&apos; actions before giving up.</longdesc>
- <shortdesc lang="en">Advanced use only: The maximum number of times to retry the &apos;off&apos; command within the timeout period</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'off' action before giving up.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** The maximum number of times to try the 'off' command within the timeout period
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pcmk_on_action">
- <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones.Use this to specify an alternate, device-specific, command that implements the &apos;on&apos; action.</longdesc>
- <shortdesc lang="en">Advanced use only: An alternate command to run instead of &apos;on&apos;</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'on' action.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** An alternate command to run instead of 'on'
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_on_timeout">
- <longdesc lang="en">Some devices need much more/less time to complete than normal.Use this to specify an alternate, device-specific, timeout for &apos;on&apos; actions.</longdesc>
- <shortdesc lang="en">Advanced use only: Specify an alternate timeout to use for on actions instead of stonith-timeout</shortdesc>
+ <longdesc lang="en">
+ Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'on' actions.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Specify an alternate timeout to use for 'on' actions instead of stonith-timeout
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="pcmk_on_retries">
- <longdesc lang="en">Some devices do not support multiple connections. Operations may &apos;fail&apos; if the device is busy with another task so Pacemaker will automatically retry the operation, if there is time remaining. Use this option to alter the number of times Pacemaker retries &apos;on&apos; actions before giving up.</longdesc>
- <shortdesc lang="en">Advanced use only: The maximum number of times to retry the &apos;on&apos; command within the timeout period</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'on' action before giving up.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** The maximum number of times to try the 'on' command within the timeout period
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pcmk_list_action">
- <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones.Use this to specify an alternate, device-specific, command that implements the &apos;list&apos; action.</longdesc>
- <shortdesc lang="en">Advanced use only: An alternate command to run instead of &apos;list&apos;</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'list' action.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** An alternate command to run instead of 'list'
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_list_timeout">
- <longdesc lang="en">Some devices need much more/less time to complete than normal.Use this to specify an alternate, device-specific, timeout for &apos;list&apos; actions.</longdesc>
- <shortdesc lang="en">Advanced use only: Specify an alternate timeout to use for list actions instead of stonith-timeout</shortdesc>
+ <longdesc lang="en">
+ Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'list' actions.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Specify an alternate timeout to use for 'list' actions instead of stonith-timeout
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="pcmk_list_retries">
- <longdesc lang="en">Some devices do not support multiple connections. Operations may &apos;fail&apos; if the device is busy with another task so Pacemaker will automatically retry the operation, if there is time remaining. Use this option to alter the number of times Pacemaker retries &apos;list&apos; actions before giving up.</longdesc>
- <shortdesc lang="en">Advanced use only: The maximum number of times to retry the &apos;list&apos; command within the timeout period</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'list' action before giving up.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** The maximum number of times to try the 'list' command within the timeout period
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pcmk_monitor_action">
- <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones.Use this to specify an alternate, device-specific, command that implements the &apos;monitor&apos; action.</longdesc>
- <shortdesc lang="en">Advanced use only: An alternate command to run instead of &apos;monitor&apos;</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'monitor' action.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** An alternate command to run instead of 'monitor'
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_monitor_timeout">
- <longdesc lang="en">Some devices need much more/less time to complete than normal.\nUse this to specify an alternate, device-specific, timeout for &apos;monitor&apos; actions.</longdesc>
- <shortdesc lang="en">Advanced use only: Specify an alternate timeout to use for monitor actions instead of stonith-timeout</shortdesc>
+ <longdesc lang="en">
+ Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'monitor' actions.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Specify an alternate timeout to use for 'monitor' actions instead of stonith-timeout
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="pcmk_monitor_retries">
- <longdesc lang="en">Some devices do not support multiple connections. Operations may &apos;fail&apos; if the device is busy with another task so Pacemaker will automatically retry the operation, if there is time remaining. Use this option to alter the number of times Pacemaker retries &apos;monitor&apos; actions before giving up.</longdesc>
- <shortdesc lang="en">Advanced use only: The maximum number of times to retry the &apos;monitor&apos; command within the timeout period</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'monitor' action before giving up.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** The maximum number of times to try the 'monitor' command within the timeout period
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pcmk_status_action">
- <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones.Use this to specify an alternate, device-specific, command that implements the &apos;status&apos; action.</longdesc>
- <shortdesc lang="en">Advanced use only: An alternate command to run instead of &apos;status&apos;</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'status' action.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** An alternate command to run instead of 'status'
+ </shortdesc>
<content type="string" default=""/>
</parameter>
<parameter name="pcmk_status_timeout">
- <longdesc lang="en">Some devices need much more/less time to complete than normal.Use this to specify an alternate, device-specific, timeout for &apos;status&apos; actions.</longdesc>
- <shortdesc lang="en">Advanced use only: Specify an alternate timeout to use for status actions instead of stonith-timeout</shortdesc>
+ <longdesc lang="en">
+ Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'status' actions.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Specify an alternate timeout to use for 'status' actions instead of stonith-timeout
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="pcmk_status_retries">
- <longdesc lang="en">Some devices do not support multiple connections. Operations may &apos;fail&apos; if the device is busy with another task so Pacemaker will automatically retry the operation, if there is time remaining. Use this option to alter the number of times Pacemaker retries &apos;status&apos; actions before giving up.</longdesc>
- <shortdesc lang="en">Advanced use only: The maximum number of times to retry the &apos;status&apos; command within the timeout period</shortdesc>
+ <longdesc lang="en">
+ Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'status' action before giving up.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** The maximum number of times to try the 'status' command within the timeout period
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
</parameters>
@@ -268,186 +433,315 @@
=#=#=#= End test: Get fencer metadata - OK (0) =#=#=#=
* Passed: pacemaker-fenced - Get fencer metadata
=#=#=#= Begin test: Get scheduler metadata =#=#=#=
-<?xml version=""?>
<resource-agent name="pacemaker-schedulerd" version="">
- <version>1.1</version>
- <longdesc lang="en">Cluster options used by Pacemaker&apos;s scheduler</longdesc>
- <shortdesc lang="en">Pacemaker scheduler options</shortdesc>
+ <version>
+ 1.1
+ </version>
+ <longdesc lang="en">
+ Cluster options used by Pacemaker's scheduler
+ </longdesc>
+ <shortdesc lang="en">
+ Pacemaker scheduler options
+ </shortdesc>
<parameters>
<parameter name="no-quorum-policy">
- <longdesc lang="en">What to do when the cluster does not have quorum Allowed values: stop, freeze, ignore, demote, suicide</longdesc>
- <shortdesc lang="en">What to do when the cluster does not have quorum</shortdesc>
+ <longdesc lang="en">
+ What to do when the cluster does not have quorum Allowed values: stop, freeze, ignore, demote, suicide
+ </longdesc>
+ <shortdesc lang="en">
+ What to do when the cluster does not have quorum
+ </shortdesc>
<content type="select" default="">
- <option value="stop" />
- <option value="freeze" />
- <option value="ignore" />
- <option value="demote" />
- <option value="suicide" />
+ <option value="stop"/>
+ <option value="freeze"/>
+ <option value="ignore"/>
+ <option value="demote"/>
+ <option value="suicide"/>
</content>
</parameter>
+ <parameter name="shutdown-lock">
+ <longdesc lang="en">
+ When true, resources active on a node when it is cleanly shut down are kept "locked" to that node (not allowed to run elsewhere) until they start again on that node after it rejoins (or for at most shutdown-lock-limit, if set). Stonith resources and Pacemaker Remote connections are never locked. Clone and bundle instances and the promoted role of promotable clones are currently never locked, though support could be added in a future release.
+ </longdesc>
+ <shortdesc lang="en">
+ Whether to lock resources to a cleanly shut down node
+ </shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="shutdown-lock-limit">
+ <longdesc lang="en">
+ If shutdown-lock is true and this is set to a nonzero time duration, shutdown locks will expire after this much time has passed since the shutdown was initiated, even if the node has not rejoined.
+ </longdesc>
+ <shortdesc lang="en">
+ Do not lock resources to a cleanly shut down node longer than this
+ </shortdesc>
+ <content type="time" default=""/>
+ </parameter>
<parameter name="symmetric-cluster">
- <longdesc lang="en">Whether resources can run on any node by default</longdesc>
- <shortdesc lang="en">Whether resources can run on any node by default</shortdesc>
+ <longdesc lang="en">
+ Whether resources can run on any node by default
+ </longdesc>
+ <shortdesc lang="en">
+ Whether resources can run on any node by default
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="maintenance-mode">
- <longdesc lang="en">Whether the cluster should refrain from monitoring, starting, and stopping resources</longdesc>
- <shortdesc lang="en">Whether the cluster should refrain from monitoring, starting, and stopping resources</shortdesc>
+ <longdesc lang="en">
+ Whether the cluster should refrain from monitoring, starting, and stopping resources
+ </longdesc>
+ <shortdesc lang="en">
+ Whether the cluster should refrain from monitoring, starting, and stopping resources
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="start-failure-is-fatal">
- <longdesc lang="en">When true, the cluster will immediately ban a resource from a node if it fails to start there. When false, the cluster will instead check the resource&apos;s fail count against its migration-threshold.</longdesc>
- <shortdesc lang="en">Whether a start failure should prevent a resource from being recovered on the same node</shortdesc>
+ <longdesc lang="en">
+ When true, the cluster will immediately ban a resource from a node if it fails to start there. When false, the cluster will instead check the resource's fail count against its migration-threshold.
+ </longdesc>
+ <shortdesc lang="en">
+ Whether a start failure should prevent a resource from being recovered on the same node
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="enable-startup-probes">
- <longdesc lang="en">Whether the cluster should check for active resources during start-up</longdesc>
- <shortdesc lang="en">Whether the cluster should check for active resources during start-up</shortdesc>
+ <longdesc lang="en">
+ Whether the cluster should check for active resources during start-up
+ </longdesc>
+ <shortdesc lang="en">
+ Whether the cluster should check for active resources during start-up
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
- <parameter name="shutdown-lock">
- <longdesc lang="en">When true, resources active on a node when it is cleanly shut down are kept &quot;locked&quot; to that node (not allowed to run elsewhere) until they start again on that node after it rejoins (or for at most shutdown-lock-limit, if set). Stonith resources and Pacemaker Remote connections are never locked. Clone and bundle instances and the promoted role of promotable clones are currently never locked, though support could be added in a future release.</longdesc>
- <shortdesc lang="en">Whether to lock resources to a cleanly shut down node</shortdesc>
- <content type="boolean" default=""/>
- </parameter>
- <parameter name="shutdown-lock-limit">
- <longdesc lang="en">If shutdown-lock is true and this is set to a nonzero time duration, shutdown locks will expire after this much time has passed since the shutdown was initiated, even if the node has not rejoined.</longdesc>
- <shortdesc lang="en">Do not lock resources to a cleanly shut down node longer than this</shortdesc>
- <content type="time" default=""/>
- </parameter>
<parameter name="stonith-enabled">
- <longdesc lang="en">If false, unresponsive nodes are immediately assumed to be harmless, and resources that were active on them may be recovered elsewhere. This can result in a &quot;split-brain&quot; situation, potentially leading to data loss and/or service unavailability.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only *** Whether nodes may be fenced as part of recovery</shortdesc>
+ <longdesc lang="en">
+ If false, unresponsive nodes are immediately assumed to be harmless, and resources that were active on them may be recovered elsewhere. This can result in a "split-brain" situation, potentially leading to data loss and/or service unavailability.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Whether nodes may be fenced as part of recovery
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="stonith-action">
- <longdesc lang="en">Action to send to fence device when a node needs to be fenced (&quot;poweroff&quot; is a deprecated alias for &quot;off&quot;) Allowed values: reboot, off, poweroff</longdesc>
- <shortdesc lang="en">Action to send to fence device when a node needs to be fenced (&quot;poweroff&quot; is a deprecated alias for &quot;off&quot;)</shortdesc>
+ <longdesc lang="en">
+ Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off") Allowed values: reboot, off, poweroff
+ </longdesc>
+ <shortdesc lang="en">
+ Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off")
+ </shortdesc>
<content type="select" default="">
- <option value="reboot" />
- <option value="off" />
- <option value="poweroff" />
+ <option value="reboot"/>
+ <option value="off"/>
+ <option value="poweroff"/>
</content>
</parameter>
<parameter name="stonith-timeout">
- <longdesc lang="en">This value is not used by Pacemaker, but is kept for backward compatibility, and certain legacy fence agents might use it.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only *** Unused by Pacemaker</shortdesc>
+ <longdesc lang="en">
+ How long to wait for on, off, and reboot fence actions to complete by default
+ </longdesc>
+ <shortdesc lang="en">
+ How long to wait for on, off, and reboot fence actions to complete by default
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="have-watchdog">
- <longdesc lang="en">This is set automatically by the cluster according to whether SBD is detected to be in use. User-configured values are ignored. The value `true` is meaningful if diskless SBD is used and `stonith-watchdog-timeout` is nonzero. In that case, if fencing is required, watchdog-based self-fencing will be performed via SBD without requiring a fencing resource explicitly configured.</longdesc>
- <shortdesc lang="en">Whether watchdog integration is enabled</shortdesc>
+ <longdesc lang="en">
+ This is set automatically by the cluster according to whether SBD is detected to be in use. User-configured values are ignored. The value `true` is meaningful if diskless SBD is used and `stonith-watchdog-timeout` is nonzero. In that case, if fencing is required, watchdog-based self-fencing will be performed via SBD without requiring a fencing resource explicitly configured.
+ </longdesc>
+ <shortdesc lang="en">
+ Whether watchdog integration is enabled
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="concurrent-fencing">
- <longdesc lang="en">Allow performing fencing operations in parallel</longdesc>
- <shortdesc lang="en">Allow performing fencing operations in parallel</shortdesc>
+ <longdesc lang="en">
+ Allow performing fencing operations in parallel
+ </longdesc>
+ <shortdesc lang="en">
+ Allow performing fencing operations in parallel
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="startup-fencing">
- <longdesc lang="en">Setting this to false may lead to a &quot;split-brain&quot; situation,potentially leading to data loss and/or service unavailability.</longdesc>
- <shortdesc lang="en">*** Advanced Use Only *** Whether to fence unseen nodes at start-up</shortdesc>
+ <longdesc lang="en">
+ Setting this to false may lead to a "split-brain" situation, potentially leading to data loss and/or service unavailability.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Advanced Use Only *** Whether to fence unseen nodes at start-up
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="priority-fencing-delay">
- <longdesc lang="en">Apply specified delay for the fencings that are targeting the lost nodes with the highest total resource priority in case we don&apos;t have the majority of the nodes in our cluster partition, so that the more significant nodes potentially win any fencing match, which is especially meaningful under split-brain of 2-node cluster. A promoted resource instance takes the base priority + 1 on calculation if the base priority is not 0. Any static/random delays that are introduced by `pcmk_delay_base/max` configured for the corresponding fencing resources will be added to this delay. This delay should be significantly greater than, safely twice, the maximum `pcmk_delay_base/max`. By default, priority fencing delay is disabled.</longdesc>
- <shortdesc lang="en">Apply fencing delay targeting the lost nodes with the highest total resource priority</shortdesc>
+ <longdesc lang="en">
+ Apply specified delay for the fencings that are targeting the lost nodes with the highest total resource priority in case we don't have the majority of the nodes in our cluster partition, so that the more significant nodes potentially win any fencing match, which is especially meaningful under split-brain of 2-node cluster. A promoted resource instance takes the base priority + 1 on calculation if the base priority is not 0. Any static/random delays that are introduced by `pcmk_delay_base/max` configured for the corresponding fencing resources will be added to this delay. This delay should be significantly greater than, safely twice, the maximum `pcmk_delay_base/max`. By default, priority fencing delay is disabled.
+ </longdesc>
+ <shortdesc lang="en">
+ Apply fencing delay targeting the lost nodes with the highest total resource priority
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="node-pending-timeout">
- <longdesc lang="en">Fence nodes that do not join the controller process group within this much time after joining the cluster, to allow the cluster to continue managing resources. A value of 0 means never fence pending nodes. Setting the value to 2h means fence nodes after 2 hours.</longdesc>
- <shortdesc lang="en">How long to wait for a node that has joined the cluster to join the controller process group</shortdesc>
+ <longdesc lang="en">
+ Fence nodes that do not join the controller process group within this much time after joining the cluster, to allow the cluster to continue managing resources. A value of 0 means never fence pending nodes. Setting the value to 2h means fence nodes after 2 hours.
+ </longdesc>
+ <shortdesc lang="en">
+ How long to wait for a node that has joined the cluster to join the controller process group
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="cluster-delay">
- <longdesc lang="en">The node elected Designated Controller (DC) will consider an action failed if it does not get a response from the node executing the action within this time (after considering the action&apos;s own timeout). The &quot;correct&quot; value will depend on the speed and load of your network and cluster nodes.</longdesc>
- <shortdesc lang="en">Maximum time for node-to-node communication</shortdesc>
+ <longdesc lang="en">
+ The node elected Designated Controller (DC) will consider an action failed if it does not get a response from the node executing the action within this time (after considering the action's own timeout). The "correct" value will depend on the speed and load of your network and cluster nodes.
+ </longdesc>
+ <shortdesc lang="en">
+ Maximum time for node-to-node communication
+ </shortdesc>
<content type="time" default=""/>
</parameter>
<parameter name="batch-limit">
- <longdesc lang="en">The &quot;correct&quot; value will depend on the speed and load of your network and cluster nodes. If set to 0, the cluster will impose a dynamically calculated limit when any node has a high load.</longdesc>
- <shortdesc lang="en">Maximum number of jobs that the cluster may execute in parallel across all nodes</shortdesc>
+ <longdesc lang="en">
+ The "correct" value will depend on the speed and load of your network and cluster nodes. If set to 0, the cluster will impose a dynamically calculated limit when any node has a high load.
+ </longdesc>
+ <shortdesc lang="en">
+ Maximum number of jobs that the cluster may execute in parallel across all nodes
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="migration-limit">
- <longdesc lang="en">The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)</longdesc>
- <shortdesc lang="en">The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)</shortdesc>
+ <longdesc lang="en">
+ The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)
+ </longdesc>
+ <shortdesc lang="en">
+ The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="stop-all-resources">
- <longdesc lang="en">Whether the cluster should stop all active resources</longdesc>
- <shortdesc lang="en">Whether the cluster should stop all active resources</shortdesc>
+ <longdesc lang="en">
+ Whether the cluster should stop all active resources
+ </longdesc>
+ <shortdesc lang="en">
+ Whether the cluster should stop all active resources
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="stop-orphan-resources">
- <longdesc lang="en">Whether to stop resources that were removed from the configuration</longdesc>
- <shortdesc lang="en">Whether to stop resources that were removed from the configuration</shortdesc>
+ <longdesc lang="en">
+ Whether to stop resources that were removed from the configuration
+ </longdesc>
+ <shortdesc lang="en">
+ Whether to stop resources that were removed from the configuration
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="stop-orphan-actions">
- <longdesc lang="en">Whether to cancel recurring actions removed from the configuration</longdesc>
- <shortdesc lang="en">Whether to cancel recurring actions removed from the configuration</shortdesc>
+ <longdesc lang="en">
+ Whether to cancel recurring actions removed from the configuration
+ </longdesc>
+ <shortdesc lang="en">
+ Whether to cancel recurring actions removed from the configuration
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="remove-after-stop">
- <longdesc lang="en">Values other than default are poorly tested and potentially dangerous. This option will be removed in a future release.</longdesc>
- <shortdesc lang="en">*** Deprecated *** Whether to remove stopped resources from the executor</shortdesc>
+ <longdesc lang="en">
+ Values other than default are poorly tested and potentially dangerous.
+ </longdesc>
+ <shortdesc lang="en">
+ *** Deprecated *** Whether to remove stopped resources from the executor
+ </shortdesc>
<content type="boolean" default=""/>
</parameter>
<parameter name="pe-error-series-max">
- <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
- <shortdesc lang="en">The number of scheduler inputs resulting in errors to save</shortdesc>
+ <longdesc lang="en">
+ Zero to disable, -1 to store unlimited.
+ </longdesc>
+ <shortdesc lang="en">
+ The number of scheduler inputs resulting in errors to save
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pe-warn-series-max">
- <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
- <shortdesc lang="en">The number of scheduler inputs resulting in warnings to save</shortdesc>
+ <longdesc lang="en">
+ Zero to disable, -1 to store unlimited.
+ </longdesc>
+ <shortdesc lang="en">
+ The number of scheduler inputs resulting in warnings to save
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="pe-input-series-max">
- <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
- <shortdesc lang="en">The number of scheduler inputs without errors or warnings to save</shortdesc>
+ <longdesc lang="en">
+ Zero to disable, -1 to store unlimited.
+ </longdesc>
+ <shortdesc lang="en">
+ The number of scheduler inputs without errors or warnings to save
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="node-health-strategy">
- <longdesc lang="en">Requires external entities to create node attributes (named with the prefix &quot;#health&quot;) with values &quot;red&quot;, &quot;yellow&quot;, or &quot;green&quot;. Allowed values: none, migrate-on-red, only-green, progressive, custom</longdesc>
- <shortdesc lang="en">How cluster should react to node health attributes</shortdesc>
+ <longdesc lang="en">
+ Requires external entities to create node attributes (named with the prefix "#health") with values "red", "yellow", or "green". Allowed values: none, migrate-on-red, only-green, progressive, custom
+ </longdesc>
+ <shortdesc lang="en">
+ How cluster should react to node health attributes
+ </shortdesc>
<content type="select" default="">
- <option value="none" />
- <option value="migrate-on-red" />
- <option value="only-green" />
- <option value="progressive" />
- <option value="custom" />
+ <option value="none"/>
+ <option value="migrate-on-red"/>
+ <option value="only-green"/>
+ <option value="progressive"/>
+ <option value="custom"/>
</content>
</parameter>
<parameter name="node-health-base">
- <longdesc lang="en">Only used when &quot;node-health-strategy&quot; is set to &quot;progressive&quot;.</longdesc>
- <shortdesc lang="en">Base health score assigned to a node</shortdesc>
+ <longdesc lang="en">
+ Only used when "node-health-strategy" is set to "progressive".
+ </longdesc>
+ <shortdesc lang="en">
+ Base health score assigned to a node
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="node-health-green">
- <longdesc lang="en">Only used when &quot;node-health-strategy&quot; is set to &quot;custom&quot; or &quot;progressive&quot;.</longdesc>
- <shortdesc lang="en">The score to use for a node health attribute whose value is &quot;green&quot;</shortdesc>
+ <longdesc lang="en">
+ Only used when "node-health-strategy" is set to "custom" or "progressive".
+ </longdesc>
+ <shortdesc lang="en">
+ The score to use for a node health attribute whose value is "green"
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="node-health-yellow">
- <longdesc lang="en">Only used when &quot;node-health-strategy&quot; is set to &quot;custom&quot; or &quot;progressive&quot;.</longdesc>
- <shortdesc lang="en">The score to use for a node health attribute whose value is &quot;yellow&quot;</shortdesc>
+ <longdesc lang="en">
+ Only used when "node-health-strategy" is set to "custom" or "progressive".
+ </longdesc>
+ <shortdesc lang="en">
+ The score to use for a node health attribute whose value is "yellow"
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="node-health-red">
- <longdesc lang="en">Only used when &quot;node-health-strategy&quot; is set to &quot;custom&quot; or &quot;progressive&quot;.</longdesc>
- <shortdesc lang="en">The score to use for a node health attribute whose value is &quot;red&quot;</shortdesc>
+ <longdesc lang="en">
+ Only used when "node-health-strategy" is set to "custom" or "progressive".
+ </longdesc>
+ <shortdesc lang="en">
+ The score to use for a node health attribute whose value is "red"
+ </shortdesc>
<content type="integer" default=""/>
</parameter>
<parameter name="placement-strategy">
- <longdesc lang="en">How the cluster should allocate resources to nodes Allowed values: default, utilization, minimal, balanced</longdesc>
- <shortdesc lang="en">How the cluster should allocate resources to nodes</shortdesc>
+ <longdesc lang="en">
+ How the cluster should allocate resources to nodes Allowed values: default, utilization, minimal, balanced
+ </longdesc>
+ <shortdesc lang="en">
+ How the cluster should allocate resources to nodes
+ </shortdesc>
<content type="select" default="">
- <option value="default" />
- <option value="utilization" />
- <option value="minimal" />
- <option value="balanced" />
+ <option value="default"/>
+ <option value="utilization"/>
+ <option value="minimal"/>
+ <option value="balanced"/>
</content>
</parameter>
</parameters>
diff --git a/cts/cli/regression.rules.exp b/cts/cli/regression.rules.exp
index cdfb5d1..a439773 100644
--- a/cts/cli/regression.rules.exp
+++ b/cts/cli/regression.rules.exp
@@ -37,7 +37,6 @@ log_xmllib_err error: XML Error: Entity: line 1: parser error : Start tag expec
log_xmllib_err error: XML Error: invalidxml
log_xmllib_err error: XML Error: ^
crm_rule: Couldn't parse input string: invalidxml
-
=#=#=#= End test: crm_rule given invalid input XML - Invalid data given (65) =#=#=#=
* Passed: crm_rule - crm_rule given invalid input XML
=#=#=#= Begin test: crm_rule given invalid input XML (XML) =#=#=#=
@@ -50,8 +49,7 @@ log_xmllib_err error: XML Error: ^
<pacemaker-result api-version="X" request="crm_rule -c -r blahblah -X invalidxml --output-as=xml">
<status code="65" message="Invalid data given">
<errors>
- <error>crm_rule: Couldn't parse input string: invalidxml
-</error>
+ <error>crm_rule: Couldn't parse input string: invalidxml</error>
</errors>
</status>
</pacemaker-result>
@@ -65,7 +63,6 @@ log_xmllib_err error: XML Error: Entity: line 1: parser error : Start tag expec
log_xmllib_err error: XML Error: invalidxml
log_xmllib_err error: XML Error: ^
crm_rule: Couldn't parse input from STDIN
-
=#=#=#= End test: crm_rule given invalid input XML on stdin - Invalid data given (65) =#=#=#=
* Passed: echo - crm_rule given invalid input XML on stdin
=#=#=#= Begin test: crm_rule given invalid input XML on stdin (XML) =#=#=#=
@@ -78,8 +75,7 @@ log_xmllib_err error: XML Error: ^
<pacemaker-result api-version="X" request="crm_rule -c -r blahblah -X - --output-as=xml">
<status code="65" message="Invalid data given">
<errors>
- <error>crm_rule: Couldn't parse input from STDIN
-</error>
+ <error>crm_rule: Couldn't parse input from STDIN</error>
</errors>
</status>
</pacemaker-result>
diff --git a/cts/cli/regression.tools.exp b/cts/cli/regression.tools.exp
index accf781..6eef178 100644
--- a/cts/cli/regression.tools.exp
+++ b/cts/cli/regression.tools.exp
@@ -23,6 +23,910 @@ A new shadow instance was created. To begin using it, enter the following into y
</cib>
=#=#=#= End test: Validate CIB - OK (0) =#=#=#=
* Passed: cibadmin - Validate CIB
+=#=#=#= Begin test: List all available options (invalid type) =#=#=#=
+crm_attribute: Invalid --list-options value 'asdf'. Allowed values: cluster
+=#=#=#= End test: List all available options (invalid type) - Incorrect usage (64) =#=#=#=
+* Passed: crm_attribute - List all available options (invalid type)
+=#=#=#= Begin test: List all available options (invalid type) (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_attribute --list-options=asdf --output-as=xml">
+ <status code="64" message="Incorrect usage">
+ <errors>
+ <error>crm_attribute: Invalid --list-options value 'asdf'. Allowed values: cluster</error>
+ </errors>
+ </status>
+</pacemaker-result>
+=#=#=#= End test: List all available options (invalid type) (XML) - Incorrect usage (64) =#=#=#=
+* Passed: crm_attribute - List all available options (invalid type) (XML)
+=#=#=#= Begin test: List non-advanced cluster options =#=#=#=
+Pacemaker cluster options
+
+Also known as properties, these are options that affect behavior across the entire cluster. They are configured within cluster_property_set elements inside the crm_config subsection of the CIB configuration section.
+
+ * dc-version: Pacemaker version on cluster node elected Designated Controller (DC)
+ * Includes a hash which identifies the exact revision the code was built from. Used for diagnostic purposes.
+ * Possible values (generated by Pacemaker): version (no default)
+
+ * cluster-infrastructure: The messaging layer on which Pacemaker is currently running
+ * Used for informational and diagnostic purposes.
+ * Possible values (generated by Pacemaker): string (no default)
+
+ * cluster-name: An arbitrary name for the cluster
+ * This optional value is mostly for users' convenience as desired in administration, but may also be used in Pacemaker configuration rules via the #cluster-name node attribute, and by higher-level tools and resource agents.
+ * Possible values: string (no default)
+
+ * dc-deadtime: How long to wait for a response from other nodes during start-up
+ * The optimal value will depend on the speed and load of your network and the type of switches used.
+ * Possible values: duration (default: )
+
+ * cluster-recheck-interval: Polling interval to recheck cluster state and evaluate rules with date specifications
+ * Pacemaker is primarily event-driven, and looks ahead to know when to recheck cluster state for failure-timeout settings and most time-based rules. However, it will also recheck the cluster after this amount of inactivity, to evaluate rules with date specifications and serve as a fail-safe for certain types of scheduler bugs. A value of 0 disables polling. A positive value sets an interval in seconds, unless other units are specified (for example, "5min").
+ * Possible values: duration (default: )
+
+ * fence-reaction: How a cluster node should react if notified of its own fencing
+ * A cluster node may receive notification of a "succeeded" fencing that targeted it if fencing is misconfigured, or if fabric fencing is in use that doesn't cut cluster communication. Use "stop" to attempt to immediately stop Pacemaker and stay stopped, or "panic" to attempt to immediately reboot the local node, falling back to stop on failure.
+ * Possible values: "stop" (default), "panic"
+
+ * no-quorum-policy: What to do when the cluster does not have quorum
+ * Possible values: "stop" (default), "freeze", "ignore", "demote", "suicide"
+
+ * shutdown-lock: Whether to lock resources to a cleanly shut down node
+ * When true, resources active on a node when it is cleanly shut down are kept "locked" to that node (not allowed to run elsewhere) until they start again on that node after it rejoins (or for at most shutdown-lock-limit, if set). Stonith resources and Pacemaker Remote connections are never locked. Clone and bundle instances and the promoted role of promotable clones are currently never locked, though support could be added in a future release.
+ * Possible values: boolean (default: )
+
+ * shutdown-lock-limit: Do not lock resources to a cleanly shut down node longer than this
+ * If shutdown-lock is true and this is set to a nonzero time duration, shutdown locks will expire after this much time has passed since the shutdown was initiated, even if the node has not rejoined.
+ * Possible values: duration (default: )
+
+ * enable-acl: Enable Access Control Lists (ACLs) for the CIB
+ * Possible values: boolean (default: )
+
+ * symmetric-cluster: Whether resources can run on any node by default
+ * Possible values: boolean (default: )
+
+ * maintenance-mode: Whether the cluster should refrain from monitoring, starting, and stopping resources
+ * Possible values: boolean (default: )
+
+ * start-failure-is-fatal: Whether a start failure should prevent a resource from being recovered on the same node
+ * When true, the cluster will immediately ban a resource from a node if it fails to start there. When false, the cluster will instead check the resource's fail count against its migration-threshold.
+ * Possible values: boolean (default: )
+
+ * enable-startup-probes: Whether the cluster should check for active resources during start-up
+ * Possible values: boolean (default: )
+
+ * stonith-action: Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off")
+ * Possible values: "reboot" (default), "off", "poweroff"
+
+ * stonith-timeout: How long to wait for on, off, and reboot fence actions to complete by default
+ * Possible values: duration (default: )
+
+ * have-watchdog: Whether watchdog integration is enabled
+ * This is set automatically by the cluster according to whether SBD is detected to be in use. User-configured values are ignored. The value `true` is meaningful if diskless SBD is used and `stonith-watchdog-timeout` is nonzero. In that case, if fencing is required, watchdog-based self-fencing will be performed via SBD without requiring a fencing resource explicitly configured.
+ * Possible values (generated by Pacemaker): boolean (default: )
+
+ * stonith-watchdog-timeout: How long before nodes can be assumed to be safely down when watchdog-based self-fencing via SBD is in use
+ * If this is set to a positive value, lost nodes are assumed to achieve self-fencing using watchdog-based SBD within this much time. This does not require a fencing resource to be explicitly configured, though a fence_watchdog resource can be configured, to limit use to specific nodes. If this is set to 0 (the default), the cluster will never assume watchdog-based self-fencing. If this is set to a negative value, the cluster will use twice the local value of the `SBD_WATCHDOG_TIMEOUT` environment variable if that is positive, or otherwise treat this as 0. WARNING: When used, this timeout must be larger than `SBD_WATCHDOG_TIMEOUT` on all nodes that use watchdog-based SBD, and Pacemaker will refuse to start on any of those nodes where this is not true for the local value or SBD is not active. When this is set to a negative value, `SBD_WATCHDOG_TIMEOUT` must be set to the same value on all nodes that use SBD, otherwise data corruption or loss could occur.
+ * Possible values: timeout (default: )
+
+ * stonith-max-attempts: How many times fencing can fail before it will no longer be immediately re-attempted on a target
+ * Possible values: score (default: )
+
+ * concurrent-fencing: Allow performing fencing operations in parallel
+ * Possible values: boolean (default: )
+
+ * priority-fencing-delay: Apply fencing delay targeting the lost nodes with the highest total resource priority
+ * Apply specified delay for the fencings that are targeting the lost nodes with the highest total resource priority in case we don't have the majority of the nodes in our cluster partition, so that the more significant nodes potentially win any fencing match, which is especially meaningful under split-brain of 2-node cluster. A promoted resource instance takes the base priority + 1 on calculation if the base priority is not 0. Any static/random delays that are introduced by `pcmk_delay_base/max` configured for the corresponding fencing resources will be added to this delay. This delay should be significantly greater than, safely twice, the maximum `pcmk_delay_base/max`. By default, priority fencing delay is disabled.
+ * Possible values: duration (default: )
+
+ * node-pending-timeout: How long to wait for a node that has joined the cluster to join the controller process group
+ * Fence nodes that do not join the controller process group within this much time after joining the cluster, to allow the cluster to continue managing resources. A value of 0 means never fence pending nodes. Setting the value to 2h means fence nodes after 2 hours.
+ * Possible values: duration (default: )
+
+ * cluster-delay: Maximum time for node-to-node communication
+ * The node elected Designated Controller (DC) will consider an action failed if it does not get a response from the node executing the action within this time (after considering the action's own timeout). The "correct" value will depend on the speed and load of your network and cluster nodes.
+ * Possible values: duration (default: )
+
+ * load-threshold: Maximum amount of system load that should be used by cluster nodes
+ * The cluster will slow down its recovery process when the amount of system resources used (currently CPU) approaches this limit
+ * Possible values: percentage (default: )
+
+ * node-action-limit: Maximum number of jobs that can be scheduled per node (defaults to 2x cores)
+ * Possible values: integer (default: )
+
+ * batch-limit: Maximum number of jobs that the cluster may execute in parallel across all nodes
+ * The "correct" value will depend on the speed and load of your network and cluster nodes. If set to 0, the cluster will impose a dynamically calculated limit when any node has a high load.
+ * Possible values: integer (default: )
+
+ * migration-limit: The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)
+ * Possible values: integer (default: )
+
+ * cluster-ipc-limit: Maximum IPC message backlog before disconnecting a cluster daemon
+ * Raise this if log has "Evicting client" messages for cluster daemon PIDs (a good value is the number of resources in the cluster multiplied by the number of nodes).
+ * Possible values: nonnegative_integer (default: )
+
+ * stop-all-resources: Whether the cluster should stop all active resources
+ * Possible values: boolean (default: )
+
+ * stop-orphan-resources: Whether to stop resources that were removed from the configuration
+ * Possible values: boolean (default: )
+
+ * stop-orphan-actions: Whether to cancel recurring actions removed from the configuration
+ * Possible values: boolean (default: )
+
+ * pe-error-series-max: The number of scheduler inputs resulting in errors to save
+ * Zero to disable, -1 to store unlimited.
+ * Possible values: integer (default: )
+
+ * pe-warn-series-max: The number of scheduler inputs resulting in warnings to save
+ * Zero to disable, -1 to store unlimited.
+ * Possible values: integer (default: )
+
+ * pe-input-series-max: The number of scheduler inputs without errors or warnings to save
+ * Zero to disable, -1 to store unlimited.
+ * Possible values: integer (default: )
+
+ * node-health-strategy: How cluster should react to node health attributes
+ * Requires external entities to create node attributes (named with the prefix "#health") with values "red", "yellow", or "green".
+ * Possible values: "none" (default), "migrate-on-red", "only-green", "progressive", "custom"
+
+ * node-health-base: Base health score assigned to a node
+ * Only used when "node-health-strategy" is set to "progressive".
+ * Possible values: score (default: )
+
+ * node-health-green: The score to use for a node health attribute whose value is "green"
+ * Only used when "node-health-strategy" is set to "custom" or "progressive".
+ * Possible values: score (default: )
+
+ * node-health-yellow: The score to use for a node health attribute whose value is "yellow"
+ * Only used when "node-health-strategy" is set to "custom" or "progressive".
+ * Possible values: score (default: )
+
+ * node-health-red: The score to use for a node health attribute whose value is "red"
+ * Only used when "node-health-strategy" is set to "custom" or "progressive".
+ * Possible values: score (default: )
+
+ * placement-strategy: How the cluster should allocate resources to nodes
+ * Possible values: "default" (default), "utilization", "minimal", "balanced"
+=#=#=#= End test: List non-advanced cluster options - OK (0) =#=#=#=
+* Passed: crm_attribute - List non-advanced cluster options
+=#=#=#= Begin test: List non-advanced cluster options (XML) (shows all) =#=#=#=
+<pacemaker-result api-version="X" request="crm_attribute --list-options=cluster --output-as=xml">
+ <resource-agent name="cluster-options" version="">
+ <version>1.1</version>
+ <longdesc lang="en">Also known as properties, these are options that affect behavior across the entire cluster. They are configured within cluster_property_set elements inside the crm_config subsection of the CIB configuration section.</longdesc>
+ <shortdesc lang="en">Pacemaker cluster options</shortdesc>
+ <parameters>
+ <parameter name="dc-version" advanced="0" generated="1">
+ <longdesc lang="en">Includes a hash which identifies the exact revision the code was built from. Used for diagnostic purposes.</longdesc>
+ <shortdesc lang="en">Pacemaker version on cluster node elected Designated Controller (DC)</shortdesc>
+ <content type="version"/>
+ </parameter>
+ <parameter name="cluster-infrastructure" advanced="0" generated="1">
+ <longdesc lang="en">Used for informational and diagnostic purposes.</longdesc>
+ <shortdesc lang="en">The messaging layer on which Pacemaker is currently running</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="cluster-name" advanced="0" generated="0">
+ <longdesc lang="en">This optional value is mostly for users' convenience as desired in administration, but may also be used in Pacemaker configuration rules via the #cluster-name node attribute, and by higher-level tools and resource agents.</longdesc>
+ <shortdesc lang="en">An arbitrary name for the cluster</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="dc-deadtime" advanced="0" generated="0">
+ <longdesc lang="en">The optimal value will depend on the speed and load of your network and the type of switches used.</longdesc>
+ <shortdesc lang="en">How long to wait for a response from other nodes during start-up</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="cluster-recheck-interval" advanced="0" generated="0">
+ <longdesc lang="en">Pacemaker is primarily event-driven, and looks ahead to know when to recheck cluster state for failure-timeout settings and most time-based rules. However, it will also recheck the cluster after this amount of inactivity, to evaluate rules with date specifications and serve as a fail-safe for certain types of scheduler bugs. A value of 0 disables polling. A positive value sets an interval in seconds, unless other units are specified (for example, "5min").</longdesc>
+ <shortdesc lang="en">Polling interval to recheck cluster state and evaluate rules with date specifications</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="fence-reaction" advanced="0" generated="0">
+ <longdesc lang="en">A cluster node may receive notification of a "succeeded" fencing that targeted it if fencing is misconfigured, or if fabric fencing is in use that doesn't cut cluster communication. Use "stop" to attempt to immediately stop Pacemaker and stay stopped, or "panic" to attempt to immediately reboot the local node, falling back to stop on failure.</longdesc>
+ <shortdesc lang="en">How a cluster node should react if notified of its own fencing</shortdesc>
+ <content type="select" default="">
+ <option value="stop"/>
+ <option value="panic"/>
+ </content>
+ </parameter>
+ <parameter name="election-timeout" advanced="1" generated="0">
+ <longdesc lang="en">Declare an election failed if it is not decided within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">Declare an election failed if it is not decided within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="shutdown-escalation" advanced="1" generated="0">
+ <longdesc lang="en">Exit immediately if shutdown does not complete within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">Exit immediately if shutdown does not complete within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="join-integration-timeout" advanced="1" generated="0">
+ <longdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="join-finalization-timeout" advanced="1" generated="0">
+ <longdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="transition-delay" advanced="1" generated="0">
+ <longdesc lang="en">Delay cluster recovery for this much time to allow for additional events to occur. Useful if your configuration is sensitive to the order in which ping updates arrive.</longdesc>
+ <shortdesc lang="en">Enabling this option will slow down cluster recovery under all conditions</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="no-quorum-policy" advanced="0" generated="0">
+ <longdesc lang="en">What to do when the cluster does not have quorum</longdesc>
+ <shortdesc lang="en">What to do when the cluster does not have quorum</shortdesc>
+ <content type="select" default="">
+ <option value="stop"/>
+ <option value="freeze"/>
+ <option value="ignore"/>
+ <option value="demote"/>
+ <option value="suicide"/>
+ </content>
+ </parameter>
+ <parameter name="shutdown-lock" advanced="0" generated="0">
+ <longdesc lang="en">When true, resources active on a node when it is cleanly shut down are kept "locked" to that node (not allowed to run elsewhere) until they start again on that node after it rejoins (or for at most shutdown-lock-limit, if set). Stonith resources and Pacemaker Remote connections are never locked. Clone and bundle instances and the promoted role of promotable clones are currently never locked, though support could be added in a future release.</longdesc>
+ <shortdesc lang="en">Whether to lock resources to a cleanly shut down node</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="shutdown-lock-limit" advanced="0" generated="0">
+ <longdesc lang="en">If shutdown-lock is true and this is set to a nonzero time duration, shutdown locks will expire after this much time has passed since the shutdown was initiated, even if the node has not rejoined.</longdesc>
+ <shortdesc lang="en">Do not lock resources to a cleanly shut down node longer than this</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="enable-acl" advanced="0" generated="0">
+ <longdesc lang="en">Enable Access Control Lists (ACLs) for the CIB</longdesc>
+ <shortdesc lang="en">Enable Access Control Lists (ACLs) for the CIB</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="symmetric-cluster" advanced="0" generated="0">
+ <longdesc lang="en">Whether resources can run on any node by default</longdesc>
+ <shortdesc lang="en">Whether resources can run on any node by default</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="maintenance-mode" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should refrain from monitoring, starting, and stopping resources</longdesc>
+ <shortdesc lang="en">Whether the cluster should refrain from monitoring, starting, and stopping resources</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="start-failure-is-fatal" advanced="0" generated="0">
+ <longdesc lang="en">When true, the cluster will immediately ban a resource from a node if it fails to start there. When false, the cluster will instead check the resource's fail count against its migration-threshold.</longdesc>
+ <shortdesc lang="en">Whether a start failure should prevent a resource from being recovered on the same node</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="enable-startup-probes" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should check for active resources during start-up</longdesc>
+ <shortdesc lang="en">Whether the cluster should check for active resources during start-up</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stonith-enabled" advanced="1" generated="0">
+ <longdesc lang="en">If false, unresponsive nodes are immediately assumed to be harmless, and resources that were active on them may be recovered elsewhere. This can result in a "split-brain" situation, potentially leading to data loss and/or service unavailability.</longdesc>
+ <shortdesc lang="en">Whether nodes may be fenced as part of recovery</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stonith-action" advanced="0" generated="0">
+ <longdesc lang="en">Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off")</longdesc>
+ <shortdesc lang="en">Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off")</shortdesc>
+ <content type="select" default="">
+ <option value="reboot"/>
+ <option value="off"/>
+ <option value="poweroff"/>
+ </content>
+ </parameter>
+ <parameter name="stonith-timeout" advanced="0" generated="0">
+ <longdesc lang="en">How long to wait for on, off, and reboot fence actions to complete by default</longdesc>
+ <shortdesc lang="en">How long to wait for on, off, and reboot fence actions to complete by default</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="have-watchdog" advanced="0" generated="1">
+ <longdesc lang="en">This is set automatically by the cluster according to whether SBD is detected to be in use. User-configured values are ignored. The value `true` is meaningful if diskless SBD is used and `stonith-watchdog-timeout` is nonzero. In that case, if fencing is required, watchdog-based self-fencing will be performed via SBD without requiring a fencing resource explicitly configured.</longdesc>
+ <shortdesc lang="en">Whether watchdog integration is enabled</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stonith-watchdog-timeout" advanced="0" generated="0">
+ <longdesc lang="en">If this is set to a positive value, lost nodes are assumed to achieve self-fencing using watchdog-based SBD within this much time. This does not require a fencing resource to be explicitly configured, though a fence_watchdog resource can be configured, to limit use to specific nodes. If this is set to 0 (the default), the cluster will never assume watchdog-based self-fencing. If this is set to a negative value, the cluster will use twice the local value of the `SBD_WATCHDOG_TIMEOUT` environment variable if that is positive, or otherwise treat this as 0. WARNING: When used, this timeout must be larger than `SBD_WATCHDOG_TIMEOUT` on all nodes that use watchdog-based SBD, and Pacemaker will refuse to start on any of those nodes where this is not true for the local value or SBD is not active. When this is set to a negative value, `SBD_WATCHDOG_TIMEOUT` must be set to the same value on all nodes that use SBD, otherwise data corruption or loss could occur.</longdesc>
+ <shortdesc lang="en">How long before nodes can be assumed to be safely down when watchdog-based self-fencing via SBD is in use</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="stonith-max-attempts" advanced="0" generated="0">
+ <longdesc lang="en">How many times fencing can fail before it will no longer be immediately re-attempted on a target</longdesc>
+ <shortdesc lang="en">How many times fencing can fail before it will no longer be immediately re-attempted on a target</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="concurrent-fencing" advanced="0" generated="0">
+ <longdesc lang="en">Allow performing fencing operations in parallel</longdesc>
+ <shortdesc lang="en">Allow performing fencing operations in parallel</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="startup-fencing" advanced="1" generated="0">
+ <longdesc lang="en">Setting this to false may lead to a "split-brain" situation, potentially leading to data loss and/or service unavailability.</longdesc>
+ <shortdesc lang="en">Whether to fence unseen nodes at start-up</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="priority-fencing-delay" advanced="0" generated="0">
+ <longdesc lang="en">Apply specified delay for the fencings that are targeting the lost nodes with the highest total resource priority in case we don't have the majority of the nodes in our cluster partition, so that the more significant nodes potentially win any fencing match, which is especially meaningful under split-brain of 2-node cluster. A promoted resource instance takes the base priority + 1 on calculation if the base priority is not 0. Any static/random delays that are introduced by `pcmk_delay_base/max` configured for the corresponding fencing resources will be added to this delay. This delay should be significantly greater than, safely twice, the maximum `pcmk_delay_base/max`. By default, priority fencing delay is disabled.</longdesc>
+ <shortdesc lang="en">Apply fencing delay targeting the lost nodes with the highest total resource priority</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="node-pending-timeout" advanced="0" generated="0">
+ <longdesc lang="en">Fence nodes that do not join the controller process group within this much time after joining the cluster, to allow the cluster to continue managing resources. A value of 0 means never fence pending nodes. Setting the value to 2h means fence nodes after 2 hours.</longdesc>
+ <shortdesc lang="en">How long to wait for a node that has joined the cluster to join the controller process group</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="cluster-delay" advanced="0" generated="0">
+ <longdesc lang="en">The node elected Designated Controller (DC) will consider an action failed if it does not get a response from the node executing the action within this time (after considering the action's own timeout). The "correct" value will depend on the speed and load of your network and cluster nodes.</longdesc>
+ <shortdesc lang="en">Maximum time for node-to-node communication</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="load-threshold" advanced="0" generated="0">
+ <longdesc lang="en">The cluster will slow down its recovery process when the amount of system resources used (currently CPU) approaches this limit</longdesc>
+ <shortdesc lang="en">Maximum amount of system load that should be used by cluster nodes</shortdesc>
+ <content type="percentage" default=""/>
+ </parameter>
+ <parameter name="node-action-limit" advanced="0" generated="0">
+ <longdesc lang="en">Maximum number of jobs that can be scheduled per node (defaults to 2x cores)</longdesc>
+ <shortdesc lang="en">Maximum number of jobs that can be scheduled per node (defaults to 2x cores)</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="batch-limit" advanced="0" generated="0">
+ <longdesc lang="en">The "correct" value will depend on the speed and load of your network and cluster nodes. If set to 0, the cluster will impose a dynamically calculated limit when any node has a high load.</longdesc>
+ <shortdesc lang="en">Maximum number of jobs that the cluster may execute in parallel across all nodes</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="migration-limit" advanced="0" generated="0">
+ <longdesc lang="en">The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)</longdesc>
+ <shortdesc lang="en">The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="cluster-ipc-limit" advanced="0" generated="0">
+ <longdesc lang="en">Raise this if log has "Evicting client" messages for cluster daemon PIDs (a good value is the number of resources in the cluster multiplied by the number of nodes).</longdesc>
+ <shortdesc lang="en">Maximum IPC message backlog before disconnecting a cluster daemon</shortdesc>
+ <content type="nonnegative_integer" default=""/>
+ </parameter>
+ <parameter name="stop-all-resources" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should stop all active resources</longdesc>
+ <shortdesc lang="en">Whether the cluster should stop all active resources</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stop-orphan-resources" advanced="0" generated="0">
+ <longdesc lang="en">Whether to stop resources that were removed from the configuration</longdesc>
+ <shortdesc lang="en">Whether to stop resources that were removed from the configuration</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stop-orphan-actions" advanced="0" generated="0">
+ <longdesc lang="en">Whether to cancel recurring actions removed from the configuration</longdesc>
+ <shortdesc lang="en">Whether to cancel recurring actions removed from the configuration</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="remove-after-stop" advanced="0" generated="0">
+ <deprecated/>
+ <longdesc lang="en">Values other than default are poorly tested and potentially dangerous.</longdesc>
+ <shortdesc lang="en">Whether to remove stopped resources from the executor</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="pe-error-series-max" advanced="0" generated="0">
+ <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
+ <shortdesc lang="en">The number of scheduler inputs resulting in errors to save</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pe-warn-series-max" advanced="0" generated="0">
+ <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
+ <shortdesc lang="en">The number of scheduler inputs resulting in warnings to save</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pe-input-series-max" advanced="0" generated="0">
+ <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
+ <shortdesc lang="en">The number of scheduler inputs without errors or warnings to save</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="node-health-strategy" advanced="0" generated="0">
+ <longdesc lang="en">Requires external entities to create node attributes (named with the prefix "#health") with values "red", "yellow", or "green".</longdesc>
+ <shortdesc lang="en">How cluster should react to node health attributes</shortdesc>
+ <content type="select" default="">
+ <option value="none"/>
+ <option value="migrate-on-red"/>
+ <option value="only-green"/>
+ <option value="progressive"/>
+ <option value="custom"/>
+ </content>
+ </parameter>
+ <parameter name="node-health-base" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "progressive".</longdesc>
+ <shortdesc lang="en">Base health score assigned to a node</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="node-health-green" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "custom" or "progressive".</longdesc>
+ <shortdesc lang="en">The score to use for a node health attribute whose value is "green"</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="node-health-yellow" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "custom" or "progressive".</longdesc>
+ <shortdesc lang="en">The score to use for a node health attribute whose value is "yellow"</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="node-health-red" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "custom" or "progressive".</longdesc>
+ <shortdesc lang="en">The score to use for a node health attribute whose value is "red"</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="placement-strategy" advanced="0" generated="0">
+ <longdesc lang="en">How the cluster should allocate resources to nodes</longdesc>
+ <shortdesc lang="en">How the cluster should allocate resources to nodes</shortdesc>
+ <content type="select" default="">
+ <option value="default"/>
+ <option value="utilization"/>
+ <option value="minimal"/>
+ <option value="balanced"/>
+ </content>
+ </parameter>
+ </parameters>
+ </resource-agent>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List non-advanced cluster options (XML) (shows all) - OK (0) =#=#=#=
+* Passed: crm_attribute - List non-advanced cluster options (XML) (shows all)
+=#=#=#= Begin test: List all available cluster options =#=#=#=
+Pacemaker cluster options
+
+Also known as properties, these are options that affect behavior across the entire cluster. They are configured within cluster_property_set elements inside the crm_config subsection of the CIB configuration section.
+
+ * dc-version: Pacemaker version on cluster node elected Designated Controller (DC)
+ * Includes a hash which identifies the exact revision the code was built from. Used for diagnostic purposes.
+ * Possible values (generated by Pacemaker): version (no default)
+
+ * cluster-infrastructure: The messaging layer on which Pacemaker is currently running
+ * Used for informational and diagnostic purposes.
+ * Possible values (generated by Pacemaker): string (no default)
+
+ * cluster-name: An arbitrary name for the cluster
+ * This optional value is mostly for users' convenience as desired in administration, but may also be used in Pacemaker configuration rules via the #cluster-name node attribute, and by higher-level tools and resource agents.
+ * Possible values: string (no default)
+
+ * dc-deadtime: How long to wait for a response from other nodes during start-up
+ * The optimal value will depend on the speed and load of your network and the type of switches used.
+ * Possible values: duration (default: )
+
+ * cluster-recheck-interval: Polling interval to recheck cluster state and evaluate rules with date specifications
+ * Pacemaker is primarily event-driven, and looks ahead to know when to recheck cluster state for failure-timeout settings and most time-based rules. However, it will also recheck the cluster after this amount of inactivity, to evaluate rules with date specifications and serve as a fail-safe for certain types of scheduler bugs. A value of 0 disables polling. A positive value sets an interval in seconds, unless other units are specified (for example, "5min").
+ * Possible values: duration (default: )
+
+ * fence-reaction: How a cluster node should react if notified of its own fencing
+ * A cluster node may receive notification of a "succeeded" fencing that targeted it if fencing is misconfigured, or if fabric fencing is in use that doesn't cut cluster communication. Use "stop" to attempt to immediately stop Pacemaker and stay stopped, or "panic" to attempt to immediately reboot the local node, falling back to stop on failure.
+ * Possible values: "stop" (default), "panic"
+
+ * no-quorum-policy: What to do when the cluster does not have quorum
+ * Possible values: "stop" (default), "freeze", "ignore", "demote", "suicide"
+
+ * shutdown-lock: Whether to lock resources to a cleanly shut down node
+ * When true, resources active on a node when it is cleanly shut down are kept "locked" to that node (not allowed to run elsewhere) until they start again on that node after it rejoins (or for at most shutdown-lock-limit, if set). Stonith resources and Pacemaker Remote connections are never locked. Clone and bundle instances and the promoted role of promotable clones are currently never locked, though support could be added in a future release.
+ * Possible values: boolean (default: )
+
+ * shutdown-lock-limit: Do not lock resources to a cleanly shut down node longer than this
+ * If shutdown-lock is true and this is set to a nonzero time duration, shutdown locks will expire after this much time has passed since the shutdown was initiated, even if the node has not rejoined.
+ * Possible values: duration (default: )
+
+ * enable-acl: Enable Access Control Lists (ACLs) for the CIB
+ * Possible values: boolean (default: )
+
+ * symmetric-cluster: Whether resources can run on any node by default
+ * Possible values: boolean (default: )
+
+ * maintenance-mode: Whether the cluster should refrain from monitoring, starting, and stopping resources
+ * Possible values: boolean (default: )
+
+ * start-failure-is-fatal: Whether a start failure should prevent a resource from being recovered on the same node
+ * When true, the cluster will immediately ban a resource from a node if it fails to start there. When false, the cluster will instead check the resource's fail count against its migration-threshold.
+ * Possible values: boolean (default: )
+
+ * enable-startup-probes: Whether the cluster should check for active resources during start-up
+ * Possible values: boolean (default: )
+
+ * stonith-action: Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off")
+ * Possible values: "reboot" (default), "off", "poweroff"
+
+ * stonith-timeout: How long to wait for on, off, and reboot fence actions to complete by default
+ * Possible values: duration (default: )
+
+ * have-watchdog: Whether watchdog integration is enabled
+ * This is set automatically by the cluster according to whether SBD is detected to be in use. User-configured values are ignored. The value `true` is meaningful if diskless SBD is used and `stonith-watchdog-timeout` is nonzero. In that case, if fencing is required, watchdog-based self-fencing will be performed via SBD without requiring a fencing resource explicitly configured.
+ * Possible values (generated by Pacemaker): boolean (default: )
+
+ * stonith-watchdog-timeout: How long before nodes can be assumed to be safely down when watchdog-based self-fencing via SBD is in use
+ * If this is set to a positive value, lost nodes are assumed to achieve self-fencing using watchdog-based SBD within this much time. This does not require a fencing resource to be explicitly configured, though a fence_watchdog resource can be configured, to limit use to specific nodes. If this is set to 0 (the default), the cluster will never assume watchdog-based self-fencing. If this is set to a negative value, the cluster will use twice the local value of the `SBD_WATCHDOG_TIMEOUT` environment variable if that is positive, or otherwise treat this as 0. WARNING: When used, this timeout must be larger than `SBD_WATCHDOG_TIMEOUT` on all nodes that use watchdog-based SBD, and Pacemaker will refuse to start on any of those nodes where this is not true for the local value or SBD is not active. When this is set to a negative value, `SBD_WATCHDOG_TIMEOUT` must be set to the same value on all nodes that use SBD, otherwise data corruption or loss could occur.
+ * Possible values: timeout (default: )
+
+ * stonith-max-attempts: How many times fencing can fail before it will no longer be immediately re-attempted on a target
+ * Possible values: score (default: )
+
+ * concurrent-fencing: Allow performing fencing operations in parallel
+ * Possible values: boolean (default: )
+
+ * priority-fencing-delay: Apply fencing delay targeting the lost nodes with the highest total resource priority
+ * Apply specified delay for the fencings that are targeting the lost nodes with the highest total resource priority in case we don't have the majority of the nodes in our cluster partition, so that the more significant nodes potentially win any fencing match, which is especially meaningful under split-brain of 2-node cluster. A promoted resource instance takes the base priority + 1 on calculation if the base priority is not 0. Any static/random delays that are introduced by `pcmk_delay_base/max` configured for the corresponding fencing resources will be added to this delay. This delay should be significantly greater than, safely twice, the maximum `pcmk_delay_base/max`. By default, priority fencing delay is disabled.
+ * Possible values: duration (default: )
+
+ * node-pending-timeout: How long to wait for a node that has joined the cluster to join the controller process group
+ * Fence nodes that do not join the controller process group within this much time after joining the cluster, to allow the cluster to continue managing resources. A value of 0 means never fence pending nodes. Setting the value to 2h means fence nodes after 2 hours.
+ * Possible values: duration (default: )
+
+ * cluster-delay: Maximum time for node-to-node communication
+ * The node elected Designated Controller (DC) will consider an action failed if it does not get a response from the node executing the action within this time (after considering the action's own timeout). The "correct" value will depend on the speed and load of your network and cluster nodes.
+ * Possible values: duration (default: )
+
+ * load-threshold: Maximum amount of system load that should be used by cluster nodes
+ * The cluster will slow down its recovery process when the amount of system resources used (currently CPU) approaches this limit
+ * Possible values: percentage (default: )
+
+ * node-action-limit: Maximum number of jobs that can be scheduled per node (defaults to 2x cores)
+ * Possible values: integer (default: )
+
+ * batch-limit: Maximum number of jobs that the cluster may execute in parallel across all nodes
+ * The "correct" value will depend on the speed and load of your network and cluster nodes. If set to 0, the cluster will impose a dynamically calculated limit when any node has a high load.
+ * Possible values: integer (default: )
+
+ * migration-limit: The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)
+ * Possible values: integer (default: )
+
+ * cluster-ipc-limit: Maximum IPC message backlog before disconnecting a cluster daemon
+ * Raise this if log has "Evicting client" messages for cluster daemon PIDs (a good value is the number of resources in the cluster multiplied by the number of nodes).
+ * Possible values: nonnegative_integer (default: )
+
+ * stop-all-resources: Whether the cluster should stop all active resources
+ * Possible values: boolean (default: )
+
+ * stop-orphan-resources: Whether to stop resources that were removed from the configuration
+ * Possible values: boolean (default: )
+
+ * stop-orphan-actions: Whether to cancel recurring actions removed from the configuration
+ * Possible values: boolean (default: )
+
+ * pe-error-series-max: The number of scheduler inputs resulting in errors to save
+ * Zero to disable, -1 to store unlimited.
+ * Possible values: integer (default: )
+
+ * pe-warn-series-max: The number of scheduler inputs resulting in warnings to save
+ * Zero to disable, -1 to store unlimited.
+ * Possible values: integer (default: )
+
+ * pe-input-series-max: The number of scheduler inputs without errors or warnings to save
+ * Zero to disable, -1 to store unlimited.
+ * Possible values: integer (default: )
+
+ * node-health-strategy: How cluster should react to node health attributes
+ * Requires external entities to create node attributes (named with the prefix "#health") with values "red", "yellow", or "green".
+ * Possible values: "none" (default), "migrate-on-red", "only-green", "progressive", "custom"
+
+ * node-health-base: Base health score assigned to a node
+ * Only used when "node-health-strategy" is set to "progressive".
+ * Possible values: score (default: )
+
+ * node-health-green: The score to use for a node health attribute whose value is "green"
+ * Only used when "node-health-strategy" is set to "custom" or "progressive".
+ * Possible values: score (default: )
+
+ * node-health-yellow: The score to use for a node health attribute whose value is "yellow"
+ * Only used when "node-health-strategy" is set to "custom" or "progressive".
+ * Possible values: score (default: )
+
+ * node-health-red: The score to use for a node health attribute whose value is "red"
+ * Only used when "node-health-strategy" is set to "custom" or "progressive".
+ * Possible values: score (default: )
+
+ * placement-strategy: How the cluster should allocate resources to nodes
+ * Possible values: "default" (default), "utilization", "minimal", "balanced"
+
+ * ADVANCED OPTIONS:
+
+ * election-timeout: Declare an election failed if it is not decided within this much time. If you need to adjust this value, it probably indicates the presence of a bug.
+ * Possible values: duration (default: )
+
+ * shutdown-escalation: Exit immediately if shutdown does not complete within this much time. If you need to adjust this value, it probably indicates the presence of a bug.
+ * Possible values: duration (default: )
+
+ * join-integration-timeout: If you need to adjust this value, it probably indicates the presence of a bug.
+ * Possible values: duration (default: )
+
+ * join-finalization-timeout: If you need to adjust this value, it probably indicates the presence of a bug.
+ * Possible values: duration (default: )
+
+ * transition-delay: Enabling this option will slow down cluster recovery under all conditions
+ * Delay cluster recovery for this much time to allow for additional events to occur. Useful if your configuration is sensitive to the order in which ping updates arrive.
+ * Possible values: duration (default: )
+
+ * stonith-enabled: Whether nodes may be fenced as part of recovery
+ * If false, unresponsive nodes are immediately assumed to be harmless, and resources that were active on them may be recovered elsewhere. This can result in a "split-brain" situation, potentially leading to data loss and/or service unavailability.
+ * Possible values: boolean (default: )
+
+ * startup-fencing: Whether to fence unseen nodes at start-up
+ * Setting this to false may lead to a "split-brain" situation, potentially leading to data loss and/or service unavailability.
+ * Possible values: boolean (default: )
+
+ * DEPRECATED OPTIONS (will be removed in a future release):
+
+ * remove-after-stop: Whether to remove stopped resources from the executor
+ * Values other than default are poorly tested and potentially dangerous.
+ * Possible values: boolean (default: )
+=#=#=#= End test: List all available cluster options - OK (0) =#=#=#=
+* Passed: crm_attribute - List all available cluster options
+=#=#=#= Begin test: List all available cluster options (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_attribute --list-options=cluster --all --output-as=xml">
+ <resource-agent name="cluster-options" version="">
+ <version>1.1</version>
+ <longdesc lang="en">Also known as properties, these are options that affect behavior across the entire cluster. They are configured within cluster_property_set elements inside the crm_config subsection of the CIB configuration section.</longdesc>
+ <shortdesc lang="en">Pacemaker cluster options</shortdesc>
+ <parameters>
+ <parameter name="dc-version" advanced="0" generated="1">
+ <longdesc lang="en">Includes a hash which identifies the exact revision the code was built from. Used for diagnostic purposes.</longdesc>
+ <shortdesc lang="en">Pacemaker version on cluster node elected Designated Controller (DC)</shortdesc>
+ <content type="version"/>
+ </parameter>
+ <parameter name="cluster-infrastructure" advanced="0" generated="1">
+ <longdesc lang="en">Used for informational and diagnostic purposes.</longdesc>
+ <shortdesc lang="en">The messaging layer on which Pacemaker is currently running</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="cluster-name" advanced="0" generated="0">
+ <longdesc lang="en">This optional value is mostly for users' convenience as desired in administration, but may also be used in Pacemaker configuration rules via the #cluster-name node attribute, and by higher-level tools and resource agents.</longdesc>
+ <shortdesc lang="en">An arbitrary name for the cluster</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="dc-deadtime" advanced="0" generated="0">
+ <longdesc lang="en">The optimal value will depend on the speed and load of your network and the type of switches used.</longdesc>
+ <shortdesc lang="en">How long to wait for a response from other nodes during start-up</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="cluster-recheck-interval" advanced="0" generated="0">
+ <longdesc lang="en">Pacemaker is primarily event-driven, and looks ahead to know when to recheck cluster state for failure-timeout settings and most time-based rules. However, it will also recheck the cluster after this amount of inactivity, to evaluate rules with date specifications and serve as a fail-safe for certain types of scheduler bugs. A value of 0 disables polling. A positive value sets an interval in seconds, unless other units are specified (for example, "5min").</longdesc>
+ <shortdesc lang="en">Polling interval to recheck cluster state and evaluate rules with date specifications</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="fence-reaction" advanced="0" generated="0">
+ <longdesc lang="en">A cluster node may receive notification of a "succeeded" fencing that targeted it if fencing is misconfigured, or if fabric fencing is in use that doesn't cut cluster communication. Use "stop" to attempt to immediately stop Pacemaker and stay stopped, or "panic" to attempt to immediately reboot the local node, falling back to stop on failure.</longdesc>
+ <shortdesc lang="en">How a cluster node should react if notified of its own fencing</shortdesc>
+ <content type="select" default="">
+ <option value="stop"/>
+ <option value="panic"/>
+ </content>
+ </parameter>
+ <parameter name="election-timeout" advanced="1" generated="0">
+ <longdesc lang="en">Declare an election failed if it is not decided within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">Declare an election failed if it is not decided within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="shutdown-escalation" advanced="1" generated="0">
+ <longdesc lang="en">Exit immediately if shutdown does not complete within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">Exit immediately if shutdown does not complete within this much time. If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="join-integration-timeout" advanced="1" generated="0">
+ <longdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="join-finalization-timeout" advanced="1" generated="0">
+ <longdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</longdesc>
+ <shortdesc lang="en">If you need to adjust this value, it probably indicates the presence of a bug.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="transition-delay" advanced="1" generated="0">
+ <longdesc lang="en">Delay cluster recovery for this much time to allow for additional events to occur. Useful if your configuration is sensitive to the order in which ping updates arrive.</longdesc>
+ <shortdesc lang="en">Enabling this option will slow down cluster recovery under all conditions</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="no-quorum-policy" advanced="0" generated="0">
+ <longdesc lang="en">What to do when the cluster does not have quorum</longdesc>
+ <shortdesc lang="en">What to do when the cluster does not have quorum</shortdesc>
+ <content type="select" default="">
+ <option value="stop"/>
+ <option value="freeze"/>
+ <option value="ignore"/>
+ <option value="demote"/>
+ <option value="suicide"/>
+ </content>
+ </parameter>
+ <parameter name="shutdown-lock" advanced="0" generated="0">
+ <longdesc lang="en">When true, resources active on a node when it is cleanly shut down are kept "locked" to that node (not allowed to run elsewhere) until they start again on that node after it rejoins (or for at most shutdown-lock-limit, if set). Stonith resources and Pacemaker Remote connections are never locked. Clone and bundle instances and the promoted role of promotable clones are currently never locked, though support could be added in a future release.</longdesc>
+ <shortdesc lang="en">Whether to lock resources to a cleanly shut down node</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="shutdown-lock-limit" advanced="0" generated="0">
+ <longdesc lang="en">If shutdown-lock is true and this is set to a nonzero time duration, shutdown locks will expire after this much time has passed since the shutdown was initiated, even if the node has not rejoined.</longdesc>
+ <shortdesc lang="en">Do not lock resources to a cleanly shut down node longer than this</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="enable-acl" advanced="0" generated="0">
+ <longdesc lang="en">Enable Access Control Lists (ACLs) for the CIB</longdesc>
+ <shortdesc lang="en">Enable Access Control Lists (ACLs) for the CIB</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="symmetric-cluster" advanced="0" generated="0">
+ <longdesc lang="en">Whether resources can run on any node by default</longdesc>
+ <shortdesc lang="en">Whether resources can run on any node by default</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="maintenance-mode" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should refrain from monitoring, starting, and stopping resources</longdesc>
+ <shortdesc lang="en">Whether the cluster should refrain from monitoring, starting, and stopping resources</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="start-failure-is-fatal" advanced="0" generated="0">
+ <longdesc lang="en">When true, the cluster will immediately ban a resource from a node if it fails to start there. When false, the cluster will instead check the resource's fail count against its migration-threshold.</longdesc>
+ <shortdesc lang="en">Whether a start failure should prevent a resource from being recovered on the same node</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="enable-startup-probes" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should check for active resources during start-up</longdesc>
+ <shortdesc lang="en">Whether the cluster should check for active resources during start-up</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stonith-enabled" advanced="1" generated="0">
+ <longdesc lang="en">If false, unresponsive nodes are immediately assumed to be harmless, and resources that were active on them may be recovered elsewhere. This can result in a "split-brain" situation, potentially leading to data loss and/or service unavailability.</longdesc>
+ <shortdesc lang="en">Whether nodes may be fenced as part of recovery</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stonith-action" advanced="0" generated="0">
+ <longdesc lang="en">Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off")</longdesc>
+ <shortdesc lang="en">Action to send to fence device when a node needs to be fenced ("poweroff" is a deprecated alias for "off")</shortdesc>
+ <content type="select" default="">
+ <option value="reboot"/>
+ <option value="off"/>
+ <option value="poweroff"/>
+ </content>
+ </parameter>
+ <parameter name="stonith-timeout" advanced="0" generated="0">
+ <longdesc lang="en">How long to wait for on, off, and reboot fence actions to complete by default</longdesc>
+ <shortdesc lang="en">How long to wait for on, off, and reboot fence actions to complete by default</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="have-watchdog" advanced="0" generated="1">
+ <longdesc lang="en">This is set automatically by the cluster according to whether SBD is detected to be in use. User-configured values are ignored. The value `true` is meaningful if diskless SBD is used and `stonith-watchdog-timeout` is nonzero. In that case, if fencing is required, watchdog-based self-fencing will be performed via SBD without requiring a fencing resource explicitly configured.</longdesc>
+ <shortdesc lang="en">Whether watchdog integration is enabled</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stonith-watchdog-timeout" advanced="0" generated="0">
+ <longdesc lang="en">If this is set to a positive value, lost nodes are assumed to achieve self-fencing using watchdog-based SBD within this much time. This does not require a fencing resource to be explicitly configured, though a fence_watchdog resource can be configured, to limit use to specific nodes. If this is set to 0 (the default), the cluster will never assume watchdog-based self-fencing. If this is set to a negative value, the cluster will use twice the local value of the `SBD_WATCHDOG_TIMEOUT` environment variable if that is positive, or otherwise treat this as 0. WARNING: When used, this timeout must be larger than `SBD_WATCHDOG_TIMEOUT` on all nodes that use watchdog-based SBD, and Pacemaker will refuse to start on any of those nodes where this is not true for the local value or SBD is not active. When this is set to a negative value, `SBD_WATCHDOG_TIMEOUT` must be set to the same value on all nodes that use SBD, otherwise data corruption or loss could occur.</longdesc>
+ <shortdesc lang="en">How long before nodes can be assumed to be safely down when watchdog-based self-fencing via SBD is in use</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="stonith-max-attempts" advanced="0" generated="0">
+ <longdesc lang="en">How many times fencing can fail before it will no longer be immediately re-attempted on a target</longdesc>
+ <shortdesc lang="en">How many times fencing can fail before it will no longer be immediately re-attempted on a target</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="concurrent-fencing" advanced="0" generated="0">
+ <longdesc lang="en">Allow performing fencing operations in parallel</longdesc>
+ <shortdesc lang="en">Allow performing fencing operations in parallel</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="startup-fencing" advanced="1" generated="0">
+ <longdesc lang="en">Setting this to false may lead to a "split-brain" situation, potentially leading to data loss and/or service unavailability.</longdesc>
+ <shortdesc lang="en">Whether to fence unseen nodes at start-up</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="priority-fencing-delay" advanced="0" generated="0">
+ <longdesc lang="en">Apply specified delay for the fencings that are targeting the lost nodes with the highest total resource priority in case we don't have the majority of the nodes in our cluster partition, so that the more significant nodes potentially win any fencing match, which is especially meaningful under split-brain of 2-node cluster. A promoted resource instance takes the base priority + 1 on calculation if the base priority is not 0. Any static/random delays that are introduced by `pcmk_delay_base/max` configured for the corresponding fencing resources will be added to this delay. This delay should be significantly greater than, safely twice, the maximum `pcmk_delay_base/max`. By default, priority fencing delay is disabled.</longdesc>
+ <shortdesc lang="en">Apply fencing delay targeting the lost nodes with the highest total resource priority</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="node-pending-timeout" advanced="0" generated="0">
+ <longdesc lang="en">Fence nodes that do not join the controller process group within this much time after joining the cluster, to allow the cluster to continue managing resources. A value of 0 means never fence pending nodes. Setting the value to 2h means fence nodes after 2 hours.</longdesc>
+ <shortdesc lang="en">How long to wait for a node that has joined the cluster to join the controller process group</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="cluster-delay" advanced="0" generated="0">
+ <longdesc lang="en">The node elected Designated Controller (DC) will consider an action failed if it does not get a response from the node executing the action within this time (after considering the action's own timeout). The "correct" value will depend on the speed and load of your network and cluster nodes.</longdesc>
+ <shortdesc lang="en">Maximum time for node-to-node communication</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="load-threshold" advanced="0" generated="0">
+ <longdesc lang="en">The cluster will slow down its recovery process when the amount of system resources used (currently CPU) approaches this limit</longdesc>
+ <shortdesc lang="en">Maximum amount of system load that should be used by cluster nodes</shortdesc>
+ <content type="percentage" default=""/>
+ </parameter>
+ <parameter name="node-action-limit" advanced="0" generated="0">
+ <longdesc lang="en">Maximum number of jobs that can be scheduled per node (defaults to 2x cores)</longdesc>
+ <shortdesc lang="en">Maximum number of jobs that can be scheduled per node (defaults to 2x cores)</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="batch-limit" advanced="0" generated="0">
+ <longdesc lang="en">The "correct" value will depend on the speed and load of your network and cluster nodes. If set to 0, the cluster will impose a dynamically calculated limit when any node has a high load.</longdesc>
+ <shortdesc lang="en">Maximum number of jobs that the cluster may execute in parallel across all nodes</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="migration-limit" advanced="0" generated="0">
+ <longdesc lang="en">The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)</longdesc>
+ <shortdesc lang="en">The number of live migration actions that the cluster is allowed to execute in parallel on a node (-1 means no limit)</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="cluster-ipc-limit" advanced="0" generated="0">
+ <longdesc lang="en">Raise this if log has "Evicting client" messages for cluster daemon PIDs (a good value is the number of resources in the cluster multiplied by the number of nodes).</longdesc>
+ <shortdesc lang="en">Maximum IPC message backlog before disconnecting a cluster daemon</shortdesc>
+ <content type="nonnegative_integer" default=""/>
+ </parameter>
+ <parameter name="stop-all-resources" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should stop all active resources</longdesc>
+ <shortdesc lang="en">Whether the cluster should stop all active resources</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stop-orphan-resources" advanced="0" generated="0">
+ <longdesc lang="en">Whether to stop resources that were removed from the configuration</longdesc>
+ <shortdesc lang="en">Whether to stop resources that were removed from the configuration</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="stop-orphan-actions" advanced="0" generated="0">
+ <longdesc lang="en">Whether to cancel recurring actions removed from the configuration</longdesc>
+ <shortdesc lang="en">Whether to cancel recurring actions removed from the configuration</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="remove-after-stop" advanced="0" generated="0">
+ <deprecated/>
+ <longdesc lang="en">Values other than default are poorly tested and potentially dangerous.</longdesc>
+ <shortdesc lang="en">Whether to remove stopped resources from the executor</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="pe-error-series-max" advanced="0" generated="0">
+ <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
+ <shortdesc lang="en">The number of scheduler inputs resulting in errors to save</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pe-warn-series-max" advanced="0" generated="0">
+ <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
+ <shortdesc lang="en">The number of scheduler inputs resulting in warnings to save</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pe-input-series-max" advanced="0" generated="0">
+ <longdesc lang="en">Zero to disable, -1 to store unlimited.</longdesc>
+ <shortdesc lang="en">The number of scheduler inputs without errors or warnings to save</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="node-health-strategy" advanced="0" generated="0">
+ <longdesc lang="en">Requires external entities to create node attributes (named with the prefix "#health") with values "red", "yellow", or "green".</longdesc>
+ <shortdesc lang="en">How cluster should react to node health attributes</shortdesc>
+ <content type="select" default="">
+ <option value="none"/>
+ <option value="migrate-on-red"/>
+ <option value="only-green"/>
+ <option value="progressive"/>
+ <option value="custom"/>
+ </content>
+ </parameter>
+ <parameter name="node-health-base" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "progressive".</longdesc>
+ <shortdesc lang="en">Base health score assigned to a node</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="node-health-green" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "custom" or "progressive".</longdesc>
+ <shortdesc lang="en">The score to use for a node health attribute whose value is "green"</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="node-health-yellow" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "custom" or "progressive".</longdesc>
+ <shortdesc lang="en">The score to use for a node health attribute whose value is "yellow"</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="node-health-red" advanced="0" generated="0">
+ <longdesc lang="en">Only used when "node-health-strategy" is set to "custom" or "progressive".</longdesc>
+ <shortdesc lang="en">The score to use for a node health attribute whose value is "red"</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="placement-strategy" advanced="0" generated="0">
+ <longdesc lang="en">How the cluster should allocate resources to nodes</longdesc>
+ <shortdesc lang="en">How the cluster should allocate resources to nodes</shortdesc>
+ <content type="select" default="">
+ <option value="default"/>
+ <option value="utilization"/>
+ <option value="minimal"/>
+ <option value="balanced"/>
+ </content>
+ </parameter>
+ </parameters>
+ </resource-agent>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List all available cluster options (XML) - OK (0) =#=#=#=
+* Passed: crm_attribute - List all available cluster options (XML)
=#=#=#= Begin test: Query the value of an attribute that does not exist =#=#=#=
crm_attribute: Error performing operation: No such device or address
=#=#=#= End test: Query the value of an attribute that does not exist - No such object (105) =#=#=#=
@@ -33,7 +937,7 @@ crm_attribute: Error performing operation: No such device or address
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
- <nvpair id="cib-bootstrap-options-cluster-delay" name="cluster-delay" value="60s"/>
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="5"/>
</cluster_property_set>
</crm_config>
<nodes/>
@@ -44,14 +948,230 @@ crm_attribute: Error performing operation: No such device or address
</cib>
=#=#=#= End test: Configure something before erasing - OK (0) =#=#=#=
* Passed: crm_attribute - Configure something before erasing
+=#=#=#= Begin test: Test '++' XML attribute update syntax =#=#=#=
+=#=#=#= Current cib after: Test '++' XML attribute update syntax =#=#=#=
+<cib epoch="2" num_updates="1" admin_epoch="1">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="5"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '++' XML attribute update syntax - OK (0) =#=#=#=
+* Passed: cibadmin - Test '++' XML attribute update syntax
+=#=#=#= Begin test: Test '+=' XML attribute update syntax =#=#=#=
+=#=#=#= Current cib after: Test '+=' XML attribute update syntax =#=#=#=
+<cib epoch="2" num_updates="2" admin_epoch="3">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="5"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '+=' XML attribute update syntax - OK (0) =#=#=#=
+* Passed: cibadmin - Test '+=' XML attribute update syntax
+=#=#=#= Begin test: Test '++' nvpair value update syntax =#=#=#=
+=#=#=#= Current cib after: Test '++' nvpair value update syntax =#=#=#=
+<cib epoch="3" num_updates="0" admin_epoch="3">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="6"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '++' nvpair value update syntax - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '++' nvpair value update syntax
+=#=#=#= Begin test: Test '++' nvpair value update syntax (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_attribute -n test_attr -v value++ --score --output-as=xml">
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= Current cib after: Test '++' nvpair value update syntax (XML) =#=#=#=
+<cib epoch="4" num_updates="0" admin_epoch="3">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="7"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '++' nvpair value update syntax (XML) - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '++' nvpair value update syntax (XML)
+=#=#=#= Begin test: Test '+=' nvpair value update syntax =#=#=#=
+=#=#=#= Current cib after: Test '+=' nvpair value update syntax =#=#=#=
+<cib epoch="5" num_updates="0" admin_epoch="3">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="9"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '+=' nvpair value update syntax - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '+=' nvpair value update syntax
+=#=#=#= Begin test: Test '+=' nvpair value update syntax (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_attribute -n test_attr -v value+=2 --score --output-as=xml">
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= Current cib after: Test '+=' nvpair value update syntax (XML) =#=#=#=
+<cib epoch="6" num_updates="0" admin_epoch="3">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="11"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '+=' nvpair value update syntax (XML) - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '+=' nvpair value update syntax (XML)
+=#=#=#= Begin test: Test '++' XML attribute update syntax (--score not set) =#=#=#=
+=#=#=#= Current cib after: Test '++' XML attribute update syntax (--score not set) =#=#=#=
+<cib epoch="6" num_updates="1" admin_epoch="4">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="11"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '++' XML attribute update syntax (--score not set) - OK (0) =#=#=#=
+* Passed: cibadmin - Test '++' XML attribute update syntax (--score not set)
+=#=#=#= Begin test: Test '+=' XML attribute update syntax (--score not set) =#=#=#=
+=#=#=#= Current cib after: Test '+=' XML attribute update syntax (--score not set) =#=#=#=
+<cib epoch="6" num_updates="2" admin_epoch="6">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="11"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '+=' XML attribute update syntax (--score not set) - OK (0) =#=#=#=
+* Passed: cibadmin - Test '+=' XML attribute update syntax (--score not set)
+=#=#=#= Begin test: Test '++' nvpair value update syntax (--score not set) =#=#=#=
+=#=#=#= Current cib after: Test '++' nvpair value update syntax (--score not set) =#=#=#=
+<cib epoch="7" num_updates="0" admin_epoch="6">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="12"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '++' nvpair value update syntax (--score not set) - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '++' nvpair value update syntax (--score not set)
+=#=#=#= Begin test: Test '++' nvpair value update syntax (--score not set) (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_attribute -n test_attr -v value++ --output-as=xml">
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= Current cib after: Test '++' nvpair value update syntax (--score not set) (XML) =#=#=#=
+<cib epoch="8" num_updates="0" admin_epoch="6">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="13"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '++' nvpair value update syntax (--score not set) (XML) - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '++' nvpair value update syntax (--score not set) (XML)
+=#=#=#= Begin test: Test '+=' nvpair value update syntax (--score not set) =#=#=#=
+=#=#=#= Current cib after: Test '+=' nvpair value update syntax (--score not set) =#=#=#=
+<cib epoch="9" num_updates="0" admin_epoch="6">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="15"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '+=' nvpair value update syntax (--score not set) - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '+=' nvpair value update syntax (--score not set)
+=#=#=#= Begin test: Test '+=' nvpair value update syntax (--score not set) (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_attribute -n test_attr -v value+=2 --output-as=xml">
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= Current cib after: Test '+=' nvpair value update syntax (--score not set) (XML) =#=#=#=
+<cib epoch="10" num_updates="0" admin_epoch="6">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="17"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
+=#=#=#= End test: Test '+=' nvpair value update syntax (--score not set) (XML) - OK (0) =#=#=#=
+* Passed: crm_attribute - Test '+=' nvpair value update syntax (--score not set) (XML)
=#=#=#= Begin test: Require --force for CIB erasure =#=#=#=
cibadmin: The supplied command is considered dangerous. To prevent accidental destruction of the cluster, the --force flag is required in order to proceed.
=#=#=#= Current cib after: Require --force for CIB erasure =#=#=#=
-<cib epoch="2" num_updates="0" admin_epoch="0">
+<cib epoch="10" num_updates="0" admin_epoch="6">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
- <nvpair id="cib-bootstrap-options-cluster-delay" name="cluster-delay" value="60s"/>
+ <nvpair id="cib-bootstrap-options-test_attr" name="test_attr" value="17"/>
</cluster_property_set>
</crm_config>
<nodes/>
@@ -177,7 +1297,7 @@ cibadmin: The supplied command is considered dangerous. To prevent accidental de
=#=#=#= Begin test: Create operation should fail =#=#=#=
Call failed: File exists
<failed>
- <failed_update id="cib-bootstrap-options" object_type="cluster_property_set" operation="cib_create" reason="File exists">
+ <failed_update id="cib-bootstrap-options" object-type="cluster_property_set" operation="cib_create" reason="File exists">
<cluster_property_set id="cib-bootstrap-options">
<nvpair id="cib-bootstrap-options-cluster-delay" name="cluster-delay" value="60s"/>
</cluster_property_set>
@@ -461,8 +1581,8 @@ Revised Cluster Status:
=#=#=#= End test: Create second node attribute - OK (0) =#=#=#=
* Passed: crm_attribute - Create second node attribute
=#=#=#= Begin test: Query node attributes by pattern =#=#=#=
-scope=nodes name=ram value=1024M
-scope=nodes name=rattr value=XYZ
+scope=nodes name=ram value=1024M
+scope=nodes name=rattr value=XYZ
=#=#=#= End test: Query node attributes by pattern - OK (0) =#=#=#=
* Passed: crm_attribute - Query node attributes by pattern
=#=#=#= Begin test: Update node attributes by pattern =#=#=#=
@@ -644,8 +1764,8 @@ Current cluster status:
=#=#=#= End test: Set a second transient node attribute - OK (0) =#=#=#=
* Passed: crm_attribute - Set a second transient node attribute
=#=#=#= Begin test: Query transient node attributes by pattern =#=#=#=
-scope=status name=fail-count-foo value=3
-scope=status name=fail-count-bar value=5
+scope=status name=fail-count-foo value=3
+scope=status name=fail-count-bar value=5
=#=#=#= End test: Query transient node attributes by pattern - OK (0) =#=#=#=
* Passed: crm_attribute - Query transient node attributes by pattern
=#=#=#= Begin test: Update transient node attributes by pattern =#=#=#=
@@ -757,7 +1877,7 @@ crm_attribute: Error: must specify attribute name or pattern to delete
=#=#=#= End test: Set a utilization node attribute - OK (0) =#=#=#=
* Passed: crm_attribute - Set a utilization node attribute
=#=#=#= Begin test: Query utilization node attribute =#=#=#=
-scope=nodes name=cpu value=1
+scope=nodes name=cpu value=1
=#=#=#= End test: Query utilization node attribute - OK (0) =#=#=#=
* Passed: crm_attribute - Query utilization node attribute
=#=#=#= Begin test: Digest calculation =#=#=#=
@@ -832,7 +1952,7 @@ Call failed: Update was older than existing configuration
=#=#=#= End test: Replace operation should fail - Update was older than existing configuration (103) =#=#=#=
* Passed: cibadmin - Replace operation should fail
=#=#=#= Begin test: Default standby value =#=#=#=
-scope=status name=standby value=off
+scope=status name=standby value=off
=#=#=#= Current cib after: Default standby value =#=#=#=
<cib epoch="14" num_updates="0" admin_epoch="0">
<configuration>
@@ -904,7 +2024,7 @@ scope=status name=standby value=off
=#=#=#= End test: Set standby status - OK (0) =#=#=#=
* Passed: crm_standby - Set standby status
=#=#=#= Begin test: Query standby value =#=#=#=
-scope=nodes name=standby value=true
+scope=nodes name=standby value=true
=#=#=#= Current cib after: Query standby value =#=#=#=
<cib epoch="15" num_updates="0" admin_epoch="0">
<configuration>
@@ -1020,6 +2140,824 @@ crm_resource: non-option ARGV-elements:
=#=#=#= End test: crm_resource run with extra arguments - Incorrect usage (64) =#=#=#=
* Passed: crm_resource - crm_resource run with extra arguments
+=#=#=#= Begin test: List all available resource options (invalid type) =#=#=#=
+crm_resource: Error parsing option --list-options
+=#=#=#= End test: List all available resource options (invalid type) - Incorrect usage (64) =#=#=#=
+* Passed: crm_resource - List all available resource options (invalid type)
+=#=#=#= Begin test: List all available resource options (invalid type) (XML) =#=#=#=
+crm_resource: Error parsing option --list-options
+=#=#=#= End test: List all available resource options (invalid type) (XML) - Incorrect usage (64) =#=#=#=
+* Passed: crm_resource - List all available resource options (invalid type) (XML)
+=#=#=#= Begin test: List non-advanced primitive meta-attributes =#=#=#=
+Primitive meta-attributes
+
+Meta-attributes applicable to primitive resources
+
+ * priority: Resource assignment priority
+ * If not all resources can be active, the cluster will stop lower-priority resources in order to keep higher-priority ones active.
+ * Possible values: score (default: )
+
+ * critical: Default value for influence in colocation constraints
+ * Use this value as the default for influence in all colocation constraints involving this resource, as well as in the implicit colocation constraints created if this resource is in a group.
+ * Possible values: boolean (default: )
+
+ * target-role: State the cluster should attempt to keep this resource in
+ * "Stopped" forces the resource to be stopped. "Started" allows the resource to be started (and in the case of promotable clone resources, promoted if appropriate). "Unpromoted" allows the resource to be started, but only in the unpromoted role if the resource is promotable. "Promoted" is equivalent to "Started".
+ * Possible values: "Stopped", "Started" (default), "Unpromoted", "Promoted"
+
+ * is-managed: Whether the cluster is allowed to actively change the resource's state
+ * If false, the cluster will not start, stop, promote, or demote the resource on any node. Recurring actions for the resource are unaffected. If true, a true value for the maintenance-mode cluster option, the maintenance node attribute, or the maintenance resource meta-attribute overrides this.
+ * Possible values: boolean (default: )
+
+ * maintenance: If true, the cluster will not schedule any actions involving the resource
+ * If true, the cluster will not start, stop, promote, or demote the resource on any node, and will pause any recurring monitors (except those specifying role as "Stopped"). If false, a true value for the maintenance-mode cluster option or maintenance node attribute overrides this.
+ * Possible values: boolean (default: )
+
+ * resource-stickiness: Score to add to the current node when a resource is already active
+ * Score to add to the current node when a resource is already active. This allows running resources to stay where they are, even if they would be placed elsewhere if they were being started from a stopped state. The default is 1 for individual clone instances, and 0 for all other resources.
+ * Possible values: score (no default)
+
+ * requires: Conditions under which the resource can be started
+ * Conditions under which the resource can be started. "nothing" means the cluster can always start this resource. "quorum" means the cluster can start this resource only if a majority of the configured nodes are active. "fencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced. "unfencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced, and only on nodes that have been unfenced. The default is "quorum" for resources with a class of stonith; otherwise, "unfencing" if unfencing is active in the cluster; otherwise, "fencing" if the stonith-enabled cluster option is true; otherwise, "quorum".
+ * Possible values: "nothing", "quorum", "fencing", "unfencing"
+
+ * migration-threshold: Number of failures on a node before the resource becomes ineligible to run there.
+ * Number of failures that may occur for this resource on a node, before that node is marked ineligible to host this resource. A value of 0 indicates that this feature is disabled (the node will never be marked ineligible). By contrast, the cluster treats "INFINITY" (the default) as a very large but finite number. This option has an effect only if the failed operation specifies its on-fail attribute as "restart" (the default), and additionally for failed start operations, if the start-failure-is-fatal cluster property is set to false.
+ * Possible values: score (default: )
+
+ * failure-timeout: Number of seconds before acting as if a failure had not occurred
+ * Number of seconds after a failed action for this resource before acting as if the failure had not occurred, and potentially allowing the resource back to the node on which it failed. A value of 0 indicates that this feature is disabled.
+ * Possible values: duration (default: )
+
+ * multiple-active: What to do if the cluster finds the resource active on more than one node
+ * What to do if the cluster finds the resource active on more than one node. "block" means to mark the resource as unmanaged. "stop_only" means to stop all active instances of this resource and leave them stopped. "stop_start" means to stop all active instances of this resource and start the resource in one location only. "stop_unexpected" means to stop all active instances of this resource except where the resource should be active. (This should be used only when extra instances are not expected to disrupt existing instances, and the resource agent's monitor of an existing instance is capable of detecting any problems that could be caused. Note that any resources ordered after this one will still need to be restarted.)
+ * Possible values: "block", "stop_only", "stop_start" (default), "stop_unexpected"
+
+ * allow-migrate: Whether the cluster should try to "live migrate" this resource when it needs to be moved
+ * Whether the cluster should try to "live migrate" this resource when it needs to be moved. The default is true for ocf:pacemaker:remote resources, and false otherwise.
+ * Possible values: boolean (no default)
+
+ * allow-unhealthy-nodes: Whether the resource should be allowed to run on a node even if the node's health score would otherwise prevent it
+ * Possible values: boolean (default: )
+
+ * container-attribute-target: Where to check user-defined node attributes
+ * Whether to check user-defined node attributes on the physical host where a container is running or on the local node. This is usually set for a bundle resource and inherited by the bundle's primitive resource. A value of "host" means to check user-defined node attributes on the underlying physical host. Any other value means to check user-defined node attributes on the local node (for a bundled primitive resource, this is the bundle node).
+ * Possible values: string (no default)
+
+ * remote-node: Name of the Pacemaker Remote guest node this resource is associated with, if any
+ * Name of the Pacemaker Remote guest node this resource is associated with, if any. If specified, this both enables the resource as a guest node and defines the unique name used to identify the guest node. The guest must be configured to run the Pacemaker Remote daemon when it is started. WARNING: This value cannot overlap with any resource or node IDs.
+ * Possible values: string (no default)
+
+ * remote-addr: If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote
+ * If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote. The Pacemaker Remote daemon on the guest must be configured to accept connections on this address. The default is the value of the remote-node meta-attribute.
+ * Possible values: string (no default)
+
+ * remote-port: If remote-node is specified, port on the guest used for its Pacemaker Remote connection
+ * If remote-node is specified, the port on the guest used for its Pacemaker Remote connection. The Pacemaker Remote daemon on the guest must be configured to listen on this port.
+ * Possible values: port (default: )
+
+ * remote-connect-timeout: If remote-node is specified, how long before a pending Pacemaker Remote guest connection times out.
+ * Possible values: timeout (default: )
+
+ * remote-allow-migrate: If remote-node is specified, this acts as the allow-migrate meta-attribute for the implicit remote connection resource (ocf:pacemaker:remote).
+ * Possible values: boolean (default: )
+=#=#=#= End test: List non-advanced primitive meta-attributes - OK (0) =#=#=#=
+* Passed: crm_resource - List non-advanced primitive meta-attributes
+=#=#=#= Begin test: List non-advanced primitive meta-attributes (XML) (shows all) =#=#=#=
+<pacemaker-result api-version="X" request="crm_resource --list-options=primitive --output-as=xml">
+ <resource-agent name="primitive-meta" version="">
+ <version>1.1</version>
+ <longdesc lang="en">Meta-attributes applicable to primitive resources</longdesc>
+ <shortdesc lang="en">Primitive meta-attributes</shortdesc>
+ <parameters>
+ <parameter name="priority" advanced="0" generated="0">
+ <longdesc lang="en">If not all resources can be active, the cluster will stop lower-priority resources in order to keep higher-priority ones active.</longdesc>
+ <shortdesc lang="en">Resource assignment priority</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="critical" advanced="0" generated="0">
+ <longdesc lang="en">Use this value as the default for influence in all colocation constraints involving this resource, as well as in the implicit colocation constraints created if this resource is in a group.</longdesc>
+ <shortdesc lang="en">Default value for influence in colocation constraints</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="target-role" advanced="0" generated="0">
+ <longdesc lang="en">"Stopped" forces the resource to be stopped. "Started" allows the resource to be started (and in the case of promotable clone resources, promoted if appropriate). "Unpromoted" allows the resource to be started, but only in the unpromoted role if the resource is promotable. "Promoted" is equivalent to "Started".</longdesc>
+ <shortdesc lang="en">State the cluster should attempt to keep this resource in</shortdesc>
+ <content type="select" default="">
+ <option value="Stopped"/>
+ <option value="Started"/>
+ <option value="Unpromoted"/>
+ <option value="Promoted"/>
+ </content>
+ </parameter>
+ <parameter name="is-managed" advanced="0" generated="0">
+ <longdesc lang="en">If false, the cluster will not start, stop, promote, or demote the resource on any node. Recurring actions for the resource are unaffected. If true, a true value for the maintenance-mode cluster option, the maintenance node attribute, or the maintenance resource meta-attribute overrides this.</longdesc>
+ <shortdesc lang="en">Whether the cluster is allowed to actively change the resource's state</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="maintenance" advanced="0" generated="0">
+ <longdesc lang="en">If true, the cluster will not start, stop, promote, or demote the resource on any node, and will pause any recurring monitors (except those specifying role as "Stopped"). If false, a true value for the maintenance-mode cluster option or maintenance node attribute overrides this.</longdesc>
+ <shortdesc lang="en">If true, the cluster will not schedule any actions involving the resource</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="resource-stickiness" advanced="0" generated="0">
+ <longdesc lang="en">Score to add to the current node when a resource is already active. This allows running resources to stay where they are, even if they would be placed elsewhere if they were being started from a stopped state. The default is 1 for individual clone instances, and 0 for all other resources.</longdesc>
+ <shortdesc lang="en">Score to add to the current node when a resource is already active</shortdesc>
+ <content type="score"/>
+ </parameter>
+ <parameter name="requires" advanced="0" generated="0">
+ <longdesc lang="en">Conditions under which the resource can be started. "nothing" means the cluster can always start this resource. "quorum" means the cluster can start this resource only if a majority of the configured nodes are active. "fencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced. "unfencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced, and only on nodes that have been unfenced. The default is "quorum" for resources with a class of stonith; otherwise, "unfencing" if unfencing is active in the cluster; otherwise, "fencing" if the stonith-enabled cluster option is true; otherwise, "quorum".</longdesc>
+ <shortdesc lang="en">Conditions under which the resource can be started</shortdesc>
+ <content type="select">
+ <option value="nothing"/>
+ <option value="quorum"/>
+ <option value="fencing"/>
+ <option value="unfencing"/>
+ </content>
+ </parameter>
+ <parameter name="migration-threshold" advanced="0" generated="0">
+ <longdesc lang="en">Number of failures that may occur for this resource on a node, before that node is marked ineligible to host this resource. A value of 0 indicates that this feature is disabled (the node will never be marked ineligible). By contrast, the cluster treats "INFINITY" (the default) as a very large but finite number. This option has an effect only if the failed operation specifies its on-fail attribute as "restart" (the default), and additionally for failed start operations, if the start-failure-is-fatal cluster property is set to false.</longdesc>
+ <shortdesc lang="en">Number of failures on a node before the resource becomes ineligible to run there.</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="failure-timeout" advanced="0" generated="0">
+ <longdesc lang="en">Number of seconds after a failed action for this resource before acting as if the failure had not occurred, and potentially allowing the resource back to the node on which it failed. A value of 0 indicates that this feature is disabled.</longdesc>
+ <shortdesc lang="en">Number of seconds before acting as if a failure had not occurred</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="multiple-active" advanced="0" generated="0">
+ <longdesc lang="en">What to do if the cluster finds the resource active on more than one node. "block" means to mark the resource as unmanaged. "stop_only" means to stop all active instances of this resource and leave them stopped. "stop_start" means to stop all active instances of this resource and start the resource in one location only. "stop_unexpected" means to stop all active instances of this resource except where the resource should be active. (This should be used only when extra instances are not expected to disrupt existing instances, and the resource agent's monitor of an existing instance is capable of detecting any problems that could be caused. Note that any resources ordered after this one will still need to be restarted.)</longdesc>
+ <shortdesc lang="en">What to do if the cluster finds the resource active on more than one node</shortdesc>
+ <content type="select" default="">
+ <option value="block"/>
+ <option value="stop_only"/>
+ <option value="stop_start"/>
+ <option value="stop_unexpected"/>
+ </content>
+ </parameter>
+ <parameter name="allow-migrate" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should try to "live migrate" this resource when it needs to be moved. The default is true for ocf:pacemaker:remote resources, and false otherwise.</longdesc>
+ <shortdesc lang="en">Whether the cluster should try to "live migrate" this resource when it needs to be moved</shortdesc>
+ <content type="boolean"/>
+ </parameter>
+ <parameter name="allow-unhealthy-nodes" advanced="0" generated="0">
+ <longdesc lang="en">Whether the resource should be allowed to run on a node even if the node's health score would otherwise prevent it</longdesc>
+ <shortdesc lang="en">Whether the resource should be allowed to run on a node even if the node's health score would otherwise prevent it</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="container-attribute-target" advanced="0" generated="0">
+ <longdesc lang="en">Whether to check user-defined node attributes on the physical host where a container is running or on the local node. This is usually set for a bundle resource and inherited by the bundle's primitive resource. A value of "host" means to check user-defined node attributes on the underlying physical host. Any other value means to check user-defined node attributes on the local node (for a bundled primitive resource, this is the bundle node).</longdesc>
+ <shortdesc lang="en">Where to check user-defined node attributes</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="remote-node" advanced="0" generated="0">
+ <longdesc lang="en">Name of the Pacemaker Remote guest node this resource is associated with, if any. If specified, this both enables the resource as a guest node and defines the unique name used to identify the guest node. The guest must be configured to run the Pacemaker Remote daemon when it is started. WARNING: This value cannot overlap with any resource or node IDs.</longdesc>
+ <shortdesc lang="en">Name of the Pacemaker Remote guest node this resource is associated with, if any</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="remote-addr" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote. The Pacemaker Remote daemon on the guest must be configured to accept connections on this address. The default is the value of the remote-node meta-attribute.</longdesc>
+ <shortdesc lang="en">If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="remote-port" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, the port on the guest used for its Pacemaker Remote connection. The Pacemaker Remote daemon on the guest must be configured to listen on this port.</longdesc>
+ <shortdesc lang="en">If remote-node is specified, port on the guest used for its Pacemaker Remote connection</shortdesc>
+ <content type="port" default=""/>
+ </parameter>
+ <parameter name="remote-connect-timeout" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, how long before a pending Pacemaker Remote guest connection times out.</longdesc>
+ <shortdesc lang="en">If remote-node is specified, how long before a pending Pacemaker Remote guest connection times out.</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="remote-allow-migrate" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, this acts as the allow-migrate meta-attribute for the implicit remote connection resource (ocf:pacemaker:remote).</longdesc>
+ <shortdesc lang="en">If remote-node is specified, this acts as the allow-migrate meta-attribute for the implicit remote connection resource (ocf:pacemaker:remote).</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ </parameters>
+ </resource-agent>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List non-advanced primitive meta-attributes (XML) (shows all) - OK (0) =#=#=#=
+* Passed: crm_resource - List non-advanced primitive meta-attributes (XML) (shows all)
+=#=#=#= Begin test: List all available primitive meta-attributes =#=#=#=
+Primitive meta-attributes
+
+Meta-attributes applicable to primitive resources
+
+ * priority: Resource assignment priority
+ * If not all resources can be active, the cluster will stop lower-priority resources in order to keep higher-priority ones active.
+ * Possible values: score (default: )
+
+ * critical: Default value for influence in colocation constraints
+ * Use this value as the default for influence in all colocation constraints involving this resource, as well as in the implicit colocation constraints created if this resource is in a group.
+ * Possible values: boolean (default: )
+
+ * target-role: State the cluster should attempt to keep this resource in
+ * "Stopped" forces the resource to be stopped. "Started" allows the resource to be started (and in the case of promotable clone resources, promoted if appropriate). "Unpromoted" allows the resource to be started, but only in the unpromoted role if the resource is promotable. "Promoted" is equivalent to "Started".
+ * Possible values: "Stopped", "Started" (default), "Unpromoted", "Promoted"
+
+ * is-managed: Whether the cluster is allowed to actively change the resource's state
+ * If false, the cluster will not start, stop, promote, or demote the resource on any node. Recurring actions for the resource are unaffected. If true, a true value for the maintenance-mode cluster option, the maintenance node attribute, or the maintenance resource meta-attribute overrides this.
+ * Possible values: boolean (default: )
+
+ * maintenance: If true, the cluster will not schedule any actions involving the resource
+ * If true, the cluster will not start, stop, promote, or demote the resource on any node, and will pause any recurring monitors (except those specifying role as "Stopped"). If false, a true value for the maintenance-mode cluster option or maintenance node attribute overrides this.
+ * Possible values: boolean (default: )
+
+ * resource-stickiness: Score to add to the current node when a resource is already active
+ * Score to add to the current node when a resource is already active. This allows running resources to stay where they are, even if they would be placed elsewhere if they were being started from a stopped state. The default is 1 for individual clone instances, and 0 for all other resources.
+ * Possible values: score (no default)
+
+ * requires: Conditions under which the resource can be started
+ * Conditions under which the resource can be started. "nothing" means the cluster can always start this resource. "quorum" means the cluster can start this resource only if a majority of the configured nodes are active. "fencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced. "unfencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced, and only on nodes that have been unfenced. The default is "quorum" for resources with a class of stonith; otherwise, "unfencing" if unfencing is active in the cluster; otherwise, "fencing" if the stonith-enabled cluster option is true; otherwise, "quorum".
+ * Possible values: "nothing", "quorum", "fencing", "unfencing"
+
+ * migration-threshold: Number of failures on a node before the resource becomes ineligible to run there.
+ * Number of failures that may occur for this resource on a node, before that node is marked ineligible to host this resource. A value of 0 indicates that this feature is disabled (the node will never be marked ineligible). By contrast, the cluster treats "INFINITY" (the default) as a very large but finite number. This option has an effect only if the failed operation specifies its on-fail attribute as "restart" (the default), and additionally for failed start operations, if the start-failure-is-fatal cluster property is set to false.
+ * Possible values: score (default: )
+
+ * failure-timeout: Number of seconds before acting as if a failure had not occurred
+ * Number of seconds after a failed action for this resource before acting as if the failure had not occurred, and potentially allowing the resource back to the node on which it failed. A value of 0 indicates that this feature is disabled.
+ * Possible values: duration (default: )
+
+ * multiple-active: What to do if the cluster finds the resource active on more than one node
+ * What to do if the cluster finds the resource active on more than one node. "block" means to mark the resource as unmanaged. "stop_only" means to stop all active instances of this resource and leave them stopped. "stop_start" means to stop all active instances of this resource and start the resource in one location only. "stop_unexpected" means to stop all active instances of this resource except where the resource should be active. (This should be used only when extra instances are not expected to disrupt existing instances, and the resource agent's monitor of an existing instance is capable of detecting any problems that could be caused. Note that any resources ordered after this one will still need to be restarted.)
+ * Possible values: "block", "stop_only", "stop_start" (default), "stop_unexpected"
+
+ * allow-migrate: Whether the cluster should try to "live migrate" this resource when it needs to be moved
+ * Whether the cluster should try to "live migrate" this resource when it needs to be moved. The default is true for ocf:pacemaker:remote resources, and false otherwise.
+ * Possible values: boolean (no default)
+
+ * allow-unhealthy-nodes: Whether the resource should be allowed to run on a node even if the node's health score would otherwise prevent it
+ * Possible values: boolean (default: )
+
+ * container-attribute-target: Where to check user-defined node attributes
+ * Whether to check user-defined node attributes on the physical host where a container is running or on the local node. This is usually set for a bundle resource and inherited by the bundle's primitive resource. A value of "host" means to check user-defined node attributes on the underlying physical host. Any other value means to check user-defined node attributes on the local node (for a bundled primitive resource, this is the bundle node).
+ * Possible values: string (no default)
+
+ * remote-node: Name of the Pacemaker Remote guest node this resource is associated with, if any
+ * Name of the Pacemaker Remote guest node this resource is associated with, if any. If specified, this both enables the resource as a guest node and defines the unique name used to identify the guest node. The guest must be configured to run the Pacemaker Remote daemon when it is started. WARNING: This value cannot overlap with any resource or node IDs.
+ * Possible values: string (no default)
+
+ * remote-addr: If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote
+ * If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote. The Pacemaker Remote daemon on the guest must be configured to accept connections on this address. The default is the value of the remote-node meta-attribute.
+ * Possible values: string (no default)
+
+ * remote-port: If remote-node is specified, port on the guest used for its Pacemaker Remote connection
+ * If remote-node is specified, the port on the guest used for its Pacemaker Remote connection. The Pacemaker Remote daemon on the guest must be configured to listen on this port.
+ * Possible values: port (default: )
+
+ * remote-connect-timeout: If remote-node is specified, how long before a pending Pacemaker Remote guest connection times out.
+ * Possible values: timeout (default: )
+
+ * remote-allow-migrate: If remote-node is specified, this acts as the allow-migrate meta-attribute for the implicit remote connection resource (ocf:pacemaker:remote).
+ * Possible values: boolean (default: )
+=#=#=#= End test: List all available primitive meta-attributes - OK (0) =#=#=#=
+* Passed: crm_resource - List all available primitive meta-attributes
+=#=#=#= Begin test: List all available primitive meta-attributes (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_resource --list-options=primitive --all --output-as=xml">
+ <resource-agent name="primitive-meta" version="">
+ <version>1.1</version>
+ <longdesc lang="en">Meta-attributes applicable to primitive resources</longdesc>
+ <shortdesc lang="en">Primitive meta-attributes</shortdesc>
+ <parameters>
+ <parameter name="priority" advanced="0" generated="0">
+ <longdesc lang="en">If not all resources can be active, the cluster will stop lower-priority resources in order to keep higher-priority ones active.</longdesc>
+ <shortdesc lang="en">Resource assignment priority</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="critical" advanced="0" generated="0">
+ <longdesc lang="en">Use this value as the default for influence in all colocation constraints involving this resource, as well as in the implicit colocation constraints created if this resource is in a group.</longdesc>
+ <shortdesc lang="en">Default value for influence in colocation constraints</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="target-role" advanced="0" generated="0">
+ <longdesc lang="en">"Stopped" forces the resource to be stopped. "Started" allows the resource to be started (and in the case of promotable clone resources, promoted if appropriate). "Unpromoted" allows the resource to be started, but only in the unpromoted role if the resource is promotable. "Promoted" is equivalent to "Started".</longdesc>
+ <shortdesc lang="en">State the cluster should attempt to keep this resource in</shortdesc>
+ <content type="select" default="">
+ <option value="Stopped"/>
+ <option value="Started"/>
+ <option value="Unpromoted"/>
+ <option value="Promoted"/>
+ </content>
+ </parameter>
+ <parameter name="is-managed" advanced="0" generated="0">
+ <longdesc lang="en">If false, the cluster will not start, stop, promote, or demote the resource on any node. Recurring actions for the resource are unaffected. If true, a true value for the maintenance-mode cluster option, the maintenance node attribute, or the maintenance resource meta-attribute overrides this.</longdesc>
+ <shortdesc lang="en">Whether the cluster is allowed to actively change the resource's state</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="maintenance" advanced="0" generated="0">
+ <longdesc lang="en">If true, the cluster will not start, stop, promote, or demote the resource on any node, and will pause any recurring monitors (except those specifying role as "Stopped"). If false, a true value for the maintenance-mode cluster option or maintenance node attribute overrides this.</longdesc>
+ <shortdesc lang="en">If true, the cluster will not schedule any actions involving the resource</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="resource-stickiness" advanced="0" generated="0">
+ <longdesc lang="en">Score to add to the current node when a resource is already active. This allows running resources to stay where they are, even if they would be placed elsewhere if they were being started from a stopped state. The default is 1 for individual clone instances, and 0 for all other resources.</longdesc>
+ <shortdesc lang="en">Score to add to the current node when a resource is already active</shortdesc>
+ <content type="score"/>
+ </parameter>
+ <parameter name="requires" advanced="0" generated="0">
+ <longdesc lang="en">Conditions under which the resource can be started. "nothing" means the cluster can always start this resource. "quorum" means the cluster can start this resource only if a majority of the configured nodes are active. "fencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced. "unfencing" means the cluster can start this resource only if a majority of the configured nodes are active and any failed or unknown nodes have been fenced, and only on nodes that have been unfenced. The default is "quorum" for resources with a class of stonith; otherwise, "unfencing" if unfencing is active in the cluster; otherwise, "fencing" if the stonith-enabled cluster option is true; otherwise, "quorum".</longdesc>
+ <shortdesc lang="en">Conditions under which the resource can be started</shortdesc>
+ <content type="select">
+ <option value="nothing"/>
+ <option value="quorum"/>
+ <option value="fencing"/>
+ <option value="unfencing"/>
+ </content>
+ </parameter>
+ <parameter name="migration-threshold" advanced="0" generated="0">
+ <longdesc lang="en">Number of failures that may occur for this resource on a node, before that node is marked ineligible to host this resource. A value of 0 indicates that this feature is disabled (the node will never be marked ineligible). By contrast, the cluster treats "INFINITY" (the default) as a very large but finite number. This option has an effect only if the failed operation specifies its on-fail attribute as "restart" (the default), and additionally for failed start operations, if the start-failure-is-fatal cluster property is set to false.</longdesc>
+ <shortdesc lang="en">Number of failures on a node before the resource becomes ineligible to run there.</shortdesc>
+ <content type="score" default=""/>
+ </parameter>
+ <parameter name="failure-timeout" advanced="0" generated="0">
+ <longdesc lang="en">Number of seconds after a failed action for this resource before acting as if the failure had not occurred, and potentially allowing the resource back to the node on which it failed. A value of 0 indicates that this feature is disabled.</longdesc>
+ <shortdesc lang="en">Number of seconds before acting as if a failure had not occurred</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="multiple-active" advanced="0" generated="0">
+ <longdesc lang="en">What to do if the cluster finds the resource active on more than one node. "block" means to mark the resource as unmanaged. "stop_only" means to stop all active instances of this resource and leave them stopped. "stop_start" means to stop all active instances of this resource and start the resource in one location only. "stop_unexpected" means to stop all active instances of this resource except where the resource should be active. (This should be used only when extra instances are not expected to disrupt existing instances, and the resource agent's monitor of an existing instance is capable of detecting any problems that could be caused. Note that any resources ordered after this one will still need to be restarted.)</longdesc>
+ <shortdesc lang="en">What to do if the cluster finds the resource active on more than one node</shortdesc>
+ <content type="select" default="">
+ <option value="block"/>
+ <option value="stop_only"/>
+ <option value="stop_start"/>
+ <option value="stop_unexpected"/>
+ </content>
+ </parameter>
+ <parameter name="allow-migrate" advanced="0" generated="0">
+ <longdesc lang="en">Whether the cluster should try to "live migrate" this resource when it needs to be moved. The default is true for ocf:pacemaker:remote resources, and false otherwise.</longdesc>
+ <shortdesc lang="en">Whether the cluster should try to "live migrate" this resource when it needs to be moved</shortdesc>
+ <content type="boolean"/>
+ </parameter>
+ <parameter name="allow-unhealthy-nodes" advanced="0" generated="0">
+ <longdesc lang="en">Whether the resource should be allowed to run on a node even if the node's health score would otherwise prevent it</longdesc>
+ <shortdesc lang="en">Whether the resource should be allowed to run on a node even if the node's health score would otherwise prevent it</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ <parameter name="container-attribute-target" advanced="0" generated="0">
+ <longdesc lang="en">Whether to check user-defined node attributes on the physical host where a container is running or on the local node. This is usually set for a bundle resource and inherited by the bundle's primitive resource. A value of "host" means to check user-defined node attributes on the underlying physical host. Any other value means to check user-defined node attributes on the local node (for a bundled primitive resource, this is the bundle node).</longdesc>
+ <shortdesc lang="en">Where to check user-defined node attributes</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="remote-node" advanced="0" generated="0">
+ <longdesc lang="en">Name of the Pacemaker Remote guest node this resource is associated with, if any. If specified, this both enables the resource as a guest node and defines the unique name used to identify the guest node. The guest must be configured to run the Pacemaker Remote daemon when it is started. WARNING: This value cannot overlap with any resource or node IDs.</longdesc>
+ <shortdesc lang="en">Name of the Pacemaker Remote guest node this resource is associated with, if any</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="remote-addr" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote. The Pacemaker Remote daemon on the guest must be configured to accept connections on this address. The default is the value of the remote-node meta-attribute.</longdesc>
+ <shortdesc lang="en">If remote-node is specified, the IP address or hostname used to connect to the guest via Pacemaker Remote</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="remote-port" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, the port on the guest used for its Pacemaker Remote connection. The Pacemaker Remote daemon on the guest must be configured to listen on this port.</longdesc>
+ <shortdesc lang="en">If remote-node is specified, port on the guest used for its Pacemaker Remote connection</shortdesc>
+ <content type="port" default=""/>
+ </parameter>
+ <parameter name="remote-connect-timeout" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, how long before a pending Pacemaker Remote guest connection times out.</longdesc>
+ <shortdesc lang="en">If remote-node is specified, how long before a pending Pacemaker Remote guest connection times out.</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="remote-allow-migrate" advanced="0" generated="0">
+ <longdesc lang="en">If remote-node is specified, this acts as the allow-migrate meta-attribute for the implicit remote connection resource (ocf:pacemaker:remote).</longdesc>
+ <shortdesc lang="en">If remote-node is specified, this acts as the allow-migrate meta-attribute for the implicit remote connection resource (ocf:pacemaker:remote).</shortdesc>
+ <content type="boolean" default=""/>
+ </parameter>
+ </parameters>
+ </resource-agent>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List all available primitive meta-attributes (XML) - OK (0) =#=#=#=
+* Passed: crm_resource - List all available primitive meta-attributes (XML)
+=#=#=#= Begin test: List non-advanced fencing parameters =#=#=#=
+Fencing resource common parameters
+
+Special parameters that are available for all fencing resources, regardless of type. They are processed by Pacemaker, rather than by the fence agent or the fencing library.
+
+ * pcmk_host_map: A mapping of node names to port numbers for devices that do not support node names.
+ * For example, "node1:1;node2:2,3" would tell the cluster to use port 1 for node1 and ports 2 and 3 for node2.
+ * Possible values: string (no default)
+
+ * pcmk_host_list: Nodes targeted by this device
+ * Comma-separated list of nodes that can be targeted by this device (for example, "node1,node2,node3"). If pcmk_host_check is "static-list", either this or pcmk_host_map must be set.
+ * Possible values: string (no default)
+
+ * pcmk_host_check: How to determine which nodes can be targeted by the device
+ * Use "dynamic-list" to query the device via the 'list' command; "static-list" to check the pcmk_host_list attribute; "status" to query the device via the 'status' command; or "none" to assume every device can fence every node. The default value is "static-list" if pcmk_host_map or pcmk_host_list is set; otherwise "dynamic-list" if the device supports the list operation; otherwise "status" if the device supports the status operation; otherwise "none"
+ * Possible values: "dynamic-list", "static-list", "status", "none"
+
+ * pcmk_delay_max: Enable a delay of no more than the time specified before executing fencing actions.
+ * Enable a delay of no more than the time specified before executing fencing actions. Pacemaker derives the overall delay by taking the value of pcmk_delay_base and adding a random delay value such that the sum is kept below this maximum.
+ * Possible values: duration (default: )
+
+ * pcmk_delay_base: Enable a base delay for fencing actions and specify base delay value.
+ * This enables a static delay for fencing actions, which can help avoid "death matches" where two nodes try to fence each other at the same time. If pcmk_delay_max is also used, a random delay will be added such that the total delay is kept below that value. This can be set to a single time value to apply to any node targeted by this device (useful if a separate device is configured for each target), or to a node map (for example, "node1:1s;node2:5") to set a different value for each target.
+ * Possible values: string (default: )
+
+ * pcmk_action_limit: The maximum number of actions can be performed in parallel on this device
+ * Cluster property concurrent-fencing="true" needs to be configured first. Then use this to specify the maximum number of actions can be performed in parallel on this device. A value of -1 means an unlimited number of actions can be performed in parallel.
+ * Possible values: integer (default: )
+=#=#=#= End test: List non-advanced fencing parameters - OK (0) =#=#=#=
+* Passed: crm_resource - List non-advanced fencing parameters
+=#=#=#= Begin test: List non-advanced fencing parameters (XML) (shows all) =#=#=#=
+<pacemaker-result api-version="X" request="crm_resource --list-options=fencing --output-as=xml">
+ <resource-agent name="fence-attributes" version="">
+ <version>1.1</version>
+ <longdesc lang="en">Special parameters that are available for all fencing resources, regardless of type. They are processed by Pacemaker, rather than by the fence agent or the fencing library.</longdesc>
+ <shortdesc lang="en">Fencing resource common parameters</shortdesc>
+ <parameters>
+ <parameter name="pcmk_host_argument" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard 'port' parameter or may provide additional ones. Use this to specify an alternate, device-specific, parameter that should indicate the machine to be fenced. A value of "none" can be used to tell the cluster not to supply any additional parameters.</longdesc>
+ <shortdesc lang="en">An alternate parameter to supply instead of 'port'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_host_map" advanced="0" generated="0">
+ <longdesc lang="en">For example, "node1:1;node2:2,3" would tell the cluster to use port 1 for node1 and ports 2 and 3 for node2.</longdesc>
+ <shortdesc lang="en">A mapping of node names to port numbers for devices that do not support node names.</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="pcmk_host_list" advanced="0" generated="0">
+ <longdesc lang="en">Comma-separated list of nodes that can be targeted by this device (for example, "node1,node2,node3"). If pcmk_host_check is "static-list", either this or pcmk_host_map must be set.</longdesc>
+ <shortdesc lang="en">Nodes targeted by this device</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="pcmk_host_check" advanced="0" generated="0">
+ <longdesc lang="en">Use "dynamic-list" to query the device via the 'list' command; "static-list" to check the pcmk_host_list attribute; "status" to query the device via the 'status' command; or "none" to assume every device can fence every node. The default value is "static-list" if pcmk_host_map or pcmk_host_list is set; otherwise "dynamic-list" if the device supports the list operation; otherwise "status" if the device supports the status operation; otherwise "none"</longdesc>
+ <shortdesc lang="en">How to determine which nodes can be targeted by the device</shortdesc>
+ <content type="select">
+ <option value="dynamic-list"/>
+ <option value="static-list"/>
+ <option value="status"/>
+ <option value="none"/>
+ </content>
+ </parameter>
+ <parameter name="pcmk_delay_max" advanced="0" generated="0">
+ <longdesc lang="en">Enable a delay of no more than the time specified before executing fencing actions. Pacemaker derives the overall delay by taking the value of pcmk_delay_base and adding a random delay value such that the sum is kept below this maximum.</longdesc>
+ <shortdesc lang="en">Enable a delay of no more than the time specified before executing fencing actions.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="pcmk_delay_base" advanced="0" generated="0">
+ <longdesc lang="en">This enables a static delay for fencing actions, which can help avoid "death matches" where two nodes try to fence each other at the same time. If pcmk_delay_max is also used, a random delay will be added such that the total delay is kept below that value. This can be set to a single time value to apply to any node targeted by this device (useful if a separate device is configured for each target), or to a node map (for example, "node1:1s;node2:5") to set a different value for each target.</longdesc>
+ <shortdesc lang="en">Enable a base delay for fencing actions and specify base delay value.</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_action_limit" advanced="0" generated="0">
+ <longdesc lang="en">Cluster property concurrent-fencing="true" needs to be configured first. Then use this to specify the maximum number of actions can be performed in parallel on this device. A value of -1 means an unlimited number of actions can be performed in parallel.</longdesc>
+ <shortdesc lang="en">The maximum number of actions can be performed in parallel on this device</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_reboot_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'reboot' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'reboot'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_reboot_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'reboot' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'reboot' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_reboot_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'reboot' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'reboot' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_off_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'off' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'off'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_off_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'off' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'off' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_off_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'off' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'off' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_on_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'on' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'on'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_on_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'on' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'on' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_on_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'on' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'on' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_list_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'list' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'list'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_list_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'list' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'list' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_list_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'list' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'list' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_monitor_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'monitor' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'monitor'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_monitor_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'monitor' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'monitor' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_monitor_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'monitor' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'monitor' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_status_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'status' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'status'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_status_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'status' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'status' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_status_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'status' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'status' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ </parameters>
+ </resource-agent>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List non-advanced fencing parameters (XML) (shows all) - OK (0) =#=#=#=
+* Passed: crm_resource - List non-advanced fencing parameters (XML) (shows all)
+=#=#=#= Begin test: List all available fencing parameters =#=#=#=
+Fencing resource common parameters
+
+Special parameters that are available for all fencing resources, regardless of type. They are processed by Pacemaker, rather than by the fence agent or the fencing library.
+
+ * pcmk_host_map: A mapping of node names to port numbers for devices that do not support node names.
+ * For example, "node1:1;node2:2,3" would tell the cluster to use port 1 for node1 and ports 2 and 3 for node2.
+ * Possible values: string (no default)
+
+ * pcmk_host_list: Nodes targeted by this device
+ * Comma-separated list of nodes that can be targeted by this device (for example, "node1,node2,node3"). If pcmk_host_check is "static-list", either this or pcmk_host_map must be set.
+ * Possible values: string (no default)
+
+ * pcmk_host_check: How to determine which nodes can be targeted by the device
+ * Use "dynamic-list" to query the device via the 'list' command; "static-list" to check the pcmk_host_list attribute; "status" to query the device via the 'status' command; or "none" to assume every device can fence every node. The default value is "static-list" if pcmk_host_map or pcmk_host_list is set; otherwise "dynamic-list" if the device supports the list operation; otherwise "status" if the device supports the status operation; otherwise "none"
+ * Possible values: "dynamic-list", "static-list", "status", "none"
+
+ * pcmk_delay_max: Enable a delay of no more than the time specified before executing fencing actions.
+ * Enable a delay of no more than the time specified before executing fencing actions. Pacemaker derives the overall delay by taking the value of pcmk_delay_base and adding a random delay value such that the sum is kept below this maximum.
+ * Possible values: duration (default: )
+
+ * pcmk_delay_base: Enable a base delay for fencing actions and specify base delay value.
+ * This enables a static delay for fencing actions, which can help avoid "death matches" where two nodes try to fence each other at the same time. If pcmk_delay_max is also used, a random delay will be added such that the total delay is kept below that value. This can be set to a single time value to apply to any node targeted by this device (useful if a separate device is configured for each target), or to a node map (for example, "node1:1s;node2:5") to set a different value for each target.
+ * Possible values: string (default: )
+
+ * pcmk_action_limit: The maximum number of actions can be performed in parallel on this device
+ * Cluster property concurrent-fencing="true" needs to be configured first. Then use this to specify the maximum number of actions can be performed in parallel on this device. A value of -1 means an unlimited number of actions can be performed in parallel.
+ * Possible values: integer (default: )
+
+ * ADVANCED OPTIONS:
+
+ * pcmk_host_argument: An alternate parameter to supply instead of 'port'
+ * Some devices do not support the standard 'port' parameter or may provide additional ones. Use this to specify an alternate, device-specific, parameter that should indicate the machine to be fenced. A value of "none" can be used to tell the cluster not to supply any additional parameters.
+ * Possible values: string (default: )
+
+ * pcmk_reboot_action: An alternate command to run instead of 'reboot'
+ * Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'reboot' action.
+ * Possible values: string (default: )
+
+ * pcmk_reboot_timeout: Specify an alternate timeout to use for 'reboot' actions instead of stonith-timeout
+ * Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'reboot' actions.
+ * Possible values: timeout (default: )
+
+ * pcmk_reboot_retries: The maximum number of times to try the 'reboot' command within the timeout period
+ * Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'reboot' action before giving up.
+ * Possible values: integer (default: )
+
+ * pcmk_off_action: An alternate command to run instead of 'off'
+ * Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'off' action.
+ * Possible values: string (default: )
+
+ * pcmk_off_timeout: Specify an alternate timeout to use for 'off' actions instead of stonith-timeout
+ * Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'off' actions.
+ * Possible values: timeout (default: )
+
+ * pcmk_off_retries: The maximum number of times to try the 'off' command within the timeout period
+ * Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'off' action before giving up.
+ * Possible values: integer (default: )
+
+ * pcmk_on_action: An alternate command to run instead of 'on'
+ * Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'on' action.
+ * Possible values: string (default: )
+
+ * pcmk_on_timeout: Specify an alternate timeout to use for 'on' actions instead of stonith-timeout
+ * Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'on' actions.
+ * Possible values: timeout (default: )
+
+ * pcmk_on_retries: The maximum number of times to try the 'on' command within the timeout period
+ * Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'on' action before giving up.
+ * Possible values: integer (default: )
+
+ * pcmk_list_action: An alternate command to run instead of 'list'
+ * Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'list' action.
+ * Possible values: string (default: )
+
+ * pcmk_list_timeout: Specify an alternate timeout to use for 'list' actions instead of stonith-timeout
+ * Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'list' actions.
+ * Possible values: timeout (default: )
+
+ * pcmk_list_retries: The maximum number of times to try the 'list' command within the timeout period
+ * Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'list' action before giving up.
+ * Possible values: integer (default: )
+
+ * pcmk_monitor_action: An alternate command to run instead of 'monitor'
+ * Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'monitor' action.
+ * Possible values: string (default: )
+
+ * pcmk_monitor_timeout: Specify an alternate timeout to use for 'monitor' actions instead of stonith-timeout
+ * Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'monitor' actions.
+ * Possible values: timeout (default: )
+
+ * pcmk_monitor_retries: The maximum number of times to try the 'monitor' command within the timeout period
+ * Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'monitor' action before giving up.
+ * Possible values: integer (default: )
+
+ * pcmk_status_action: An alternate command to run instead of 'status'
+ * Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'status' action.
+ * Possible values: string (default: )
+
+ * pcmk_status_timeout: Specify an alternate timeout to use for 'status' actions instead of stonith-timeout
+ * Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'status' actions.
+ * Possible values: timeout (default: )
+
+ * pcmk_status_retries: The maximum number of times to try the 'status' command within the timeout period
+ * Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'status' action before giving up.
+ * Possible values: integer (default: )
+=#=#=#= End test: List all available fencing parameters - OK (0) =#=#=#=
+* Passed: crm_resource - List all available fencing parameters
+=#=#=#= Begin test: List all available fencing parameters (XML) =#=#=#=
+<pacemaker-result api-version="X" request="crm_resource --list-options=fencing --all --output-as=xml">
+ <resource-agent name="fence-attributes" version="">
+ <version>1.1</version>
+ <longdesc lang="en">Special parameters that are available for all fencing resources, regardless of type. They are processed by Pacemaker, rather than by the fence agent or the fencing library.</longdesc>
+ <shortdesc lang="en">Fencing resource common parameters</shortdesc>
+ <parameters>
+ <parameter name="pcmk_host_argument" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard 'port' parameter or may provide additional ones. Use this to specify an alternate, device-specific, parameter that should indicate the machine to be fenced. A value of "none" can be used to tell the cluster not to supply any additional parameters.</longdesc>
+ <shortdesc lang="en">An alternate parameter to supply instead of 'port'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_host_map" advanced="0" generated="0">
+ <longdesc lang="en">For example, "node1:1;node2:2,3" would tell the cluster to use port 1 for node1 and ports 2 and 3 for node2.</longdesc>
+ <shortdesc lang="en">A mapping of node names to port numbers for devices that do not support node names.</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="pcmk_host_list" advanced="0" generated="0">
+ <longdesc lang="en">Comma-separated list of nodes that can be targeted by this device (for example, "node1,node2,node3"). If pcmk_host_check is "static-list", either this or pcmk_host_map must be set.</longdesc>
+ <shortdesc lang="en">Nodes targeted by this device</shortdesc>
+ <content type="string"/>
+ </parameter>
+ <parameter name="pcmk_host_check" advanced="0" generated="0">
+ <longdesc lang="en">Use "dynamic-list" to query the device via the 'list' command; "static-list" to check the pcmk_host_list attribute; "status" to query the device via the 'status' command; or "none" to assume every device can fence every node. The default value is "static-list" if pcmk_host_map or pcmk_host_list is set; otherwise "dynamic-list" if the device supports the list operation; otherwise "status" if the device supports the status operation; otherwise "none"</longdesc>
+ <shortdesc lang="en">How to determine which nodes can be targeted by the device</shortdesc>
+ <content type="select">
+ <option value="dynamic-list"/>
+ <option value="static-list"/>
+ <option value="status"/>
+ <option value="none"/>
+ </content>
+ </parameter>
+ <parameter name="pcmk_delay_max" advanced="0" generated="0">
+ <longdesc lang="en">Enable a delay of no more than the time specified before executing fencing actions. Pacemaker derives the overall delay by taking the value of pcmk_delay_base and adding a random delay value such that the sum is kept below this maximum.</longdesc>
+ <shortdesc lang="en">Enable a delay of no more than the time specified before executing fencing actions.</shortdesc>
+ <content type="duration" default=""/>
+ </parameter>
+ <parameter name="pcmk_delay_base" advanced="0" generated="0">
+ <longdesc lang="en">This enables a static delay for fencing actions, which can help avoid "death matches" where two nodes try to fence each other at the same time. If pcmk_delay_max is also used, a random delay will be added such that the total delay is kept below that value. This can be set to a single time value to apply to any node targeted by this device (useful if a separate device is configured for each target), or to a node map (for example, "node1:1s;node2:5") to set a different value for each target.</longdesc>
+ <shortdesc lang="en">Enable a base delay for fencing actions and specify base delay value.</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_action_limit" advanced="0" generated="0">
+ <longdesc lang="en">Cluster property concurrent-fencing="true" needs to be configured first. Then use this to specify the maximum number of actions can be performed in parallel on this device. A value of -1 means an unlimited number of actions can be performed in parallel.</longdesc>
+ <shortdesc lang="en">The maximum number of actions can be performed in parallel on this device</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_reboot_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'reboot' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'reboot'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_reboot_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'reboot' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'reboot' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_reboot_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'reboot' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'reboot' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_off_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'off' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'off'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_off_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'off' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'off' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_off_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'off' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'off' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_on_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'on' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'on'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_on_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'on' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'on' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_on_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'on' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'on' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_list_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'list' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'list'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_list_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'list' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'list' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_list_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'list' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'list' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_monitor_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'monitor' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'monitor'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_monitor_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'monitor' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'monitor' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_monitor_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'monitor' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'monitor' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ <parameter name="pcmk_status_action" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support the standard commands or may provide additional ones. Use this to specify an alternate, device-specific, command that implements the 'status' action.</longdesc>
+ <shortdesc lang="en">An alternate command to run instead of 'status'</shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+ <parameter name="pcmk_status_timeout" advanced="1" generated="0">
+ <longdesc lang="en">Some devices need much more/less time to complete than normal. Use this to specify an alternate, device-specific, timeout for 'status' actions.</longdesc>
+ <shortdesc lang="en">Specify an alternate timeout to use for 'status' actions instead of stonith-timeout</shortdesc>
+ <content type="timeout" default=""/>
+ </parameter>
+ <parameter name="pcmk_status_retries" advanced="1" generated="0">
+ <longdesc lang="en">Some devices do not support multiple connections. Operations may "fail" if the device is busy with another task. In that case, Pacemaker will automatically retry the operation if there is time remaining. Use this option to alter the number of times Pacemaker tries a 'status' action before giving up.</longdesc>
+ <shortdesc lang="en">The maximum number of times to try the 'status' command within the timeout period</shortdesc>
+ <content type="integer" default=""/>
+ </parameter>
+ </parameters>
+ </resource-agent>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List all available fencing parameters (XML) - OK (0) =#=#=#=
+* Passed: crm_resource - List all available fencing parameters (XML)
=#=#=#= Begin test: crm_resource given both -r and resource config =#=#=#=
crm_resource: --resource cannot be used with --class, --agent, and --provider
=#=#=#= End test: crm_resource given both -r and resource config - Incorrect usage (64) =#=#=#=
@@ -1166,6 +3104,13 @@ unpack_resources error: Resource start-up disabled since no STONITH resources h
unpack_resources error: Either configure some or disable STONITH with the stonith-enabled option
unpack_resources error: NOTE: Clusters with shared data need STONITH to ensure data integrity
<pacemaker-result api-version="X" request="crm_resource -r dummy --meta -p target-role -v Stopped --output-as=xml">
+ <resource-settings>
+ <primitive id="dummy">
+ <meta_attributes id="dummy-meta_attributes">
+ <nvpair id="dummy-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </primitive>
+ </resource-settings>
<status code="0" message="OK"/>
</pacemaker-result>
=#=#=#= End test: Create another resource meta attribute - OK (0) =#=#=#=
@@ -2083,7 +4028,7 @@ Error performing operation: No such object
* Passed: crm_resource - Try to move a resource that doesn't exist
=#=#=#= Begin test: Move a resource from its existing location =#=#=#=
WARNING: Creating rsc_location constraint 'cli-ban-dummy-on-node1' with a score of -INFINITY for resource dummy on node1.
- This will prevent dummy from running on node1 until the constraint is removed using the clear option or by editing the CIB with an appropriate tool
+ This will prevent dummy from running on node1 until the constraint is removed using the clear option or by editing the CIB with an appropriate tool.
This will be the case even if node1 is the last node in the cluster
=#=#=#= Current cib after: Move a resource from its existing location =#=#=#=
<cib epoch="28" num_updates="0" admin_epoch="0">
@@ -2303,6 +4248,34 @@ false
</cib>
=#=#=#= End test: Set ticket granted state - OK (0) =#=#=#=
* Passed: crm_ticket - Set ticket granted state
+=#=#=#= Begin test: List ticket IDs =#=#=#=
+ticketA
+=#=#=#= End test: List ticket IDs - OK (0) =#=#=#=
+* Passed: crm_ticket - List ticket IDs
+=#=#=#= Begin test: List ticket IDs, outputting in XML =#=#=#=
+<pacemaker-result api-version="X" request="crm_ticket -w --output-as=xml">
+ <tickets>
+ <ticket id="ticketA" status="revoked" standby="false" granted="false"/>
+ </tickets>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List ticket IDs, outputting in XML - OK (0) =#=#=#=
+* Passed: crm_ticket - List ticket IDs, outputting in XML
+=#=#=#= Begin test: Query ticket state =#=#=#=
+State XML:
+
+<ticket_state id="ticketA" granted="false"/>
+=#=#=#= End test: Query ticket state - OK (0) =#=#=#=
+* Passed: crm_ticket - Query ticket state
+=#=#=#= Begin test: Query ticket state, outputting as xml =#=#=#=
+<pacemaker-result api-version="X" request="crm_ticket -t ticketA -q --output-as=xml">
+ <tickets>
+ <ticket id="ticketA" granted="false"/>
+ </tickets>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: Query ticket state, outputting as xml - OK (0) =#=#=#=
+* Passed: crm_ticket - Query ticket state, outputting as xml
=#=#=#= Begin test: Query ticket granted state =#=#=#=
false
=#=#=#= Current cib after: Query ticket granted state =#=#=#=
@@ -2360,6 +4333,17 @@ false
</cib>
=#=#=#= End test: Query ticket granted state - OK (0) =#=#=#=
* Passed: crm_ticket - Query ticket granted state
+=#=#=#= Begin test: Query ticket granted state, outputting as xml =#=#=#=
+<pacemaker-result api-version="X" request="crm_ticket -t ticketA -G granted --output-as=xml">
+ <tickets>
+ <ticket id="ticketA">
+ <attribute name="granted" value="false"/>
+ </ticket>
+ </tickets>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: Query ticket granted state, outputting as xml - OK (0) =#=#=#=
+* Passed: crm_ticket - Query ticket granted state, outputting as xml
=#=#=#= Begin test: Delete ticket granted state =#=#=#=
=#=#=#= Current cib after: Delete ticket granted state =#=#=#=
<cib epoch="29" num_updates="2" admin_epoch="0">
@@ -2585,9 +4569,207 @@ true
</cib>
=#=#=#= End test: Activate a ticket - OK (0) =#=#=#=
* Passed: crm_ticket - Activate a ticket
+=#=#=#= Begin test: List ticket details =#=#=#=
+ticketA revoked (standby=false)
+=#=#=#= End test: List ticket details - OK (0) =#=#=#=
+* Passed: crm_ticket - List ticket details
+=#=#=#= Begin test: List ticket details, outputting as XML =#=#=#=
+<pacemaker-result api-version="X" request="crm_ticket -L -t ticketA --output-as=xml">
+ <tickets>
+ <ticket id="ticketA" status="revoked" standby="false"/>
+ </tickets>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List ticket details, outputting as XML - OK (0) =#=#=#=
+* Passed: crm_ticket - List ticket details, outputting as XML
+=#=#=#= Begin test: Add a second ticket =#=#=#=
+false
+=#=#=#= Current cib after: Add a second ticket =#=#=#=
+<cib epoch="29" num_updates="4" admin_epoch="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
+ </cluster_property_set>
+ <cluster_property_set id="duplicate">
+ <nvpair id="duplicate-cluster-delay" name="cluster-delay" value="30s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes>
+ <node id="node1" uname="node1">
+ <instance_attributes id="nodes-node1">
+ <nvpair id="nodes-node1-ram" name="ram" value="1024M"/>
+ </instance_attributes>
+ <utilization id="nodes-node1-utilization">
+ <nvpair id="nodes-node1-utilization-cpu" name="cpu" value="1"/>
+ </utilization>
+ </node>
+ </nodes>
+ <resources>
+ <primitive id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <meta_attributes id="dummy-meta_attributes"/>
+ <instance_attributes id="dummy-instance_attributes">
+ <nvpair id="dummy-instance_attributes-delay" name="delay" value="10s"/>
+ </instance_attributes>
+ </primitive>
+ <primitive id="Fence" class="stonith" type="fence_true"/>
+ </resources>
+ <constraints/>
+ </configuration>
+ <status>
+ <node_state id="node1" uname="node1" in_ccm="true" crmd="online" join="member" expected="member" crm-debug-origin="crm_simulate">
+ <transient_attributes id="node1">
+ <instance_attributes id="status-node1"/>
+ </transient_attributes>
+ <lrm id="node1">
+ <lrm_resources>
+ <lrm_resource id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <lrm_rsc_op id="dummy_last_0" operation_key="dummy_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="0830891652dabe627ca72b8e879199b1"/>
+ </lrm_resource>
+ <lrm_resource id="Fence" class="stonith" type="fence_true">
+ <lrm_rsc_op id="Fence_last_0" operation_key="Fence_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ <tickets>
+ <ticket_state id="ticketA" standby="false"/>
+ </tickets>
+ </status>
+</cib>
+=#=#=#= End test: Add a second ticket - OK (0) =#=#=#=
+* Passed: crm_ticket - Add a second ticket
+=#=#=#= Begin test: Set second ticket granted state =#=#=#=
+=#=#=#= Current cib after: Set second ticket granted state =#=#=#=
+<cib epoch="29" num_updates="5" admin_epoch="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
+ </cluster_property_set>
+ <cluster_property_set id="duplicate">
+ <nvpair id="duplicate-cluster-delay" name="cluster-delay" value="30s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes>
+ <node id="node1" uname="node1">
+ <instance_attributes id="nodes-node1">
+ <nvpair id="nodes-node1-ram" name="ram" value="1024M"/>
+ </instance_attributes>
+ <utilization id="nodes-node1-utilization">
+ <nvpair id="nodes-node1-utilization-cpu" name="cpu" value="1"/>
+ </utilization>
+ </node>
+ </nodes>
+ <resources>
+ <primitive id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <meta_attributes id="dummy-meta_attributes"/>
+ <instance_attributes id="dummy-instance_attributes">
+ <nvpair id="dummy-instance_attributes-delay" name="delay" value="10s"/>
+ </instance_attributes>
+ </primitive>
+ <primitive id="Fence" class="stonith" type="fence_true"/>
+ </resources>
+ <constraints/>
+ </configuration>
+ <status>
+ <node_state id="node1" uname="node1" in_ccm="true" crmd="online" join="member" expected="member" crm-debug-origin="crm_simulate">
+ <transient_attributes id="node1">
+ <instance_attributes id="status-node1"/>
+ </transient_attributes>
+ <lrm id="node1">
+ <lrm_resources>
+ <lrm_resource id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <lrm_rsc_op id="dummy_last_0" operation_key="dummy_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="0830891652dabe627ca72b8e879199b1"/>
+ </lrm_resource>
+ <lrm_resource id="Fence" class="stonith" type="fence_true">
+ <lrm_rsc_op id="Fence_last_0" operation_key="Fence_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ <tickets>
+ <ticket_state id="ticketA" standby="false"/>
+ <ticket_state id="ticketB" granted="false"/>
+ </tickets>
+ </status>
+</cib>
+=#=#=#= End test: Set second ticket granted state - OK (0) =#=#=#=
+* Passed: crm_ticket - Set second ticket granted state
+=#=#=#= Begin test: List tickets =#=#=#=
+ticketA revoked
+ticketB revoked
+=#=#=#= End test: List tickets - OK (0) =#=#=#=
+* Passed: crm_ticket - List tickets
+=#=#=#= Begin test: List tickets, outputting as XML =#=#=#=
+<pacemaker-result api-version="X" request="crm_ticket -l --output-as=xml">
+ <tickets>
+ <ticket id="ticketA" status="revoked" standby="false"/>
+ <ticket id="ticketB" status="revoked" standby="false" granted="false"/>
+ </tickets>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: List tickets, outputting as XML - OK (0) =#=#=#=
+* Passed: crm_ticket - List tickets, outputting as XML
+=#=#=#= Begin test: Delete second ticket =#=#=#=
+=#=#=#= Current cib after: Delete second ticket =#=#=#=
+<cib epoch="29" num_updates="6" admin_epoch="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
+ </cluster_property_set>
+ <cluster_property_set id="duplicate">
+ <nvpair id="duplicate-cluster-delay" name="cluster-delay" value="30s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes>
+ <node id="node1" uname="node1">
+ <instance_attributes id="nodes-node1">
+ <nvpair id="nodes-node1-ram" name="ram" value="1024M"/>
+ </instance_attributes>
+ <utilization id="nodes-node1-utilization">
+ <nvpair id="nodes-node1-utilization-cpu" name="cpu" value="1"/>
+ </utilization>
+ </node>
+ </nodes>
+ <resources>
+ <primitive id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <meta_attributes id="dummy-meta_attributes"/>
+ <instance_attributes id="dummy-instance_attributes">
+ <nvpair id="dummy-instance_attributes-delay" name="delay" value="10s"/>
+ </instance_attributes>
+ </primitive>
+ <primitive id="Fence" class="stonith" type="fence_true"/>
+ </resources>
+ <constraints/>
+ </configuration>
+ <status>
+ <node_state id="node1" uname="node1" in_ccm="true" crmd="online" join="member" expected="member" crm-debug-origin="crm_simulate">
+ <transient_attributes id="node1">
+ <instance_attributes id="status-node1"/>
+ </transient_attributes>
+ <lrm id="node1">
+ <lrm_resources>
+ <lrm_resource id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <lrm_rsc_op id="dummy_last_0" operation_key="dummy_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="0830891652dabe627ca72b8e879199b1"/>
+ </lrm_resource>
+ <lrm_resource id="Fence" class="stonith" type="fence_true">
+ <lrm_rsc_op id="Fence_last_0" operation_key="Fence_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ <tickets>
+ <ticket_state id="ticketA" standby="false"/>
+ </tickets>
+ </status>
+</cib>
+=#=#=#= End test: Delete second ticket - OK (0) =#=#=#=
+* Passed: cibadmin - Delete second ticket
=#=#=#= Begin test: Delete ticket standby state =#=#=#=
=#=#=#= Current cib after: Delete ticket standby state =#=#=#=
-<cib epoch="29" num_updates="5" admin_epoch="0">
+<cib epoch="29" num_updates="7" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -2641,11 +4823,147 @@ true
</cib>
=#=#=#= End test: Delete ticket standby state - OK (0) =#=#=#=
* Passed: crm_ticket - Delete ticket standby state
+=#=#=#= Begin test: Delete ticket standby state =#=#=#=
+=#=#=#= Current cib after: Delete ticket standby state =#=#=#=
+<cib epoch="30" num_updates="0" admin_epoch="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
+ </cluster_property_set>
+ <cluster_property_set id="duplicate">
+ <nvpair id="duplicate-cluster-delay" name="cluster-delay" value="30s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes>
+ <node id="node1" uname="node1">
+ <instance_attributes id="nodes-node1">
+ <nvpair id="nodes-node1-ram" name="ram" value="1024M"/>
+ </instance_attributes>
+ <utilization id="nodes-node1-utilization">
+ <nvpair id="nodes-node1-utilization-cpu" name="cpu" value="1"/>
+ </utilization>
+ </node>
+ </nodes>
+ <resources>
+ <primitive id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <meta_attributes id="dummy-meta_attributes"/>
+ <instance_attributes id="dummy-instance_attributes">
+ <nvpair id="dummy-instance_attributes-delay" name="delay" value="10s"/>
+ </instance_attributes>
+ </primitive>
+ <primitive id="Fence" class="stonith" type="fence_true"/>
+ </resources>
+ <constraints>
+ <rsc_ticket id="dummy-dep-ticketA" rsc="dummy" rsc-role="Started" ticket="ticketA" loss-policy="freeze"/>
+ </constraints>
+ </configuration>
+ <status>
+ <node_state id="node1" uname="node1" in_ccm="true" crmd="online" join="member" expected="member" crm-debug-origin="crm_simulate">
+ <transient_attributes id="node1">
+ <instance_attributes id="status-node1"/>
+ </transient_attributes>
+ <lrm id="node1">
+ <lrm_resources>
+ <lrm_resource id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <lrm_rsc_op id="dummy_last_0" operation_key="dummy_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="0830891652dabe627ca72b8e879199b1"/>
+ </lrm_resource>
+ <lrm_resource id="Fence" class="stonith" type="fence_true">
+ <lrm_rsc_op id="Fence_last_0" operation_key="Fence_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ <tickets>
+ <ticket_state id="ticketA"/>
+ </tickets>
+ </status>
+</cib>
+=#=#=#= End test: Delete ticket standby state - OK (0) =#=#=#=
+* Passed: cibadmin - Delete ticket standby state
+=#=#=#= Begin test: Query ticket constraints =#=#=#=
+Constraints XML:
+
+<rsc_ticket id="dummy-dep-ticketA" rsc="dummy" rsc-role="Started" ticket="ticketA" loss-policy="freeze"/>
+=#=#=#= End test: Query ticket constraints - OK (0) =#=#=#=
+* Passed: crm_ticket - Query ticket constraints
+=#=#=#= Begin test: Query ticket constraints, outputting as xml =#=#=#=
+<pacemaker-result api-version="X" request="crm_ticket -t ticketA -c --output-as=xml">
+ <tickets>
+ <ticket id="ticketA">
+ <constraints>
+ <rsc_ticket id="dummy-dep-ticketA" rsc="dummy" rsc-role="Started" ticket="ticketA" loss-policy="freeze"/>
+ </constraints>
+ </ticket>
+ </tickets>
+ <resources>
+ <resource id="dummy"/>
+ </resources>
+ <status code="0" message="OK"/>
+</pacemaker-result>
+=#=#=#= End test: Query ticket constraints, outputting as xml - OK (0) =#=#=#=
+* Passed: crm_ticket - Query ticket constraints, outputting as xml
+=#=#=#= Begin test: Delete ticket constraint =#=#=#=
+=#=#=#= Current cib after: Delete ticket constraint =#=#=#=
+<cib epoch="31" num_updates="0" admin_epoch="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
+ </cluster_property_set>
+ <cluster_property_set id="duplicate">
+ <nvpair id="duplicate-cluster-delay" name="cluster-delay" value="30s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes>
+ <node id="node1" uname="node1">
+ <instance_attributes id="nodes-node1">
+ <nvpair id="nodes-node1-ram" name="ram" value="1024M"/>
+ </instance_attributes>
+ <utilization id="nodes-node1-utilization">
+ <nvpair id="nodes-node1-utilization-cpu" name="cpu" value="1"/>
+ </utilization>
+ </node>
+ </nodes>
+ <resources>
+ <primitive id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <meta_attributes id="dummy-meta_attributes"/>
+ <instance_attributes id="dummy-instance_attributes">
+ <nvpair id="dummy-instance_attributes-delay" name="delay" value="10s"/>
+ </instance_attributes>
+ </primitive>
+ <primitive id="Fence" class="stonith" type="fence_true"/>
+ </resources>
+ <constraints/>
+ </configuration>
+ <status>
+ <node_state id="node1" uname="node1" in_ccm="true" crmd="online" join="member" expected="member" crm-debug-origin="crm_simulate">
+ <transient_attributes id="node1">
+ <instance_attributes id="status-node1"/>
+ </transient_attributes>
+ <lrm id="node1">
+ <lrm_resources>
+ <lrm_resource id="dummy" class="ocf" provider="pacemaker" type="Dummy">
+ <lrm_rsc_op id="dummy_last_0" operation_key="dummy_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="0830891652dabe627ca72b8e879199b1"/>
+ </lrm_resource>
+ <lrm_resource id="Fence" class="stonith" type="fence_true">
+ <lrm_rsc_op id="Fence_last_0" operation_key="Fence_start_0" operation="start" crm-debug-origin="crm_simulate" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ <tickets>
+ <ticket_state id="ticketA"/>
+ </tickets>
+ </status>
+</cib>
+=#=#=#= End test: Delete ticket constraint - OK (0) =#=#=#=
+* Passed: cibadmin - Delete ticket constraint
=#=#=#= Begin test: Ban a resource on unknown node =#=#=#=
crm_resource: Node 'host1' not found
Error performing operation: No such object
=#=#=#= Current cib after: Ban a resource on unknown node =#=#=#=
-<cib epoch="29" num_updates="5" admin_epoch="0">
+<cib epoch="31" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -2731,7 +5049,7 @@ Revised Cluster Status:
* dummy (ocf:pacemaker:Dummy): Started node1
* Fence (stonith:fence_true): Started node2
=#=#=#= Current cib after: Create two more nodes and bring them online =#=#=#=
-<cib epoch="31" num_updates="8" admin_epoch="0">
+<cib epoch="33" num_updates="8" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -2813,10 +5131,10 @@ Revised Cluster Status:
* Passed: crm_simulate - Create two more nodes and bring them online
=#=#=#= Begin test: Ban dummy from node1 =#=#=#=
WARNING: Creating rsc_location constraint 'cli-ban-dummy-on-node1' with a score of -INFINITY for resource dummy on node1.
- This will prevent dummy from running on node1 until the constraint is removed using the clear option or by editing the CIB with an appropriate tool
+ This will prevent dummy from running on node1 until the constraint is removed using the clear option or by editing the CIB with an appropriate tool.
This will be the case even if node1 is the last node in the cluster
=#=#=#= Current cib after: Ban dummy from node1 =#=#=#=
-<cib epoch="32" num_updates="0" admin_epoch="0">
+<cib epoch="34" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -2912,7 +5230,7 @@ Locations:
<status code="0" message="OK"/>
</pacemaker-result>
=#=#=#= Current cib after: Ban dummy from node2 =#=#=#=
-<cib epoch="33" num_updates="0" admin_epoch="0">
+<cib epoch="35" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3019,7 +5337,7 @@ Revised Cluster Status:
* dummy (ocf:pacemaker:Dummy): Started node3
* Fence (stonith:fence_true): Started node2
=#=#=#= Current cib after: Relocate resources due to ban =#=#=#=
-<cib epoch="33" num_updates="2" admin_epoch="0">
+<cib epoch="35" num_updates="2" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3107,7 +5425,7 @@ Revised Cluster Status:
<status code="0" message="OK"/>
</pacemaker-result>
=#=#=#= Current cib after: Move dummy to node1 =#=#=#=
-<cib epoch="35" num_updates="0" admin_epoch="0">
+<cib epoch="37" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3193,7 +5511,7 @@ Revised Cluster Status:
=#=#=#= Begin test: Clear implicit constraints for dummy on node2 =#=#=#=
Removing constraint: cli-ban-dummy-on-node2
=#=#=#= Current cib after: Clear implicit constraints for dummy on node2 =#=#=#=
-<cib epoch="36" num_updates="0" admin_epoch="0">
+<cib epoch="38" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3285,7 +5603,7 @@ Removing constraint: cli-ban-dummy-on-node2
Performing update of 'is-managed' on 'test-clone', the parent of 'test-primitive'
Set 'test-clone' option: id=test-clone-meta_attributes-is-managed set=test-clone-meta_attributes name=is-managed value=false
=#=#=#= Current cib after: Create a resource meta attribute =#=#=#=
-<cib epoch="38" num_updates="0" admin_epoch="0">
+<cib epoch="40" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3333,7 +5651,7 @@ Set 'test-clone' option: id=test-clone-meta_attributes-is-managed set=test-clone
=#=#=#= Begin test: Create a resource meta attribute in the primitive =#=#=#=
Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed set=test-primitive-meta_attributes name=is-managed value=false
=#=#=#= Current cib after: Create a resource meta attribute in the primitive =#=#=#=
-<cib epoch="39" num_updates="0" admin_epoch="0">
+<cib epoch="41" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3390,7 +5708,7 @@ Multiple attributes match name=is-managed
A value for 'is-managed' already exists in child 'test-primitive', performing update on that instead of 'test-clone'
Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed name=is-managed value=true
=#=#=#= Current cib after: Update resource meta attribute with duplicates =#=#=#=
-<cib epoch="40" num_updates="0" admin_epoch="0">
+<cib epoch="42" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3442,7 +5760,7 @@ Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed name=i
=#=#=#= Begin test: Update resource meta attribute with duplicates (force clone) =#=#=#=
Set 'test-clone' option: id=test-clone-meta_attributes-is-managed name=is-managed value=true
=#=#=#= Current cib after: Update resource meta attribute with duplicates (force clone) =#=#=#=
-<cib epoch="41" num_updates="0" admin_epoch="0">
+<cib epoch="43" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3498,7 +5816,7 @@ Multiple attributes match name=is-managed
Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed name=is-managed value=false
=#=#=#= Current cib after: Update child resource meta attribute with duplicates =#=#=#=
-<cib epoch="42" num_updates="0" admin_epoch="0">
+<cib epoch="44" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3555,7 +5873,7 @@ Multiple attributes match name=is-managed
A value for 'is-managed' already exists in child 'test-primitive', performing delete on that instead of 'test-clone'
Deleted 'test-primitive' option: id=test-primitive-meta_attributes-is-managed name=is-managed
=#=#=#= Current cib after: Delete resource meta attribute with duplicates =#=#=#=
-<cib epoch="43" num_updates="0" admin_epoch="0">
+<cib epoch="45" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3606,7 +5924,7 @@ Deleted 'test-primitive' option: id=test-primitive-meta_attributes-is-managed na
Performing delete of 'is-managed' on 'test-clone', the parent of 'test-primitive'
Deleted 'test-clone' option: id=test-clone-meta_attributes-is-managed name=is-managed
=#=#=#= Current cib after: Delete resource meta attribute in parent =#=#=#=
-<cib epoch="44" num_updates="0" admin_epoch="0">
+<cib epoch="46" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3654,7 +5972,7 @@ Deleted 'test-clone' option: id=test-clone-meta_attributes-is-managed name=is-ma
=#=#=#= Begin test: Create a resource meta attribute in the primitive =#=#=#=
Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed set=test-primitive-meta_attributes name=is-managed value=false
=#=#=#= Current cib after: Create a resource meta attribute in the primitive =#=#=#=
-<cib epoch="45" num_updates="0" admin_epoch="0">
+<cib epoch="47" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3705,7 +6023,7 @@ Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed set=te
A value for 'is-managed' already exists in child 'test-primitive', performing update on that instead of 'test-clone'
Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed name=is-managed value=true
=#=#=#= Current cib after: Update existing resource meta attribute =#=#=#=
-<cib epoch="46" num_updates="0" admin_epoch="0">
+<cib epoch="48" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3755,7 +6073,7 @@ Set 'test-primitive' option: id=test-primitive-meta_attributes-is-managed name=i
=#=#=#= Begin test: Create a resource meta attribute in the parent =#=#=#=
Set 'test-clone' option: id=test-clone-meta_attributes-is-managed set=test-clone-meta_attributes name=is-managed value=true
=#=#=#= Current cib after: Create a resource meta attribute in the parent =#=#=#=
-<cib epoch="47" num_updates="0" admin_epoch="0">
+<cib epoch="49" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3810,7 +6128,7 @@ Set 'test-clone' option: id=test-clone-meta_attributes-is-managed set=test-clone
=#=#=#= Begin test: Delete resource parent meta attribute (force) =#=#=#=
Deleted 'test-clone' option: id=test-clone-meta_attributes-is-managed name=is-managed
=#=#=#= Current cib after: Delete resource parent meta attribute (force) =#=#=#=
-<cib epoch="48" num_updates="0" admin_epoch="0">
+<cib epoch="50" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3859,7 +6177,7 @@ Deleted 'test-clone' option: id=test-clone-meta_attributes-is-managed name=is-ma
* Passed: crm_resource - Delete resource parent meta attribute (force)
=#=#=#= Begin test: Restore duplicates =#=#=#=
=#=#=#= Current cib after: Restore duplicates =#=#=#=
-<cib epoch="49" num_updates="0" admin_epoch="0">
+<cib epoch="51" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3915,7 +6233,7 @@ Multiple attributes match name=is-managed
Deleted 'test-primitive' option: id=test-primitive-meta_attributes-is-managed name=is-managed
=#=#=#= Current cib after: Delete resource child meta attribute =#=#=#=
-<cib epoch="50" num_updates="0" admin_epoch="0">
+<cib epoch="52" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -3964,7 +6282,7 @@ Deleted 'test-primitive' option: id=test-primitive-meta_attributes-is-managed na
* Passed: crm_resource - Delete resource child meta attribute
=#=#=#= Begin test: Create the dummy-group resource group =#=#=#=
=#=#=#= Current cib after: Create the dummy-group resource group =#=#=#=
-<cib epoch="51" num_updates="0" admin_epoch="0">
+<cib epoch="53" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4018,7 +6336,7 @@ Deleted 'test-primitive' option: id=test-primitive-meta_attributes-is-managed na
=#=#=#= Begin test: Create a resource meta attribute in dummy1 =#=#=#=
Set 'dummy1' option: id=dummy1-meta_attributes-is-managed set=dummy1-meta_attributes name=is-managed value=true
=#=#=#= Current cib after: Create a resource meta attribute in dummy1 =#=#=#=
-<cib epoch="52" num_updates="0" admin_epoch="0">
+<cib epoch="54" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4077,7 +6395,7 @@ Set 'dummy1' option: id=dummy1-meta_attributes-is-managed set=dummy1-meta_attrib
Set 'dummy1' option: id=dummy1-meta_attributes-is-managed name=is-managed value=false
Set 'dummy-group' option: id=dummy-group-meta_attributes-is-managed set=dummy-group-meta_attributes name=is-managed value=false
=#=#=#= Current cib after: Create a resource meta attribute in dummy-group =#=#=#=
-<cib epoch="54" num_updates="0" admin_epoch="0">
+<cib epoch="56" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4137,7 +6455,7 @@ Set 'dummy-group' option: id=dummy-group-meta_attributes-is-managed set=dummy-gr
* Passed: crm_resource - Create a resource meta attribute in dummy-group
=#=#=#= Begin test: Delete the dummy-group resource group =#=#=#=
=#=#=#= Current cib after: Delete the dummy-group resource group =#=#=#=
-<cib epoch="55" num_updates="0" admin_epoch="0">
+<cib epoch="57" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4187,7 +6505,7 @@ Set 'dummy-group' option: id=dummy-group-meta_attributes-is-managed set=dummy-gr
=#=#=#= Begin test: Specify a lifetime when moving a resource =#=#=#=
Migration will take effect until:
=#=#=#= Current cib after: Specify a lifetime when moving a resource =#=#=#=
-<cib epoch="57" num_updates="0" admin_epoch="0">
+<cib epoch="59" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4241,7 +6559,7 @@ Migration will take effect until:
* Passed: crm_resource - Specify a lifetime when moving a resource
=#=#=#= Begin test: Try to move a resource previously moved with a lifetime =#=#=#=
=#=#=#= Current cib after: Try to move a resource previously moved with a lifetime =#=#=#=
-<cib epoch="59" num_updates="0" admin_epoch="0">
+<cib epoch="61" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4291,10 +6609,10 @@ Migration will take effect until:
=#=#=#= Begin test: Ban dummy from node1 for a short time =#=#=#=
Migration will take effect until:
WARNING: Creating rsc_location constraint 'cli-ban-dummy-on-node1' with a score of -INFINITY for resource dummy on node1.
- This will prevent dummy from running on node1 until the constraint is removed using the clear option or by editing the CIB with an appropriate tool
+ This will prevent dummy from running on node1 until the constraint is removed using the clear option or by editing the CIB with an appropriate tool.
This will be the case even if node1 is the last node in the cluster
=#=#=#= Current cib after: Ban dummy from node1 for a short time =#=#=#=
-<cib epoch="60" num_updates="0" admin_epoch="0">
+<cib epoch="62" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4350,7 +6668,7 @@ WARNING: Creating rsc_location constraint 'cli-ban-dummy-on-node1' with a score
=#=#=#= Begin test: Remove expired constraints =#=#=#=
Removing constraint: cli-ban-dummy-on-node1
=#=#=#= Current cib after: Remove expired constraints =#=#=#=
-<cib epoch="61" num_updates="0" admin_epoch="0">
+<cib epoch="63" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4400,7 +6718,7 @@ Removing constraint: cli-ban-dummy-on-node1
=#=#=#= Begin test: Clear all implicit constraints for dummy =#=#=#=
Removing constraint: cli-prefer-dummy
=#=#=#= Current cib after: Clear all implicit constraints for dummy =#=#=#=
-<cib epoch="62" num_updates="0" admin_epoch="0">
+<cib epoch="64" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4447,7 +6765,7 @@ Removing constraint: cli-prefer-dummy
* Passed: crm_resource - Clear all implicit constraints for dummy
=#=#=#= Begin test: Set a node health strategy =#=#=#=
=#=#=#= Current cib after: Set a node health strategy =#=#=#=
-<cib epoch="63" num_updates="0" admin_epoch="0">
+<cib epoch="65" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4495,7 +6813,7 @@ Removing constraint: cli-prefer-dummy
* Passed: crm_attribute - Set a node health strategy
=#=#=#= Begin test: Set a node health attribute =#=#=#=
=#=#=#= Current cib after: Set a node health attribute =#=#=#=
-<cib epoch="64" num_updates="0" admin_epoch="0">
+<cib epoch="66" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4556,7 +6874,7 @@ Removing constraint: cli-prefer-dummy
* Passed: crm_resource - Show why a resource is not running on an unhealthy node
=#=#=#= Begin test: Delete a resource =#=#=#=
=#=#=#= Current cib after: Delete a resource =#=#=#=
-<cib epoch="65" num_updates="0" admin_epoch="0">
+<cib epoch="67" num_updates="0" admin_epoch="0">
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
@@ -4609,8 +6927,8 @@ Removing constraint: cli-prefer-dummy
<change operation="delete" path="/cib/configuration/comment" position="0"/>
<change operation="delete" path="/cib/configuration/comment" position="1"/>
<change operation="delete" path="/cib/configuration/resources/comment" position="0"/>
- <change operation="delete" path="/cib/configuration/resources/primitive[@id=&apos;Fencing&apos;]/operations/op[@id=&apos;Fencing-start-0&apos;]"/>
- <change operation="modify" path="/cib/configuration/crm_config/cluster_property_set[@id=&apos;cib-bootstrap-options&apos;]/nvpair[@id=&apos;cib-bootstrap-options-cluster-name&apos;]">
+ <change operation="delete" path="/cib/configuration/resources/primitive[@id='Fencing']/operations/op[@id='Fencing-start-0']"/>
+ <change operation="modify" path="/cib/configuration/crm_config/cluster_property_set[@id='cib-bootstrap-options']/nvpair[@id='cib-bootstrap-options-cluster-name']">
<change-list>
<change-attr name="value" operation="set" value="mycluster"/>
<change-attr name="name" operation="set" value="cluster-name"/>
@@ -4628,7 +6946,7 @@ Removing constraint: cli-prefer-dummy
<change operation="create" path="/cib/configuration/resources" position="0">
<!-- test: modify this comment to say something different -->
</change>
- <change operation="modify" path="/cib/configuration/resources/primitive[@id=&apos;Fencing&apos;]/instance_attributes[@id=&apos;Fencing-params&apos;]/nvpair[@id=&apos;Fencing-pcmk_host_list&apos;]">
+ <change operation="modify" path="/cib/configuration/resources/primitive[@id='Fencing']/instance_attributes[@id='Fencing-params']/nvpair[@id='Fencing-pcmk_host_list']">
<change-list>
<change-attr name="value" operation="set" value="node1 node2 node3 node4"/>
</change-list>
@@ -4636,7 +6954,7 @@ Removing constraint: cli-prefer-dummy
<nvpair id="Fencing-pcmk_host_list" name="pcmk_host_list" value="node1 node2 node3 node4"/>
</change-result>
</change>
- <change operation="modify" path="/cib/configuration/resources/primitive[@id=&apos;Fencing&apos;]/operations/op[@id=&apos;Fencing-monitor-120s&apos;]">
+ <change operation="modify" path="/cib/configuration/resources/primitive[@id='Fencing']/operations/op[@id='Fencing-monitor-120s']">
<change-list>
<change-attr name="timeout" operation="set" value="120s"/>
<change-attr name="name" operation="set" value="monitor"/>
@@ -4645,9 +6963,9 @@ Removing constraint: cli-prefer-dummy
<op id="Fencing-monitor-120s" interval="120s" timeout="120s" name="monitor"/>
</change-result>
</change>
- <change operation="move" path="/cib/configuration/resources/primitive[@id=&apos;dummy&apos;]/instance_attributes[@id=&apos;dummy-params&apos;]/nvpair[@id=&apos;dummy-op_sleep&apos;]" position="1"/>
- <change operation="move" path="/cib/configuration/resources/primitive[@id=&apos;dummy&apos;]/instance_attributes[@id=&apos;dummy-params&apos;]/nvpair[@id=&apos;dummy-fake&apos;]" position="2"/>
- <change operation="modify" path="/cib/configuration/resources/primitive[@id=&apos;dummy&apos;]/operations/op[@id=&apos;dummy-monitor-5s&apos;]">
+ <change operation="move" path="/cib/configuration/resources/primitive[@id='dummy']/instance_attributes[@id='dummy-params']/nvpair[@id='dummy-op_sleep']" position="1"/>
+ <change operation="move" path="/cib/configuration/resources/primitive[@id='dummy']/instance_attributes[@id='dummy-params']/nvpair[@id='dummy-fake']" position="2"/>
+ <change operation="modify" path="/cib/configuration/resources/primitive[@id='dummy']/operations/op[@id='dummy-monitor-5s']">
<change-list>
<change-attr name="name" operation="set" value="monitor"/>
<change-attr name="timeout" operation="unset"/>
@@ -5225,11 +7543,36 @@ Resources colocated with gr2:
A new shadow instance was created. To begin using it, enter the following into your shell:
export CIB_shadow=cts-cli
=#=#=#= Begin test: Set a meta-attribute for primitive and resources colocated with it =#=#=#=
-Set 'prim5' option: id=prim5-meta_attributes-target-role set=prim5-meta_attributes name=target-role value=Stopped
-Set 'prim4' option: id=prim4-meta_attributes-target-role set=prim4-meta_attributes name=target-role value=Stopped
-Set 'prim10' option: id=prim10-meta_attributes-target-role set=prim10-meta_attributes name=target-role value=Stopped
-Set 'prim3' option: id=prim3-meta_attributes-target-role set=prim3-meta_attributes name=target-role value=Stopped
-Set 'prim2' option: id=prim2-meta_attributes-target-role set=prim2-meta_attributes name=target-role value=Stopped
+<pacemaker-result api-version="X" request="crm_resource -r prim5 --meta --set-parameter=target-role -v Stopped --recursive --output-as=xml">
+ <resource-settings>
+ <primitive id="prim5">
+ <meta_attributes id="prim5-meta_attributes">
+ <nvpair id="prim5-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </primitive>
+ <primitive id="prim4">
+ <meta_attributes id="prim4-meta_attributes">
+ <nvpair id="prim4-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </primitive>
+ <primitive id="prim10">
+ <meta_attributes id="prim10-meta_attributes">
+ <nvpair id="prim10-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </primitive>
+ <primitive id="prim3">
+ <meta_attributes id="prim3-meta_attributes">
+ <nvpair id="prim3-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </primitive>
+ <primitive id="prim2">
+ <meta_attributes id="prim2-meta_attributes">
+ <nvpair id="prim2-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </primitive>
+ </resource-settings>
+ <status code="0" message="OK"/>
+</pacemaker-result>
=#=#=#= End test: Set a meta-attribute for primitive and resources colocated with it - OK (0) =#=#=#=
* Passed: crm_resource - Set a meta-attribute for primitive and resources colocated with it
=#=#=#= Begin test: Set a meta-attribute for group and resource colocated with it =#=#=#=
@@ -5238,8 +7581,21 @@ Set 'prim7' option: id=prim7-meta_attributes-target-role set=prim7-meta_attribut
=#=#=#= End test: Set a meta-attribute for group and resource colocated with it - OK (0) =#=#=#=
* Passed: crm_resource - Set a meta-attribute for group and resource colocated with it
=#=#=#= Begin test: Set a meta-attribute for clone and resource colocated with it =#=#=#=
-Set 'clone' option: id=clone-meta_attributes-target-role set=clone-meta_attributes name=target-role value=Stopped
-Set 'prim9' option: id=prim9-meta_attributes-target-role set=prim9-meta_attributes name=target-role value=Stopped
+<pacemaker-result api-version="X" request="crm_resource -r clone --meta --set-parameter=target-role -v Stopped --recursive --output-as=xml">
+ <resource-settings>
+ <clone id="clone">
+ <meta_attributes id="clone-meta_attributes">
+ <nvpair id="clone-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </clone>
+ <primitive id="prim9">
+ <meta_attributes id="prim9-meta_attributes">
+ <nvpair id="prim9-meta_attributes-target-role" value="Stopped" name="target-role"/>
+ </meta_attributes>
+ </primitive>
+ </resource-settings>
+ <status code="0" message="OK"/>
+</pacemaker-result>
=#=#=#= End test: Set a meta-attribute for clone and resource colocated with it - OK (0) =#=#=#=
* Passed: crm_resource - Set a meta-attribute for clone and resource colocated with it
=#=#=#= Begin test: Show resource digests =#=#=#=
@@ -5705,7 +8061,7 @@ Started: [ cluster01 cluster02 ]
Promoted: [ cluster02 ]
Unpromoted: [ cluster01 ]
-Only 'private' parameters to 60s-interval monitor for dummy on cluster02 changed: 0:0;16:2:0:4a9e64d6-e1dd-4395-917c-1596312eafe4
+Only 'private' parameters to 1m-interval monitor for dummy on cluster02 changed: 0:0;16:2:0:4a9e64d6-e1dd-4395-917c-1596312eafe4
Original: cluster01 capacity:
Original: cluster02 capacity:
Original: httpd-bundle-0 capacity:
@@ -5774,7 +8130,7 @@ Current cluster status:
Performing Requested Modifications:
* Injecting ping_monitor_10000@cluster02=1 into the configuration
- * Injecting attribute fail-count-ping#monitor_10000=value++ into /node_state '2'
+ * Injecting attribute fail-count-ping#monitor_10000=1 into /node_state '2'
* Injecting attribute last-failure-ping#monitor_10000= into /node_state '2'
Transition Summary:
@@ -6142,7 +8498,7 @@ crm_attribute: Error performing operation: No such device or address
=#=#=#= End test: Update a nonexistent promotable score attribute (XML) - OK (0) =#=#=#=
* Passed: crm_attribute - Update a nonexistent promotable score attribute (XML)
=#=#=#= Begin test: Query after updating a nonexistent promotable score attribute =#=#=#=
-scope=status name=master-promotable-rsc value=1
+scope=status name=master-promotable-rsc value=1
=#=#=#= End test: Query after updating a nonexistent promotable score attribute - OK (0) =#=#=#=
* Passed: crm_attribute - Query after updating a nonexistent promotable score attribute
=#=#=#= Begin test: Query after updating a nonexistent promotable score attribute (XML) =#=#=#=
@@ -6162,7 +8518,7 @@ scope=status name=master-promotable-rsc value=1
=#=#=#= End test: Update an existing promotable score attribute (XML) - OK (0) =#=#=#=
* Passed: crm_attribute - Update an existing promotable score attribute (XML)
=#=#=#= Begin test: Query after updating an existing promotable score attribute =#=#=#=
-scope=status name=master-promotable-rsc value=5
+scope=status name=master-promotable-rsc value=5
=#=#=#= End test: Query after updating an existing promotable score attribute - OK (0) =#=#=#=
* Passed: crm_attribute - Query after updating an existing promotable score attribute
=#=#=#= Begin test: Query after updating an existing promotable score attribute (XML) =#=#=#=
@@ -6206,7 +8562,7 @@ crm_attribute: Error performing operation: No such device or address
=#=#=#= End test: Update a promotable score attribute to -INFINITY (XML) - OK (0) =#=#=#=
* Passed: crm_attribute - Update a promotable score attribute to -INFINITY (XML)
=#=#=#= Begin test: Query after updating a promotable score attribute to -INFINITY =#=#=#=
-scope=status name=master-promotable-rsc value=-INFINITY
+scope=status name=master-promotable-rsc value=-INFINITY
=#=#=#= End test: Query after updating a promotable score attribute to -INFINITY - OK (0) =#=#=#=
* Passed: crm_attribute - Query after updating a promotable score attribute to -INFINITY
=#=#=#= Begin test: Query after updating a promotable score attribute to -INFINITY (XML) =#=#=#=
@@ -6217,7 +8573,7 @@ scope=status name=master-promotable-rsc value=-INFINITY
=#=#=#= End test: Query after updating a promotable score attribute to -INFINITY (XML) - OK (0) =#=#=#=
* Passed: crm_attribute - Query after updating a promotable score attribute to -INFINITY (XML)
=#=#=#= Begin test: Try OCF_RESOURCE_INSTANCE if -p is specified with an empty string =#=#=#=
-scope=status name=master-promotable-rsc value=-INFINITY
+scope=status name=master-promotable-rsc value=-INFINITY
=#=#=#= End test: Try OCF_RESOURCE_INSTANCE if -p is specified with an empty string - OK (0) =#=#=#=
* Passed: crm_attribute - Try OCF_RESOURCE_INSTANCE if -p is specified with an empty string
=#=#=#= Begin test: Return usage error if both -p and OCF_RESOURCE_INSTANCE are empty strings =#=#=#=
@@ -7048,7 +9404,7 @@ Diff: +++ 1.4.1 (null)
<cib epoch="4" num_updates="1" admin_epoch="1"/>
</change-result>
</change>
- <change operation="modify" path="/cib/configuration/resources/primitive[@id=&apos;dummy&apos;]">
+ <change operation="modify" path="/cib/configuration/resources/primitive[@id='dummy']">
<change-list>
<change-attr name="description" operation="set" value="desc"/>
</change-list>
@@ -7667,7 +10023,7 @@ Diff: +++ 0.1.0 (null)
-- /cib/status/node_state[@id='1']
-- /cib/status/node_state[@id='httpd-bundle-0']
-- /cib/status/node_state[@id='httpd-bundle-1']
-+ /cib: @crm_feature_set=3.19.0, @num_updates=0, @admin_epoch=0
++ /cib: @validate-with=pacemaker-X, @num_updates=0, @admin_epoch=0
-- /cib: @cib-last-written, @update-origin, @update-client, @update-user, @have-quorum, @dc-uuid
=#=#=#= End test: Get active shadow instance's diff (empty CIB) - Error occurred (1) =#=#=#=
* Passed: crm_shadow - Get active shadow instance's diff (empty CIB)
@@ -7679,29 +10035,30 @@ Diff: +++ 0.1.0 (null)
<source admin_epoch="1" epoch="1" num_updates="173"/>
<target admin_epoch="0" epoch="1" num_updates="0"/>
</version>
- <change operation="delete" path="/cib/configuration/crm_config/cluster_property_set[@id=&apos;cib-bootstrap-options&apos;]"/>
- <change operation="delete" path="/cib/configuration/nodes/node[@id=&apos;1&apos;]"/>
- <change operation="delete" path="/cib/configuration/nodes/node[@id=&apos;2&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/clone[@id=&apos;ping-clone&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/primitive[@id=&apos;Fencing&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/primitive[@id=&apos;dummy&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/clone[@id=&apos;inactive-clone&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/group[@id=&apos;inactive-group&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/bundle[@id=&apos;httpd-bundle&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/group[@id=&apos;exim-group&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/clone[@id=&apos;mysql-clone-group&apos;]"/>
- <change operation="delete" path="/cib/configuration/resources/clone[@id=&apos;promotable-clone&apos;]"/>
- <change operation="delete" path="/cib/configuration/constraints/rsc_location[@id=&apos;not-on-cluster1&apos;]"/>
- <change operation="delete" path="/cib/configuration/constraints/rsc_location[@id=&apos;loc-promotable-clone&apos;]"/>
+ <change operation="delete" path="/cib/configuration/crm_config/cluster_property_set[@id='cib-bootstrap-options']"/>
+ <change operation="delete" path="/cib/configuration/nodes/node[@id='1']"/>
+ <change operation="delete" path="/cib/configuration/nodes/node[@id='2']"/>
+ <change operation="delete" path="/cib/configuration/resources/clone[@id='ping-clone']"/>
+ <change operation="delete" path="/cib/configuration/resources/primitive[@id='Fencing']"/>
+ <change operation="delete" path="/cib/configuration/resources/primitive[@id='dummy']"/>
+ <change operation="delete" path="/cib/configuration/resources/clone[@id='inactive-clone']"/>
+ <change operation="delete" path="/cib/configuration/resources/group[@id='inactive-group']"/>
+ <change operation="delete" path="/cib/configuration/resources/bundle[@id='httpd-bundle']"/>
+ <change operation="delete" path="/cib/configuration/resources/group[@id='exim-group']"/>
+ <change operation="delete" path="/cib/configuration/resources/clone[@id='mysql-clone-group']"/>
+ <change operation="delete" path="/cib/configuration/resources/clone[@id='promotable-clone']"/>
+ <change operation="delete" path="/cib/configuration/constraints/rsc_location[@id='not-on-cluster1']"/>
+ <change operation="delete" path="/cib/configuration/constraints/rsc_location[@id='loc-promotable-clone']"/>
<change operation="delete" path="/cib/configuration/tags"/>
<change operation="delete" path="/cib/configuration/op_defaults"/>
- <change operation="delete" path="/cib/status/node_state[@id=&apos;2&apos;]"/>
- <change operation="delete" path="/cib/status/node_state[@id=&apos;1&apos;]"/>
- <change operation="delete" path="/cib/status/node_state[@id=&apos;httpd-bundle-0&apos;]"/>
- <change operation="delete" path="/cib/status/node_state[@id=&apos;httpd-bundle-1&apos;]"/>
+ <change operation="delete" path="/cib/status/node_state[@id='2']"/>
+ <change operation="delete" path="/cib/status/node_state[@id='1']"/>
+ <change operation="delete" path="/cib/status/node_state[@id='httpd-bundle-0']"/>
+ <change operation="delete" path="/cib/status/node_state[@id='httpd-bundle-1']"/>
<change operation="modify" path="/cib">
<change-list>
- <change-attr name="crm_feature_set" operation="set" value="3.19.0"/>
+ <change-attr name="crm_feature_set" operation="set" value=""/>
+ <change-attr name="validate-with" operation="set" value="pacemaker-X"/>
<change-attr name="num_updates" operation="set" value="0"/>
<change-attr name="admin_epoch" operation="set" value="0"/>
<change-attr name="cib-last-written" operation="unset"/>
@@ -7898,49 +10255,63 @@ crm_shadow: Could not access shadow instance 'cts-cli': No such file or director
</pacemaker-result>
=#=#=#= End test: Switch to nonexistent shadow instance (force) (XML) - No such object (105) =#=#=#=
* Passed: crm_shadow - Switch to nonexistent shadow instance (force) (XML)
-=#=#=#= Begin test: Verify a file-specified invalid configuration, outputting as xml =#=#=#=
+=#=#=#= Begin test: Verify a file-specified invalid configuration (text output) =#=#=#=
+Errors found during check: config not valid
+-V may provide more details
+=#=#=#= End test: Verify a file-specified invalid configuration (text output) - Invalid configuration (78) =#=#=#=
+* Passed: crm_verify - Verify a file-specified invalid configuration (text output)
+=#=#=#= Begin test: Verify a file-specified invalid configuration (verbose text output) =#=#=#=
+unpack_config warning: Blind faith: not fencing unseen nodes
+Resource test2:0 is of type systemd and therefore cannot be used as a promotable clone resource
+Ignoring <clone> resource 'test2-clone' because configuration is invalid
+CIB did not pass schema validation
+Errors found during check: config not valid
+=#=#=#= End test: Verify a file-specified invalid configuration (verbose text output) - Invalid configuration (78) =#=#=#=
+* Passed: crm_verify - Verify a file-specified invalid configuration (verbose text output)
+=#=#=#= Begin test: Verify a file-specified invalid configuration (quiet text output) =#=#=#=
+=#=#=#= End test: Verify a file-specified invalid configuration (quiet text output) - Invalid configuration (78) =#=#=#=
+* Passed: crm_verify - Verify a file-specified invalid configuration (quiet text output)
+=#=#=#= Begin test: Verify a file-specified invalid configuration (XML output) =#=#=#=
<pacemaker-result api-version="X" request="crm_verify_invalid_bz.xml --output-as=xml">
<status code="78" message="Invalid configuration">
<errors>
<error>Resource test2:0 is of type systemd and therefore cannot be used as a promotable clone resource</error>
<error>Ignoring &lt;clone&gt; resource 'test2-clone' because configuration is invalid</error>
- <error>crm_verify: Errors found during check: config not valid</error>
+ <error>CIB did not pass schema validation</error>
+ <error>Errors found during check: config not valid</error>
</errors>
</status>
</pacemaker-result>
-=#=#=#= End test: Verify a file-specified invalid configuration, outputting as xml - Invalid configuration (78) =#=#=#=
-* Passed: crm_verify - Verify a file-specified invalid configuration, outputting as xml
-=#=#=#= Begin test: Verify another file-specified invalid configuration, outputting as xml =#=#=#=
-<pacemaker-result api-version="X" request="crm_verify_invalid_no_stonith.xml --output-as=xml">
+=#=#=#= End test: Verify a file-specified invalid configuration (XML output) - Invalid configuration (78) =#=#=#=
+* Passed: crm_verify - Verify a file-specified invalid configuration (XML output)
+=#=#=#= Begin test: Verify a file-specified invalid configuration (verbose XML output) =#=#=#=
+unpack_config warning: Blind faith: not fencing unseen nodes
+<pacemaker-result api-version="X" request="crm_verify_invalid_bz.xml --output-as=xml --verbose">
<status code="78" message="Invalid configuration">
<errors>
- <error>Resource start-up disabled since no STONITH resources have been defined</error>
- <error>Either configure some or disable STONITH with the stonith-enabled option</error>
- <error>NOTE: Clusters with shared data need STONITH to ensure data integrity</error>
- <error>Node pcmk-1 is unclean but cannot be fenced</error>
- <error>Node pcmk-2 is unclean but cannot be fenced</error>
- <error>crm_verify: Errors found during check: config not valid</error>
+ <error>Resource test2:0 is of type systemd and therefore cannot be used as a promotable clone resource</error>
+ <error>Ignoring &lt;clone&gt; resource 'test2-clone' because configuration is invalid</error>
+ <error>CIB did not pass schema validation</error>
+ <error>Errors found during check: config not valid</error>
</errors>
</status>
</pacemaker-result>
-=#=#=#= End test: Verify another file-specified invalid configuration, outputting as xml - Invalid configuration (78) =#=#=#=
-* Passed: crm_verify - Verify another file-specified invalid configuration, outputting as xml
-=#=#=#= Begin test: Verbosely verify a file-specified invalid configuration, outputting as xml =#=#=#=
-unpack_config warning: Blind faith: not fencing unseen nodes
-<pacemaker-result api-version="X" request="crm_verify_invalid_bz.xml --output-as=xml --verbose">
+=#=#=#= End test: Verify a file-specified invalid configuration (verbose XML output) - Invalid configuration (78) =#=#=#=
+* Passed: crm_verify - Verify a file-specified invalid configuration (verbose XML output)
+=#=#=#= Begin test: Verify a file-specified invalid configuration (quiet XML output) =#=#=#=
+<pacemaker-result api-version="X" request="crm_verify_invalid_bz.xml --output-as=xml --quiet">
<status code="78" message="Invalid configuration">
<errors>
<error>Resource test2:0 is of type systemd and therefore cannot be used as a promotable clone resource</error>
<error>Ignoring &lt;clone&gt; resource 'test2-clone' because configuration is invalid</error>
- <error>crm_verify: Errors found during check: config not valid</error>
+ <error>CIB did not pass schema validation</error>
</errors>
</status>
</pacemaker-result>
-=#=#=#= End test: Verbosely verify a file-specified invalid configuration, outputting as xml - Invalid configuration (78) =#=#=#=
-* Passed: crm_verify - Verbosely verify a file-specified invalid configuration, outputting as xml
-=#=#=#= Begin test: Verbosely verify another file-specified invalid configuration, outputting as xml =#=#=#=
-(cluster_status@status.c:113) warning: Fencing and resource management disabled due to lack of quorum
-<pacemaker-result api-version="X" request="crm_verify_invalid_no_stonith.xml --output-as=xml --verbose">
+=#=#=#= End test: Verify a file-specified invalid configuration (quiet XML output) - Invalid configuration (78) =#=#=#=
+* Passed: crm_verify - Verify a file-specified invalid configuration (quiet XML output)
+=#=#=#= Begin test: Verify another file-specified invalid configuration (XML output) =#=#=#=
+<pacemaker-result api-version="X" request="crm_verify_invalid_no_stonith.xml --output-as=xml">
<status code="78" message="Invalid configuration">
<errors>
<error>Resource start-up disabled since no STONITH resources have been defined</error>
@@ -7948,12 +10319,13 @@ unpack_config warning: Blind faith: not fencing unseen nodes
<error>NOTE: Clusters with shared data need STONITH to ensure data integrity</error>
<error>Node pcmk-1 is unclean but cannot be fenced</error>
<error>Node pcmk-2 is unclean but cannot be fenced</error>
- <error>crm_verify: Errors found during check: config not valid</error>
+ <error>CIB did not pass schema validation</error>
+ <error>Errors found during check: config not valid</error>
</errors>
</status>
</pacemaker-result>
-=#=#=#= End test: Verbosely verify another file-specified invalid configuration, outputting as xml - Invalid configuration (78) =#=#=#=
-* Passed: crm_verify - Verbosely verify another file-specified invalid configuration, outputting as xml
+=#=#=#= End test: Verify another file-specified invalid configuration (XML output) - Invalid configuration (78) =#=#=#=
+* Passed: crm_verify - Verify another file-specified invalid configuration (XML output)
=#=#=#= Begin test: Verify a file-specified valid configuration, outputting as xml =#=#=#=
<pacemaker-result api-version="X" request="crm_mon.xml --output-as=xml">
<status code="0" message="OK"/>
diff --git a/cts/cli/regression.upgrade.exp b/cts/cli/regression.upgrade.exp
index d1aeeb5..00ee754 100644
--- a/cts/cli/regression.upgrade.exp
+++ b/cts/cli/regression.upgrade.exp
@@ -57,47 +57,28 @@ A new shadow instance was created. To begin using it, enter the following into y
=#=#=#= End test: Configure the initial resource - OK (0) =#=#=#=
* Passed: cibadmin - Configure the initial resource
=#=#=#= Begin test: Upgrade to latest CIB schema (trigger 2.10.xsl + the wrapping) =#=#=#=
-update_validation debug: Testing 'pacemaker-2.10' validation (13 of X)
-update_validation debug: Upgrading pacemaker-2.10-style configuration to pacemaker-3.0 with upgrade-2.10.xsl
-apply_upgrade debug: Upgrading pacemaker-2.10-style configuration, pre-upgrade phase with upgrade-2.10-enter.xsl
-apply_upgrade debug: Upgrading pacemaker-2.10-style configuration, main phase with upgrade-2.10.xsl
+pcmk__update_schema debug: Schema pacemaker-2.10 validates
+apply_upgrade debug: Upgrading schema from pacemaker-2.10 to pacemaker-3.0: applying pre-upgrade XSL transform upgrade-2.10-enter
+apply_upgrade debug: Upgrading schema from pacemaker-2.10 to pacemaker-3.0: applying upgrade XSL transform upgrade-2.10
INFO: Resources-operation instance_attributes: mySmartFuse-monitor-inputpower (rsc=mySmartFuse, meta=mySmartFuse-inputpower-instanceparams): dropping requires
INFO: Resources-operation instance_attributes: ... only start/promote operation taken into account
INFO: Resources-operation instance_attributes: mySmartFuse-monitor-outputpower (rsc=mySmartFuse, meta=mySmartFuse-outputpower-instanceparams): dropping requires
INFO: Resources-operation instance_attributes: ... only start/promote operation taken into account
-apply_upgrade debug: Upgrading pacemaker-2.10-style configuration, post-upgrade phase with upgrade-2.10-leave.xsl
+apply_upgrade debug: Upgrading schema from pacemaker-2.10 to pacemaker-3.0: applying post-upgrade XSL transform upgrade-2.10-leave
DEBUG: instance_attributes: original element pointed to with @id-ref (mySmartFuse-outputpower-instanceparams) disappeared during upgrade
-update_validation info: Transformation upgrade-2.10.xsl successful
-update_validation debug: Testing 'pacemaker-3.0' validation (14 of X)
-update_validation debug: pacemaker-3.0-style configuration is also valid for pacemaker-3.1
-update_validation debug: Testing 'pacemaker-3.1' validation (15 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.1
-update_validation debug: pacemaker-3.1-style configuration is also valid for pacemaker-3.2
-update_validation debug: Testing 'pacemaker-3.2' validation (16 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.2
-update_validation debug: pacemaker-3.2-style configuration is also valid for pacemaker-3.3
-update_validation debug: Testing 'pacemaker-3.3' validation (17 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.3
-update_validation debug: pacemaker-3.3-style configuration is also valid for pacemaker-3.4
-update_validation debug: Testing 'pacemaker-3.4' validation (18 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.4
-update_validation debug: pacemaker-3.4-style configuration is also valid for pacemaker-3.5
-update_validation debug: Testing 'pacemaker-3.5' validation (19 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.5
-update_validation debug: pacemaker-3.5-style configuration is also valid for pacemaker-3.6
-update_validation debug: Testing 'pacemaker-3.6' validation (20 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.6
-update_validation debug: pacemaker-3.6-style configuration is also valid for pacemaker-3.7
-update_validation debug: Testing 'pacemaker-3.7' validation (21 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.7
-update_validation debug: pacemaker-3.7-style configuration is also valid for pacemaker-3.8
-update_validation debug: Testing 'pacemaker-3.8' validation (22 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.8
-update_validation debug: pacemaker-3.8-style configuration is also valid for pacemaker-3.9
-update_validation debug: Testing 'pacemaker-3.9' validation (23 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.9
-update_validation trace: Stopping at pacemaker-3.9
-update_validation info: Transformed the configuration from pacemaker-2.10 to pacemaker-3.9
+apply_upgrade info: Schema upgrade from pacemaker-2.10 to pacemaker-3.0 succeeded
+pcmk__update_schema debug: Schema pacemaker-3.0 validates
+pcmk__update_schema debug: Schema pacemaker-3.1 validates
+pcmk__update_schema debug: Schema pacemaker-3.2 validates
+pcmk__update_schema debug: Schema pacemaker-3.3 validates
+pcmk__update_schema debug: Schema pacemaker-3.4 validates
+pcmk__update_schema debug: Schema pacemaker-3.5 validates
+pcmk__update_schema debug: Schema pacemaker-3.6 validates
+pcmk__update_schema debug: Schema pacemaker-3.7 validates
+pcmk__update_schema debug: Schema pacemaker-3.8 validates
+pcmk__update_schema debug: Schema pacemaker-3.9 validates
+pcmk__update_schema debug: Schema pacemaker-3.10 validates
+pcmk__update_schema info: Transformed the configuration schema to pacemaker-3.10
=#=#=#= Current cib after: Upgrade to latest CIB schema (trigger 2.10.xsl + the wrapping) =#=#=#=
<cib epoch="2" num_updates="0" admin_epoch="1">
<configuration>
diff --git a/cts/cli/regression.validity.exp b/cts/cli/regression.validity.exp
index 3a62ab4..f020b20 100644
--- a/cts/cli/regression.validity.exp
+++ b/cts/cli/regression.validity.exp
@@ -2,21 +2,6 @@ Created new pacemaker configuration
A new shadow instance was created. To begin using it, enter the following into your shell:
export CIB_shadow=cts-cli
=#=#=#= Begin test: Try to make resulting CIB invalid (enum violation) =#=#=#=
- 1 <cib epoch="5" num_updates="0" admin_epoch="0">
- 2 <configuration>
- 3 <crm_config/>
- 4 <nodes/>
- 5 <resources>
- 6 <primitive id="dummy1" class="ocf" provider="pacemaker" type="Dummy"/>
- 7 <primitive id="dummy2" class="ocf" provider="pacemaker" type="Dummy"/>
- 8 </resources>
- 9 <constraints>
- 10 <rsc_order id="ord_1-2" first="dummy1" first-action="break" then="dummy2"/>
- 11 </constraints>
- 12 </configuration>
- 13 <status/>
- 14 </cib>
- 15
Call failed: Update does not conform to the configured schema
=#=#=#= Current cib after: Try to make resulting CIB invalid (enum violation) =#=#=#=
<cib epoch="4" num_updates="0" admin_epoch="0">
@@ -36,117 +21,82 @@ Call failed: Update does not conform to the configured schema
=#=#=#= End test: Try to make resulting CIB invalid (enum violation) - Invalid configuration (78) =#=#=#=
* Passed: cibadmin - Try to make resulting CIB invalid (enum violation)
=#=#=#= Begin test: Run crm_simulate with invalid CIB (enum violation) =#=#=#=
-update_validation debug: Testing 'pacemaker-1.2' validation (1 of X)
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-1.2 validation failed
-update_validation debug: Testing 'pacemaker-1.3' validation (2 of X)
+pcmk__update_schema debug: Schema pacemaker-1.2 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-1.3 validation failed
-update_validation debug: Testing 'pacemaker-2.0' validation (3 of X)
+pcmk__update_schema debug: Schema pacemaker-1.3 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.0 validation failed
-update_validation debug: Testing 'pacemaker-2.1' validation (4 of X)
+pcmk__update_schema debug: Schema pacemaker-2.0 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.1 validation failed
-update_validation debug: Testing 'pacemaker-2.2' validation (5 of X)
+pcmk__update_schema debug: Schema pacemaker-2.1 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.2 validation failed
-update_validation debug: Testing 'pacemaker-2.3' validation (6 of X)
+pcmk__update_schema debug: Schema pacemaker-2.2 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.3 validation failed
-update_validation debug: Testing 'pacemaker-2.4' validation (7 of X)
+pcmk__update_schema debug: Schema pacemaker-2.3 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.4 validation failed
-update_validation debug: Testing 'pacemaker-2.5' validation (8 of X)
+pcmk__update_schema debug: Schema pacemaker-2.4 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.5 validation failed
-update_validation debug: Testing 'pacemaker-2.6' validation (9 of X)
+pcmk__update_schema debug: Schema pacemaker-2.5 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.6 validation failed
-update_validation debug: Testing 'pacemaker-2.7' validation (10 of X)
+pcmk__update_schema debug: Schema pacemaker-2.6 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.7 validation failed
-update_validation debug: Testing 'pacemaker-2.8' validation (11 of X)
+pcmk__update_schema debug: Schema pacemaker-2.7 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.8 validation failed
-update_validation debug: Testing 'pacemaker-2.9' validation (12 of X)
+pcmk__update_schema debug: Schema pacemaker-2.8 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.9 validation failed
-update_validation debug: Testing 'pacemaker-2.10' validation (13 of X)
+pcmk__update_schema debug: Schema pacemaker-2.9 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-2.10 validation failed
-update_validation debug: Testing 'pacemaker-3.0' validation (14 of X)
+pcmk__update_schema debug: Schema pacemaker-2.10 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.0 validation failed
-update_validation debug: Testing 'pacemaker-3.1' validation (15 of X)
+pcmk__update_schema debug: Schema pacemaker-3.0 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.1 validation failed
-update_validation debug: Testing 'pacemaker-3.2' validation (16 of X)
+pcmk__update_schema debug: Schema pacemaker-3.1 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.2 validation failed
-update_validation debug: Testing 'pacemaker-3.3' validation (17 of X)
+pcmk__update_schema debug: Schema pacemaker-3.2 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.3 validation failed
-update_validation debug: Testing 'pacemaker-3.4' validation (18 of X)
+pcmk__update_schema debug: Schema pacemaker-3.3 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.4 validation failed
-update_validation debug: Testing 'pacemaker-3.5' validation (19 of X)
+pcmk__update_schema debug: Schema pacemaker-3.4 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.5 validation failed
-update_validation debug: Testing 'pacemaker-3.6' validation (20 of X)
+pcmk__update_schema debug: Schema pacemaker-3.5 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.6 validation failed
-update_validation debug: Testing 'pacemaker-3.7' validation (21 of X)
+pcmk__update_schema debug: Schema pacemaker-3.6 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.7 validation failed
-update_validation debug: Testing 'pacemaker-3.8' validation (22 of X)
+pcmk__update_schema debug: Schema pacemaker-3.7 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.8 validation failed
-update_validation debug: Testing 'pacemaker-3.9' validation (23 of X)
+pcmk__update_schema debug: Schema pacemaker-3.8 does not validate
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
-update_validation trace: pacemaker-3.9 validation failed
-Cannot upgrade configuration (claiming schema pacemaker-1.2) to at least pacemaker-3.0 because it does not validate with any schema from pacemaker-1.2 to pacemaker-3.9
+pcmk__update_schema debug: Schema pacemaker-3.9 does not validate
+element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
+element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
+pcmk__update_schema debug: Schema pacemaker-3.10 does not validate
+Cannot upgrade configuration (claiming pacemaker-1.2 schema) to at least pacemaker-3.0 because it does not validate with any schema from pacemaker-1.2 to the latest
=#=#=#= End test: Run crm_simulate with invalid CIB (enum violation) - Invalid configuration (78) =#=#=#=
* Passed: crm_simulate - Run crm_simulate with invalid CIB (enum violation)
=#=#=#= Begin test: Try to make resulting CIB invalid (unrecognized validate-with) =#=#=#=
- 1 <cib epoch="4" num_updates="1" admin_epoch="0">
- 2 <configuration>
- 3 <crm_config/>
- 4 <nodes/>
- 5 <resources>
- 6 <primitive id="dummy1" class="ocf" provider="pacemaker" type="Dummy"/>
- 7 <primitive id="dummy2" class="ocf" provider="pacemaker" type="Dummy"/>
- 8 </resources>
- 9 <constraints>
- 10 <rsc_order id="ord_1-2" first="dummy1" first-action="start" then="dummy2"/>
- 11 </constraints>
- 12 </configuration>
- 13 <status/>
- 14 </cib>
- 15
Call failed: Update does not conform to the configured schema
=#=#=#= Current cib after: Try to make resulting CIB invalid (unrecognized validate-with) =#=#=#=
<cib epoch="4" num_updates="0" admin_epoch="0">
@@ -166,99 +116,60 @@ Call failed: Update does not conform to the configured schema
=#=#=#= End test: Try to make resulting CIB invalid (unrecognized validate-with) - Invalid configuration (78) =#=#=#=
* Passed: cibadmin - Try to make resulting CIB invalid (unrecognized validate-with)
=#=#=#= Begin test: Run crm_simulate with invalid CIB (unrecognized validate-with) =#=#=#=
-update_validation debug: Unknown validation schema
-update_validation debug: Testing 'pacemaker-1.0' validation (0 of X)
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-1.0 validation failed
-update_validation debug: Testing 'pacemaker-1.2' validation (1 of X)
+pcmk__update_schema debug: Schema pacemaker-1.0 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-1.2 validation failed
-update_validation debug: Testing 'pacemaker-1.3' validation (2 of X)
+pcmk__update_schema debug: Schema pacemaker-1.2 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-1.3 validation failed
-update_validation debug: Testing 'pacemaker-2.0' validation (3 of X)
+pcmk__update_schema debug: Schema pacemaker-1.3 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.0 validation failed
-update_validation debug: Testing 'pacemaker-2.1' validation (4 of X)
+pcmk__update_schema debug: Schema pacemaker-2.0 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.1 validation failed
-update_validation debug: Testing 'pacemaker-2.2' validation (5 of X)
+pcmk__update_schema debug: Schema pacemaker-2.1 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.2 validation failed
-update_validation debug: Testing 'pacemaker-2.3' validation (6 of X)
+pcmk__update_schema debug: Schema pacemaker-2.2 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.3 validation failed
-update_validation debug: Testing 'pacemaker-2.4' validation (7 of X)
+pcmk__update_schema debug: Schema pacemaker-2.3 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.4 validation failed
-update_validation debug: Testing 'pacemaker-2.5' validation (8 of X)
+pcmk__update_schema debug: Schema pacemaker-2.4 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.5 validation failed
-update_validation debug: Testing 'pacemaker-2.6' validation (9 of X)
+pcmk__update_schema debug: Schema pacemaker-2.5 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.6 validation failed
-update_validation debug: Testing 'pacemaker-2.7' validation (10 of X)
+pcmk__update_schema debug: Schema pacemaker-2.6 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.7 validation failed
-update_validation debug: Testing 'pacemaker-2.8' validation (11 of X)
+pcmk__update_schema debug: Schema pacemaker-2.7 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.8 validation failed
-update_validation debug: Testing 'pacemaker-2.9' validation (12 of X)
+pcmk__update_schema debug: Schema pacemaker-2.8 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.9 validation failed
-update_validation debug: Testing 'pacemaker-2.10' validation (13 of X)
+pcmk__update_schema debug: Schema pacemaker-2.9 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-2.10 validation failed
-update_validation debug: Testing 'pacemaker-3.0' validation (14 of X)
+pcmk__update_schema debug: Schema pacemaker-2.10 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.0 validation failed
-update_validation debug: Testing 'pacemaker-3.1' validation (15 of X)
+pcmk__update_schema debug: Schema pacemaker-3.0 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.1 validation failed
-update_validation debug: Testing 'pacemaker-3.2' validation (16 of X)
+pcmk__update_schema debug: Schema pacemaker-3.1 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.2 validation failed
-update_validation debug: Testing 'pacemaker-3.3' validation (17 of X)
+pcmk__update_schema debug: Schema pacemaker-3.2 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.3 validation failed
-update_validation debug: Testing 'pacemaker-3.4' validation (18 of X)
+pcmk__update_schema debug: Schema pacemaker-3.3 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.4 validation failed
-update_validation debug: Testing 'pacemaker-3.5' validation (19 of X)
+pcmk__update_schema debug: Schema pacemaker-3.4 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.5 validation failed
-update_validation debug: Testing 'pacemaker-3.6' validation (20 of X)
+pcmk__update_schema debug: Schema pacemaker-3.5 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.6 validation failed
-update_validation debug: Testing 'pacemaker-3.7' validation (21 of X)
+pcmk__update_schema debug: Schema pacemaker-3.6 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.7 validation failed
-update_validation debug: Testing 'pacemaker-3.8' validation (22 of X)
+pcmk__update_schema debug: Schema pacemaker-3.7 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.8 validation failed
-update_validation debug: Testing 'pacemaker-3.9' validation (23 of X)
+pcmk__update_schema debug: Schema pacemaker-3.8 does not validate
element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
-update_validation trace: pacemaker-3.9 validation failed
-Cannot upgrade configuration (claiming schema pacemaker-9999.0) to at least pacemaker-3.0 because it does not validate with any schema from unknown to pacemaker-3.9
+pcmk__update_schema debug: Schema pacemaker-3.9 does not validate
+element cib: Relax-NG validity error : Invalid attribute validate-with for element cib
+pcmk__update_schema debug: Schema pacemaker-3.10 does not validate
+Cannot upgrade configuration (claiming pacemaker-9999.0 schema) to at least pacemaker-3.0 because it does not validate with any schema from the first to the latest
=#=#=#= End test: Run crm_simulate with invalid CIB (unrecognized validate-with) - Invalid configuration (78) =#=#=#=
* Passed: crm_simulate - Run crm_simulate with invalid CIB (unrecognized validate-with)
=#=#=#= Begin test: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) =#=#=#=
- 1 <cib epoch="4" num_updates="0" admin_epoch="0">
- 2 <configuration>
- 3 <crm_config/>
- 4 <nodes/>
- 5 <resources>
- 6 <primitive id="dummy1" class="ocf" provider="pacemaker" type="Dummy"/>
- 7 <primitive id="dummy2" class="ocf" provider="pacemaker" type="Dummy"/>
- 8 </resources>
- 9 <constraints>
- 10 <rsc_order id="ord_1-2" first="dummy1" first-action="start" then="dummy2"/>
- 11 </constraints>
- 12 <tags/>
- 13 </configuration>
- 14 <status/>
- 15 </cib>
- 16
Call failed: Update does not conform to the configured schema
=#=#=#= Current cib after: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) =#=#=#=
<cib epoch="4" num_updates="0" admin_epoch="0">
@@ -278,75 +189,32 @@ Call failed: Update does not conform to the configured schema
=#=#=#= End test: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) - Invalid configuration (78) =#=#=#=
* Passed: cibadmin - Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1)
=#=#=#= Begin test: Run crm_simulate with invalid, but possibly recoverable CIB (valid with X.Y+1) =#=#=#=
-update_validation debug: Testing 'pacemaker-1.2' validation (1 of X)
element tags: Relax-NG validity error : Element configuration has extra content: tags
-update_validation trace: pacemaker-1.2 validation failed
-update_validation debug: Testing 'pacemaker-1.3' validation (2 of X)
-update_validation debug: pacemaker-1.3-style configuration is also valid for pacemaker-2.0
-update_validation debug: Testing 'pacemaker-2.0' validation (3 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.0
-update_validation debug: pacemaker-2.0-style configuration is also valid for pacemaker-2.1
-update_validation debug: Testing 'pacemaker-2.1' validation (4 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.1
-update_validation debug: pacemaker-2.1-style configuration is also valid for pacemaker-2.2
-update_validation debug: Testing 'pacemaker-2.2' validation (5 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.2
-update_validation debug: pacemaker-2.2-style configuration is also valid for pacemaker-2.3
-update_validation debug: Testing 'pacemaker-2.3' validation (6 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.3
-update_validation debug: pacemaker-2.3-style configuration is also valid for pacemaker-2.4
-update_validation debug: Testing 'pacemaker-2.4' validation (7 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.4
-update_validation debug: pacemaker-2.4-style configuration is also valid for pacemaker-2.5
-update_validation debug: Testing 'pacemaker-2.5' validation (8 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.5
-update_validation debug: pacemaker-2.5-style configuration is also valid for pacemaker-2.6
-update_validation debug: Testing 'pacemaker-2.6' validation (9 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.6
-update_validation debug: pacemaker-2.6-style configuration is also valid for pacemaker-2.7
-update_validation debug: Testing 'pacemaker-2.7' validation (10 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.7
-update_validation debug: pacemaker-2.7-style configuration is also valid for pacemaker-2.8
-update_validation debug: Testing 'pacemaker-2.8' validation (11 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.8
-update_validation debug: pacemaker-2.8-style configuration is also valid for pacemaker-2.9
-update_validation debug: Testing 'pacemaker-2.9' validation (12 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.9
-update_validation debug: pacemaker-2.9-style configuration is also valid for pacemaker-2.10
-update_validation debug: Testing 'pacemaker-2.10' validation (13 of X)
-update_validation debug: Configuration valid for schema: pacemaker-2.10
-update_validation debug: pacemaker-2.10-style configuration is also valid for pacemaker-3.0
-update_validation debug: Testing 'pacemaker-3.0' validation (14 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.0
-update_validation debug: pacemaker-3.0-style configuration is also valid for pacemaker-3.1
-update_validation debug: Testing 'pacemaker-3.1' validation (15 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.1
-update_validation debug: pacemaker-3.1-style configuration is also valid for pacemaker-3.2
-update_validation debug: Testing 'pacemaker-3.2' validation (16 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.2
-update_validation debug: pacemaker-3.2-style configuration is also valid for pacemaker-3.3
-update_validation debug: Testing 'pacemaker-3.3' validation (17 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.3
-update_validation debug: pacemaker-3.3-style configuration is also valid for pacemaker-3.4
-update_validation debug: Testing 'pacemaker-3.4' validation (18 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.4
-update_validation debug: pacemaker-3.4-style configuration is also valid for pacemaker-3.5
-update_validation debug: Testing 'pacemaker-3.5' validation (19 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.5
-update_validation debug: pacemaker-3.5-style configuration is also valid for pacemaker-3.6
-update_validation debug: Testing 'pacemaker-3.6' validation (20 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.6
-update_validation debug: pacemaker-3.6-style configuration is also valid for pacemaker-3.7
-update_validation debug: Testing 'pacemaker-3.7' validation (21 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.7
-update_validation debug: pacemaker-3.7-style configuration is also valid for pacemaker-3.8
-update_validation debug: Testing 'pacemaker-3.8' validation (22 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.8
-update_validation debug: pacemaker-3.8-style configuration is also valid for pacemaker-3.9
-update_validation debug: Testing 'pacemaker-3.9' validation (23 of X)
-update_validation debug: Configuration valid for schema: pacemaker-3.9
-update_validation trace: Stopping at pacemaker-3.9
-update_validation info: Transformed the configuration from pacemaker-1.2 to pacemaker-3.9
+pcmk__update_schema debug: Schema pacemaker-1.2 does not validate
+pcmk__update_schema debug: Schema pacemaker-1.3 validates
+pcmk__update_schema debug: Schema pacemaker-2.0 validates
+pcmk__update_schema debug: Schema pacemaker-2.1 validates
+pcmk__update_schema debug: Schema pacemaker-2.2 validates
+pcmk__update_schema debug: Schema pacemaker-2.3 validates
+pcmk__update_schema debug: Schema pacemaker-2.4 validates
+pcmk__update_schema debug: Schema pacemaker-2.5 validates
+pcmk__update_schema debug: Schema pacemaker-2.6 validates
+pcmk__update_schema debug: Schema pacemaker-2.7 validates
+pcmk__update_schema debug: Schema pacemaker-2.8 validates
+pcmk__update_schema debug: Schema pacemaker-2.9 validates
+pcmk__update_schema debug: Schema pacemaker-2.10 validates
+pcmk__update_schema debug: Schema pacemaker-3.0 validates
+pcmk__update_schema debug: Schema pacemaker-3.1 validates
+pcmk__update_schema debug: Schema pacemaker-3.2 validates
+pcmk__update_schema debug: Schema pacemaker-3.3 validates
+pcmk__update_schema debug: Schema pacemaker-3.4 validates
+pcmk__update_schema debug: Schema pacemaker-3.5 validates
+pcmk__update_schema debug: Schema pacemaker-3.6 validates
+pcmk__update_schema debug: Schema pacemaker-3.7 validates
+pcmk__update_schema debug: Schema pacemaker-3.8 validates
+pcmk__update_schema debug: Schema pacemaker-3.9 validates
+pcmk__update_schema debug: Schema pacemaker-3.10 validates
+pcmk__update_schema info: Transformed the configuration schema to pacemaker-3.10
unpack_resources error: Resource start-up disabled since no STONITH resources have been defined
unpack_resources error: Either configure some or disable STONITH with the stonith-enabled option
unpack_resources error: NOTE: Clusters with shared data need STONITH to ensure data integrity
@@ -387,7 +255,7 @@ Revised Cluster Status:
=#=#=#= End test: Make resulting CIB valid, although without validate-with attribute - OK (0) =#=#=#=
* Passed: cibadmin - Make resulting CIB valid, although without validate-with attribute
=#=#=#= Begin test: Run crm_simulate with valid CIB, but without validate-with attribute =#=#=#=
-Schema validation of configuration is disabled (enabling is encouraged and prevents common misconfigurations)
+Schema validation of configuration is disabled (support for validate-with set to "none" is deprecated and will be removed in a future release)
unpack_resources error: Resource start-up disabled since no STONITH resources have been defined
unpack_resources error: Either configure some or disable STONITH with the stonith-enabled option
unpack_resources error: NOTE: Clusters with shared data need STONITH to ensure data integrity
@@ -460,6 +328,8 @@ element rsc_order: Relax-NG validity error : Invalid attribute first-action for
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
+element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
+element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
=#=#=#= Current cib after: Make resulting CIB invalid, and without validate-with attribute =#=#=#=
<cib epoch="41" num_updates="0" admin_epoch="0" validate-with="none">
<configuration>
@@ -478,7 +348,9 @@ element rsc_order: Relax-NG validity error : Element constraints has extra conte
=#=#=#= End test: Make resulting CIB invalid, and without validate-with attribute - OK (0) =#=#=#=
* Passed: cibadmin - Make resulting CIB invalid, and without validate-with attribute
=#=#=#= Begin test: Run crm_simulate with invalid CIB, also without validate-with attribute =#=#=#=
-Schema validation of configuration is disabled (enabling is encouraged and prevents common misconfigurations)
+Schema validation of configuration is disabled (support for validate-with set to "none" is deprecated and will be removed in a future release)
+validity.bad.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
+validity.bad.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
validity.bad.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
validity.bad.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order
validity.bad.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order
diff --git a/cts/cli/tickets.xml b/cts/cli/tickets.xml
new file mode 100644
index 0000000..7130abc
--- /dev/null
+++ b/cts/cli/tickets.xml
@@ -0,0 +1,32 @@
+<cib epoch="1" num_updates="1" admin_epoch="0" validate-with="pacemaker-3.9" cib-last-written="Tue Feb 27 11:16:17 2024" have-quorum="1">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cib-bootstrap-options">
+ <nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="false"/>
+ <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes>
+ <node id="node1" type="member" uname="node1"/>
+ <node id="node2" type="member" uname="node2"/>
+ </nodes>
+ <resources>
+ <primitive class="ocf" id="rsc1" provider="pacemaker" type="Dummy"/>
+ <primitive class="ocf" id="rsc2" provider="pacemaker" type="Dummy"/>
+ </resources>
+ <constraints>
+ <rsc_ticket id="rsc1-req-ticketA" rsc="rsc1" ticket="ticketA" rsc-role="Started" loss-policy="stop"/>
+ <rsc_ticket id="rsc1-req-ticketB" rsc="rsc2" ticket="ticketB" rsc-role="Started" loss-policy="stop"/>
+ </constraints>
+ </configuration>
+ <status>
+ <node_state id="node1" uname="node1" ha="active" in_ccm="true" crmd="online" join="member" expected="member" crm-debug-origin="crm_simulate"/>
+ <node_state id="node2" uname="node2" ha="active" in_ccm="true" crmd="online" join="member" expected="member" crm-debug-origin="crm_simulate"/>
+ <tickets>
+ <ticket_state id="ticketA" status="revoked" granted="false" standby="false" owner="1"/>
+ <ticket_state id="ticketB" status="granted" granted="true" standby="false"/>
+ <ticket_state id="ticketC" status="granted" granted="true" standby="false"/>
+ <ticket_state id="ticketC" status="granted" granted="true" standby="false"/>
+ </tickets>
+ </status>
+</cib>
diff --git a/cts/cts-attrd.in b/cts/cts-attrd.in
index b594ac3..c9a219d 100644
--- a/cts/cts-attrd.in
+++ b/cts/cts-attrd.in
@@ -196,7 +196,7 @@ class AttributeTests(Tests):
test.add_cmd("attrd_updater", "--name DDD -U 555 --set=foo --output-as=xml")
test.add_cmd_check_stdout("attrd_updater", "--name DDD -Q --output-as=xml",
"name=\"DDD\" value=\"555\"")
- test.add_log_pattern("Processed 1 private change for DDD, id=n/a, set=foo")
+ test.add_log_pattern("Processed 1 private change for DDD (set foo)")
def build_multiple_query_tests(self):
""" Add tests that set and query an attribute across multiple nodes """
diff --git a/cts/cts-cli.in b/cts/cts-cli.in
index f4cb7c3..37dd530 100755
--- a/cts/cts-cli.in
+++ b/cts/cts-cli.in
@@ -1,6 +1,6 @@
#!@BASH_PATH@
#
-# Copyright 2008-2023 the Pacemaker project contributors
+# Copyright 2008-2024 the Pacemaker project contributors
#
# The version control history for this file may have further details.
#
@@ -23,8 +23,8 @@ Options:
--help Display this text, then exit
-V, --verbose Display any differences from expected output
-t 'TEST [...]' Run only specified tests
- (default: 'daemons dates error_codes tools crm_mon acls
- validity upgrade rules feature_set').
+ (default: 'access_render daemons dates error_codes tools
+ crm_mon acls validity upgrade rules feature_set').
Other tests: agents (must be run in an installed environment).
-p DIR Look for executables in DIR (may be specified multiple times)
-v, --valgrind Run all commands under valgrind
@@ -43,8 +43,8 @@ shadow_dir=$(mktemp -d ${TMPDIR:-/tmp}/cts-cli.shadow.XXXXXXXXXX)
num_errors=0
num_passed=0
verbose=0
-tests="daemons dates error_codes tools crm_mon acls validity upgrade rules "
-tests="$tests feature_set"
+tests="access_render daemons dates error_codes tools crm_mon acls validity"
+tests="$tests upgrade rules feature_set"
do_save=0
XMLLINT_CMD=
VALGRIND_CMD=
@@ -550,7 +550,7 @@ function test_crm_mon() {
desc="XML output of active unmanaged resource on offline node"
cmd="crm_mon -1 --output-as=xml"
- test_assert $CRM_EX_OK 0
+ test_assert_validate $CRM_EX_OK 0
desc="Brief text output of active unmanaged resource on offline node"
cmd="crm_mon -1 --brief"
@@ -812,12 +812,84 @@ function test_tools() {
cmd="cibadmin -Q"
test_assert $CRM_EX_OK
+ desc="List all available options (invalid type)"
+ cmd="crm_attribute --list-options=asdf"
+ test_assert $CRM_EX_USAGE 0
+
+ desc="List all available options (invalid type) (XML)"
+ cmd="crm_attribute --list-options=asdf --output-as=xml"
+ test_assert_validate $CRM_EX_USAGE 0
+
+ desc="List non-advanced cluster options"
+ cmd="crm_attribute --list-options=cluster"
+ test_assert $CRM_EX_OK 0
+
+ desc="List non-advanced cluster options (XML) (shows all)"
+ cmd="crm_attribute --list-options=cluster --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="List all available cluster options"
+ cmd="crm_attribute --list-options=cluster --all"
+ test_assert $CRM_EX_OK 0
+
+ desc="List all available cluster options (XML)"
+ cmd="crm_attribute --list-options=cluster --all --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
desc="Query the value of an attribute that does not exist"
cmd="crm_attribute -n ABCD --query --quiet"
test_assert $CRM_EX_NOSUCH 0
desc="Configure something before erasing"
- cmd="crm_attribute -n cluster-delay -v 60s"
+ cmd="crm_attribute -n test_attr -v 5"
+ test_assert $CRM_EX_OK
+
+ desc="Test '++' XML attribute update syntax"
+ cmd="cibadmin -M --score --xml-text='<cib admin_epoch=\"admin_epoch++\"\>'"
+ test_assert $CRM_EX_OK
+
+ desc="Test '+=' XML attribute update syntax"
+ cmd="cibadmin -M --score --xml-text='<cib admin_epoch=\"admin_epoch+=2\"\>'"
+ test_assert $CRM_EX_OK
+
+ desc="Test '++' nvpair value update syntax"
+ cmd="crm_attribute -n test_attr -v 'value++' --score"
+ test_assert $CRM_EX_OK
+
+ desc="Test '++' nvpair value update syntax (XML)"
+ cmd="crm_attribute -n test_attr -v 'value++' --score --output-as=xml"
+ test_assert $CRM_EX_OK
+
+ desc="Test '+=' nvpair value update syntax"
+ cmd="crm_attribute -n test_attr -v 'value+=2' --score"
+ test_assert $CRM_EX_OK
+
+ desc="Test '+=' nvpair value update syntax (XML)"
+ cmd="crm_attribute -n test_attr -v 'value+=2' --score --output-as=xml"
+ test_assert $CRM_EX_OK
+
+ desc="Test '++' XML attribute update syntax (--score not set)"
+ cmd="cibadmin -M --xml-text='<cib admin_epoch=\"admin_epoch++\"\>'"
+ test_assert $CRM_EX_OK
+
+ desc="Test '+=' XML attribute update syntax (--score not set)"
+ cmd="cibadmin -M --xml-text='<cib admin_epoch=\"admin_epoch+=2\"\>'"
+ test_assert $CRM_EX_OK
+
+ desc="Test '++' nvpair value update syntax (--score not set)"
+ cmd="crm_attribute -n test_attr -v 'value++'"
+ test_assert $CRM_EX_OK
+
+ desc="Test '++' nvpair value update syntax (--score not set) (XML)"
+ cmd="crm_attribute -n test_attr -v 'value++' --output-as=xml"
+ test_assert $CRM_EX_OK
+
+ desc="Test '+=' nvpair value update syntax (--score not set)"
+ cmd="crm_attribute -n test_attr -v 'value+=2'"
+ test_assert $CRM_EX_OK
+
+ desc="Test '+=' nvpair value update syntax (--score not set) (XML)"
+ cmd="crm_attribute -n test_attr -v 'value+=2' --output-as=xml"
test_assert $CRM_EX_OK
desc="Require --force for CIB erasure"
@@ -989,6 +1061,46 @@ function test_tools() {
cmd="crm_resource foo bar"
test_assert $CRM_EX_USAGE 0
+ desc="List all available resource options (invalid type)"
+ cmd="crm_resource --list-options=asdf"
+ test_assert $CRM_EX_USAGE 0
+
+ desc="List all available resource options (invalid type) (XML)"
+ cmd="crm_resource --list-options=asdf --output-as=xml"
+ test_assert_validate $CRM_EX_USAGE 0
+
+ desc="List non-advanced primitive meta-attributes"
+ cmd="crm_resource --list-options=primitive"
+ test_assert $CRM_EX_OK 0
+
+ desc="List non-advanced primitive meta-attributes (XML) (shows all)"
+ cmd="crm_resource --list-options=primitive --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="List all available primitive meta-attributes"
+ cmd="crm_resource --list-options=primitive --all"
+ test_assert $CRM_EX_OK 0
+
+ desc="List all available primitive meta-attributes (XML)"
+ cmd="crm_resource --list-options=primitive --all --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="List non-advanced fencing parameters"
+ cmd="crm_resource --list-options=fencing"
+ test_assert $CRM_EX_OK 0
+
+ desc="List non-advanced fencing parameters (XML) (shows all)"
+ cmd="crm_resource --list-options=fencing --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="List all available fencing parameters"
+ cmd="crm_resource --list-options=fencing --all"
+ test_assert $CRM_EX_OK 0
+
+ desc="List all available fencing parameters (XML)"
+ cmd="crm_resource --list-options=fencing --all --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
desc="crm_resource given both -r and resource config"
cmd="crm_resource -r xyz --class ocf --provider pacemaker --agent Dummy"
test_assert $CRM_EX_USAGE 0
@@ -1039,19 +1151,19 @@ function test_tools() {
desc="Set a non-existent attribute for a resource element with output-as=xml"
cmd="crm_resource -r dummy --set-parameter=description -v test_description --element --output-as=xml"
- test_assert $CRM_EX_OK
+ test_assert_validate $CRM_EX_OK
desc="Set an existent attribute for a resource element with output-as=xml"
cmd="crm_resource -r dummy --set-parameter=description -v test_description --element --output-as=xml"
- test_assert $CRM_EX_OK
+ test_assert_validate $CRM_EX_OK
desc="Delete an existent attribute for a resource element with output-as=xml"
cmd="crm_resource -r dummy -d description --element --output-as=xml"
- test_assert $CRM_EX_OK
+ test_assert_validate $CRM_EX_OK
desc="Delete a non-existent attribute for a resource element with output-as=xml"
cmd="crm_resource -r dummy -d description --element --output-as=xml"
- test_assert $CRM_EX_OK
+ test_assert_validate $CRM_EX_OK
desc="Set a non-existent attribute for a resource element without output-as=xml"
cmd="crm_resource -r dummy --set-parameter=description -v test_description --element"
@@ -1095,7 +1207,7 @@ function test_tools() {
desc="Show XML configuration of resource, output as XML"
cmd="crm_resource -q -r dummy --output-as=xml"
- test_assert $CRM_EX_OK 0
+ test_assert_validate $CRM_EX_OK 0
desc="Require a destination when migrating a resource that is stopped"
cmd="crm_resource -r dummy -M"
@@ -1137,10 +1249,30 @@ function test_tools() {
cmd="crm_ticket -t ticketA -r --force"
test_assert $CRM_EX_OK
+ desc="List ticket IDs"
+ cmd="crm_ticket -w"
+ test_assert $CRM_EX_OK 0
+
+ desc="List ticket IDs, outputting in XML"
+ cmd="crm_ticket -w --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="Query ticket state"
+ cmd="crm_ticket -t ticketA -q"
+ test_assert $CRM_EX_OK 0
+
+ desc="Query ticket state, outputting as xml"
+ cmd="crm_ticket -t ticketA -q --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
desc="Query ticket granted state"
cmd="crm_ticket -t ticketA -G granted"
test_assert $CRM_EX_OK
+ desc="Query ticket granted state, outputting as xml"
+ cmd="crm_ticket -t ticketA -G granted --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
desc="Delete ticket granted state"
cmd="crm_ticket -t ticketA -D granted --force"
test_assert $CRM_EX_OK
@@ -1157,10 +1289,54 @@ function test_tools() {
cmd="crm_ticket -t ticketA -a"
test_assert $CRM_EX_OK
+ desc="List ticket details"
+ cmd="crm_ticket -L -t ticketA"
+ test_assert $CRM_EX_OK 0
+
+ desc="List ticket details, outputting as XML"
+ cmd="crm_ticket -L -t ticketA --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="Add a second ticket"
+ cmd="crm_ticket -t ticketB -G granted -d false"
+ test_assert $CRM_EX_OK
+
+ desc="Set second ticket granted state"
+ cmd="crm_ticket -t ticketB -r --force"
+ test_assert $CRM_EX_OK
+
+ desc="List tickets"
+ cmd="crm_ticket -l"
+ test_assert $CRM_EX_OK 0
+
+ desc="List tickets, outputting as XML"
+ cmd="crm_ticket -l --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="Delete second ticket"
+ cmd="cibadmin --delete --xml-text '<ticket_state id=\"ticketB\"/>'"
+ test_assert $CRM_EX_OK
+
desc="Delete ticket standby state"
cmd="crm_ticket -t ticketA -D standby"
test_assert $CRM_EX_OK
+ esc="Add a constraint to a ticket"
+ cmd="cibadmin -C -o constraints --xml-text '<rsc_ticket id=\"dummy-dep-ticketA\" rsc=\"dummy\" rsc-role=\"Started\" ticket=\"ticketA\" loss-policy=\"freeze\"/>'"
+ test_assert $CRM_EX_OK
+
+ desc="Query ticket constraints"
+ cmd="crm_ticket -t ticketA -c"
+ test_assert $CRM_EX_OK 0
+
+ desc="Query ticket constraints, outputting as xml"
+ cmd="crm_ticket -t ticketA -c --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
+
+ desc="Delete ticket constraint"
+ cmd="cibadmin --delete --xml-text '<rsc_ticket id=\"dummy-dep-ticketA\"/>'"
+ test_assert $CRM_EX_OK
+
desc="Ban a resource on unknown node"
cmd="crm_resource -r dummy -B -N host1"
test_assert $CRM_EX_NOSUCH
@@ -1363,16 +1539,16 @@ function test_tools() {
unset CIB_file
desc="Set a meta-attribute for primitive and resources colocated with it"
- cmd="crm_resource -r prim5 --meta --set-parameter=target-role -v Stopped --recursive"
- test_assert $CRM_EX_OK 0
+ cmd="crm_resource -r prim5 --meta --set-parameter=target-role -v Stopped --recursive --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
desc="Set a meta-attribute for group and resource colocated with it"
cmd="crm_resource -r group --meta --set-parameter=target-role -v Stopped --recursive"
test_assert $CRM_EX_OK 0
desc="Set a meta-attribute for clone and resource colocated with it"
- cmd="crm_resource -r clone --meta --set-parameter=target-role -v Stopped --recursive"
- test_assert $CRM_EX_OK 0
+ cmd="crm_resource -r clone --meta --set-parameter=target-role -v Stopped --recursive --output-as=xml"
+ test_assert_validate $CRM_EX_OK 0
unset CIB_shadow
unset CIB_shadow_dir
@@ -1580,7 +1756,7 @@ function test_tools() {
desc="Update a promotable score attribute to -INFINITY (XML)"
cmd="crm_attribute -N cluster01 -p -v -INFINITY --output-as=xml"
- test_assert $CRM_EX_OK 0
+ test_assert_validate $CRM_EX_OK 0
desc="Query after updating a promotable score attribute to -INFINITY"
cmd="crm_attribute -N cluster01 -p -G"
@@ -1588,7 +1764,7 @@ function test_tools() {
desc="Query after updating a promotable score attribute to -INFINITY (XML)"
cmd="crm_attribute -N cluster01 -p -G --output-as=xml"
- test_assert $CRM_EX_OK 0
+ test_assert_validate $CRM_EX_OK 0
desc="Try OCF_RESOURCE_INSTANCE if -p is specified with an empty string"
cmd="crm_attribute -N cluster01 -p '' -G"
@@ -2293,20 +2469,32 @@ function test_tools() {
CIB_file_invalid_1="$test_home/cli/crm_verify_invalid_bz.xml"
CIB_file_invalid_2="$test_home/cli/crm_verify_invalid_no_stonith.xml"
- desc="Verify a file-specified invalid configuration, outputting as xml"
+ desc="Verify a file-specified invalid configuration (text output)"
+ cmd="crm_verify --xml-file '$CIB_file_invalid_1'"
+ test_assert $CRM_EX_CONFIG 0
+
+ desc="Verify a file-specified invalid configuration (verbose text output)"
+ cmd="crm_verify --xml-file '$CIB_file_invalid_1' --verbose"
+ test_assert $CRM_EX_CONFIG 0
+
+ desc="Verify a file-specified invalid configuration (quiet text output)"
+ cmd="crm_verify --xml-file '$CIB_file_invalid_1' --quiet"
+ test_assert $CRM_EX_CONFIG 0
+
+ desc="Verify a file-specified invalid configuration (XML output)"
cmd="crm_verify --xml-file '$CIB_file_invalid_1' --output-as=xml"
test_assert_validate $CRM_EX_CONFIG 0
- desc="Verify another file-specified invalid configuration, outputting as xml"
- cmd="crm_verify --xml-file '$CIB_file_invalid_2' --output-as=xml"
+ desc="Verify a file-specified invalid configuration (verbose XML output)"
+ cmd="crm_verify --xml-file '$CIB_file_invalid_1' --output-as=xml --verbose"
test_assert_validate $CRM_EX_CONFIG 0
- desc="Verbosely verify a file-specified invalid configuration, outputting as xml"
- cmd="crm_verify --xml-file '$CIB_file_invalid_1' --output-as=xml --verbose"
+ desc="Verify a file-specified invalid configuration (quiet XML output)"
+ cmd="crm_verify --xml-file '$CIB_file_invalid_1' --output-as=xml --quiet"
test_assert_validate $CRM_EX_CONFIG 0
- desc="Verbosely verify another file-specified invalid configuration, outputting as xml"
- cmd="crm_verify --xml-file '$CIB_file_invalid_2' --output-as=xml --verbose"
+ desc="Verify another file-specified invalid configuration (XML output)"
+ cmd="crm_verify --xml-file '$CIB_file_invalid_2' --output-as=xml"
test_assert_validate $CRM_EX_CONFIG 0
export CIB_file="$test_home/cli/crm_mon.xml"
@@ -2815,7 +3003,7 @@ function test_validity() {
create_shadow_cib --create-empty pacemaker-1.2
orig_trace_fns="$PCMK_trace_functions"
- export PCMK_trace_functions=apply_upgrade,update_validation
+ export PCMK_trace_functions=apply_upgrade,pcmk__update_schema
cibadmin -C -o resources --xml-text '<primitive id="dummy1" class="ocf" provider="pacemaker" type="Dummy"/>'
cibadmin -C -o resources --xml-text '<primitive id="dummy2" class="ocf" provider="pacemaker" type="Dummy"/>'
@@ -2888,7 +3076,7 @@ test_upgrade() {
create_shadow_cib --create-empty pacemaker-2.10
orig_trace_fns="$PCMK_trace_functions"
- export PCMK_trace_functions=apply_upgrade,update_validation
+ export PCMK_trace_functions=apply_upgrade,pcmk__update_schema
desc="Set stonith-enabled=false"
cmd="crm_attribute -n stonith-enabled -v false"
@@ -3167,25 +3355,23 @@ EOF
# Ensure all command output is in portable locale for comparison
export LC_ALL="C"
test_access_render() {
- local TMPXML
+ local TMPXML=$(mktemp ${TMPDIR:-/tmp}/cts-cli.access_render.xml.XXXXXXXXXX)
- TMPXML=$(mktemp ${TMPDIR:-/tmp}/cts-cli.access_render.xml.XXXXXXXXXX)
- export CIB_shadow_dir="${shadow_dir}"
-
- $VALGRIND_CMD crm_shadow --batch --force --create-empty $shadow 2>&1
- export CIB_shadow=$shadow
+ create_shadow_cib --create-empty
# Create a test CIB that has ACL roles
cat <<EOF > "$TMPXML"
- <acls>
- <acl_role id="role-deny-acls">
- <acl_permission id="deny-acls" kind="deny" xpath="/cib/configuration/acls"/>
- <acl_permission id="read-rest" kind="read" xpath="/cib"/>
- </acl_role>
- <acl_target id="tony">
- <role id="role-deny-acls"/>
- </acl_target>
- </acls>
+<acls>
+ <acl_role id="role-deny-acls-write-resources">
+ <acl_permission id="deny-acls" kind="deny" xpath="/cib/configuration/acls"/>
+ <acl_permission id="write-resources" kind="write"
+ xpath="/cib/configuration/resources"/>
+ <acl_permission id="read-rest" kind="read" xpath="/cib"/>
+ </acl_role>
+ <acl_target id="tony">
+ <role id="role-deny-acls-write-resources"/>
+ </acl_target>
+</acls>
EOF
desc="Configure some ACLs"
@@ -3198,7 +3384,7 @@ EOF
unset CIB_user
- # Run cibadmin --show-access on the test CIB with different users (tony here)
+ # Run cibadmin --show-access on the test CIB as an ACL-restricted user
desc="An instance of ACLs render (into color)"
cmd="cibadmin --force --show-access=color -Q --user tony"
@@ -3230,7 +3416,7 @@ function test_feature_set() {
desc="XML output, no mixed status"
cmd="crm_mon --output-as=xml"
- test_assert $CRM_EX_OK 0
+ test_assert_validate $CRM_EX_OK 0
# Modify the CIB to fake that the cluster has mixed versions
desc="Fake inconsistent feature set"
@@ -3243,7 +3429,7 @@ function test_feature_set() {
desc="XML output, mixed status"
cmd="crm_mon --output-as=xml"
- test_assert $CRM_EX_OK 0
+ test_assert_validate $CRM_EX_OK 0
unset CIB_shadow_dir
}
@@ -3287,6 +3473,7 @@ done
for t in $tests; do
case "$t" in
+ access_render) ;;
agents) ;;
daemons) ;;
dates) ;;
@@ -3341,6 +3528,16 @@ for t in $tests; do
eval TMPFILE_$t="$TMPFILE"
test_$t > "$TMPFILE"
+ # @TODO Add a way to suppress this message within cibadmin, and then drop
+ # the handling here.
+ suppress="The supplied command can provide skewed result since it is run"
+ suppress="$suppress under user that also gets guarded per ACLs on their"
+ suppress="$suppress own right. Continuing since --force flag was provided."
+
+ # This giant sed replaces content expected to change for each run
+ # (timestamps, source file line numbers, etc.), build (configure options,
+ # version numbers, etc.), or platform (system messages, etc.).
+ #
# last-rc-change= is always numeric in the CIB. However, for the crm_mon
# test we also need to compare against the XML output of the crm_mon
# program. There, these are shown as human readable strings (like the
@@ -3354,10 +3551,15 @@ for t in $tests; do
-e 's/last_change time=\".*\"/last_change time=\"\"/' \
-e 's/ api-version="[^"]*"/ api-version="X"/' \
-e 's/ default="[^"]*"/ default=""/' \
+ -e 's/\(\* Possible values.*: .*\)(default: [^)]*)/\1(default: )/g' \
-e 's/ version="[^"]*"/ version=""/' \
-e 's/request=\".*\(crm_[a-zA-Z0-9]*\)/request=\"\1/' \
-e 's/crm_feature_set="[^"]*" //'\
+ -e 's/@crm_feature_set=[0-9.]*, //'\
+ -e 's/\(<change-attr name="crm_feature_set" .* value="\)[0-9.]*"/\1"/' \
-e 's/validate-with="[^"]*" //'\
+ -e 's/\(@validate-with=pacemaker-\)[0-9.]*,/\1X,/' \
+ -e 's/\(<change-attr name="validate-with" .* value="pacemaker-\)[0-9.]*"/\1X"/' \
-e 's/Created new pacemaker-.* configuration/Created new pacemaker configuration/'\
-e 's/.*\(crm_time_parse_duration\)@.*\.c:[0-9][0-9]*)/\1/g' \
-e 's/.*\(crm_time_parse_period\)@.*\.c:[0-9][0-9]*)/\1/g' \
@@ -3366,14 +3568,17 @@ for t in $tests; do
-e 's/.*\(parse_date\)@.*\.c:[0-9][0-9]*)/\1/g' \
-e 's/.*\(pcmk__.*\)@.*\.c:[0-9][0-9]*)/\1/g' \
-e 's/.*\(unpack_.*\)@.*\.c:[0-9][0-9]*)/\1/g' \
- -e 's/.*\(update_validation\)@.*\.c:[0-9][0-9]*)/\1/g' \
+ -e 's/.*\(pcmk__update_schema\)@.*\.c:[0-9][0-9]*)/\1/g' \
-e 's/.*\(apply_upgrade\)@.*\.c:[0-9][0-9]*)/\1/g' \
+ -e 's/.*\(cluster_status\)@.*\.c:[0-9][0-9]*)/\1/g' \
-e "s/ last-rc-change=['\"][-+A-Za-z0-9: ]*['\"],\{0,1\}//" \
-e 's|^/tmp/cts-cli\.shadow\.[^/]*/|/tmp/cts-cli.shadow/|' \
-e 's|"/tmp/cts-cli\.shadow\.[^/]*/|"/tmp/cts-cli.shadow/|' \
-e 's|^/tmp/cts-cli\.validity\.bad.xml\.[^:]*:|validity.bad.xml:|'\
+ -e 's|^/tmp/cts-cli\.ta_outfile\.[^:]*:|/tmp/cts-cli.ta_outfile:|' \
+ -e 's|^/tmp/cts-cli\.ta_outfile\.[^ ]* fails to validate|/tmp/cts-cli.ta_outfile fails to validate|' \
+ -e 's|^/tmp/cts-cli\.xmllint_outfile\.[^:]*:|/tmp/cts-cli.xmllint_outfile:|' \
-e 's/^Entity: line [0-9][0-9]*: //'\
- -e 's/\(validation ([0-9][0-9]* of \)[0-9][0-9]*\().*\)/\1X\2/' \
-e 's/^Migration will take effect until: .*/Migration will take effect until:/' \
-e 's/ end=\"[0-9][-+: 0-9]*Z*\"/ end=\"\"/' \
-e 's/ start=\"[0-9][-+: 0-9]*Z*\"/ start=\"\"/' \
@@ -3386,6 +3591,7 @@ for t in $tests; do
-e 's/Master/Promoted/' \
-e 's/Slave/Unpromoted/' \
-e 's/\x1b/\\x1b/' \
+ -e "/$suppress/d" \
"$TMPFILE" > "${TMPFILE}.$$"
mv -- "${TMPFILE}.$$" "$TMPFILE"
diff --git a/cts/cts-fencing.in b/cts/cts-fencing.in
index c2ed29a..6785144 100644
--- a/cts/cts-fencing.in
+++ b/cts/cts-fencing.in
@@ -133,7 +133,7 @@ class FenceTests(Tests):
'--output-as=xml -R false2 -a fence_dummy -o "mode=fail" -o "pcmk_host_list=node3" -o "pcmk_off_timeout=4"')
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 5")
# timeout is 5+1+4 = 10
- test.add_log_pattern("Total timeout set to 12")
+ test.add_log_pattern("Total timeout set to 12s")
# custom timeout _WITH_ topology
test = self.new_test("cpg_custom_timeout_2",
@@ -141,15 +141,15 @@ class FenceTests(Tests):
test.add_cmd('stonith_admin',
'--output-as=xml -R false1 -a fence_dummy -o "mode=fail" -o "pcmk_host_list=node1 node2 node3"')
test.add_cmd('stonith_admin',
- '--output-as=xml -R true1 -a fence_dummy -o "mode=pass" -o "pcmk_host_list=node3" -o "pcmk_off_timeout=1"')
+ '--output-as=xml -R true1 -a fence_dummy -o "mode=pass" -o "pcmk_host_list=node3" -o "pcmk_off_timeout=1000ms"')
test.add_cmd('stonith_admin',
- '--output-as=xml -R false2 -a fence_dummy -o "mode=fail" -o "pcmk_host_list=node3" -o "pcmk_off_timeout=4000"')
+ '--output-as=xml -R false2 -a fence_dummy -o "mode=fail" -o "pcmk_host_list=node3" -o "pcmk_off_timeout=4000s"')
test.add_cmd("stonith_admin", "--output-as=xml -r node3 -i 1 -v false1")
test.add_cmd("stonith_admin", "--output-as=xml -r node3 -i 2 -v true1")
test.add_cmd("stonith_admin", "--output-as=xml -r node3 -i 3 -v false2")
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 5")
# timeout is 5+1+4000 = 4006
- test.add_log_pattern("Total timeout set to 4807")
+ test.add_log_pattern("Total timeout set to 4807s")
def build_fence_merge_tests(self):
""" Register tests to verify when fence operations should be merged """
@@ -262,7 +262,7 @@ class FenceTests(Tests):
"--output-as=xml -R false3 -a fence_dummy -o \"mode=fail\" -o \"pcmk_host_list=node1 node2 node3\"")
if test_type["use_cpg"]:
test.add_cmd_expected_fail("stonith_admin", "--output-as=xml -F node3 -t 2", ExitStatus.TIMEOUT)
- test.add_log_pattern("Total timeout set to 7")
+ test.add_log_pattern("Total timeout set to 7s")
else:
test.add_cmd_expected_fail("stonith_admin", "--output-as=xml -F node3 -t 2", ExitStatus.ERROR)
@@ -284,7 +284,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 5")
if test_type["use_cpg"]:
- test.add_log_pattern("Total timeout set to 18")
+ test.add_log_pattern("Total timeout set to 18s")
# test what happens when we try to use a missing fence-agent.
for test_type in test_types:
@@ -313,7 +313,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -r node3 -i 1 -v true")
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 5")
- test.add_log_pattern("Total timeout set to 6")
+ test.add_log_pattern("Total timeout set to 6s")
test.add_log_pattern("targeting node3 using true returned 0")
@@ -331,7 +331,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -d node3 -i 1")
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 5")
- test.add_log_pattern("Total timeout set to 6")
+ test.add_log_pattern("Total timeout set to 6s")
test.add_log_pattern("targeting node3 using true returned 0")
# test what happens when the first fencing level has multiple devices.
@@ -350,7 +350,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -r node3 -i 2 -v true")
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 20")
- test.add_log_pattern("Total timeout set to 48")
+ test.add_log_pattern("Total timeout set to 48s")
test.add_log_pattern("targeting node3 using false returned 1")
test.add_log_pattern("targeting node3 using true returned 0")
@@ -384,7 +384,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 3")
- test.add_log_pattern("Total timeout set to 21")
+ test.add_log_pattern("Total timeout set to 21s")
test.add_log_pattern("targeting node3 using false1 returned 1")
test.add_log_pattern("targeting node3 using false2 returned 1")
test.add_log_pattern("targeting node3 using true3 returned 0")
@@ -451,7 +451,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -F node3 -t 20")
- test.add_log_pattern("Total timeout set to 96")
+ test.add_log_pattern("Total timeout set to 96s")
test.add_log_pattern("targeting node3 using false1 returned 1")
test.add_log_pattern("targeting node3 using false2 returned ",
negative=True)
@@ -659,7 +659,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -F node3 --delay 1")
# Total fencing timeout takes all fencing delays into account.
- test.add_log_pattern("Total timeout set to 582")
+ test.add_log_pattern("Total timeout set to 582s")
# Fencing timeout for the first device takes the requested fencing delay into account.
# Fencing timeout also takes pcmk_delay_base into account.
@@ -869,7 +869,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -B node_fake -t 5")
test.add_log_pattern("Remapping multiple-device reboot targeting node_fake")
# timeout should be sum of off timeouts (1+2=3), not reboot timeouts (10+20=30)
- test.add_log_pattern("Total timeout set to 3 for peer's fencing targeting node_fake")
+ test.add_log_pattern("Total timeout set to 3s for peer's fencing targeting node_fake")
test.add_log_pattern("perform 'off' action targeting node_fake using true1")
test.add_log_pattern("perform 'off' action targeting node_fake using true2")
test.add_log_pattern("Remapped 'off' targeting node_fake complete, remapping to 'on'")
@@ -895,7 +895,7 @@ class FenceTests(Tests):
test.add_cmd("stonith_admin", "--output-as=xml -B node_fake -t 5")
test.add_log_pattern("Remapping multiple-device reboot targeting node_fake")
# timeout should be sum of off timeouts (1+2=3), not reboot timeouts (10+20=30)
- test.add_log_pattern("Total timeout set to 3 for peer's fencing targeting node_fake")
+ test.add_log_pattern("Total timeout set to 3s for peer's fencing targeting node_fake")
test.add_log_pattern("perform 'off' action targeting node_fake using true1")
test.add_log_pattern("perform 'off' action targeting node_fake using true2")
test.add_log_pattern("Remapped 'off' targeting node_fake complete, remapping to 'on'")
diff --git a/cts/cts-log-watcher.in b/cts/cts-log-watcher.in
index cee9c94..a12ecfa 100644
--- a/cts/cts-log-watcher.in
+++ b/cts/cts-log-watcher.in
@@ -43,9 +43,6 @@ if __name__ == '__main__':
skipthis=1
prefix = args[i+1]
- elif args[i] == '-t' or args[i] == '--tag':
- skipthis=1
-
if not os.access(filename, os.R_OK):
print(prefix + 'Last read: %d, limit=%d, count=%d - unreadable' % (0, limit, 0))
sys.exit(1)
diff --git a/cts/scheduler/exp/utilization-order4.exp b/cts/scheduler/exp/utilization-order4.exp
index 4a3d380..996eb1b 100644
--- a/cts/scheduler/exp/utilization-order4.exp
+++ b/cts/scheduler/exp/utilization-order4.exp
@@ -16,7 +16,7 @@
<action_set>
<rsc_op id="16" operation="migrate_to" operation_key="degllx62-vm_migrate_to_0" on_node="deglxen002" on_node_uuid="deglxen002">
<primitive id="degllx62-vm" class="ocf" provider="heartbeat" type="Xen"/>
- <attributes CRM_meta_migrate_source="deglxen002" CRM_meta_migrate_target="deglxen001" CRM_meta_name="migrate_to" CRM_meta_on_node="deglxen002" CRM_meta_on_node_uuid="deglxen002" CRM_meta_record_pending="false" CRM_meta_timeout="1800000" xmfile="/etc/xen/vm/degllx62"/>
+ <attributes CRM_meta_migrate_source="deglxen002" CRM_meta_migrate_target="deglxen001" CRM_meta_name="migrate_to" CRM_meta_on_node="deglxen002" CRM_meta_on_node_uuid="deglxen002" CRM_meta_record_pending="true" CRM_meta_timeout="1800000" xmfile="/etc/xen/vm/degllx62"/>
</rsc_op>
</action_set>
<inputs>
diff --git a/cts/scheduler/stderr/order-wrong-kind.stderr b/cts/scheduler/stderr/order-wrong-kind.stderr
index 7090368..db35666 100644
--- a/cts/scheduler/stderr/order-wrong-kind.stderr
+++ b/cts/scheduler/stderr/order-wrong-kind.stderr
@@ -1 +1 @@
-Schema validation of configuration is disabled (enabling is encouraged and prevents common misconfigurations)
+Schema validation of configuration is disabled (support for validate-with set to "none" is deprecated and will be removed in a future release) \ No newline at end of file
diff --git a/cts/scheduler/summary/order-wrong-kind.summary b/cts/scheduler/summary/order-wrong-kind.summary
index 0e00bdf..903a25c 100644
--- a/cts/scheduler/summary/order-wrong-kind.summary
+++ b/cts/scheduler/summary/order-wrong-kind.summary
@@ -1,4 +1,4 @@
-Schema validation of configuration is disabled (enabling is encouraged and prevents common misconfigurations)
+Schema validation of configuration is disabled (support for validate-with set to "none" is deprecated and will be removed in a future release)
Current cluster status:
* Node List:
* Online: [ node1 ]
diff --git a/cts/valgrind-pcmk.suppressions b/cts/valgrind-pcmk.suppressions
index a05b9db..461edc2 100644
--- a/cts/valgrind-pcmk.suppressions
+++ b/cts/valgrind-pcmk.suppressions
@@ -7,14 +7,6 @@
}
{
- Ignore option parsing
- Memcheck:Leak
- fun:realloc
- fun:crm_get_option_long
- fun:main
-}
-
-{
dlopen internals
Memcheck:Leak
fun:calloc