Red Hat Bugzilla – Bug 1298581
Need a way to provide a reason for why a resource won't start (or was stopped)
Last modified: 2018-04-10 11:29:53 EDT
Description of problem:
People are running 'pcs resource enable' and the resource doesn't start because of constraints, but they don't know which constraints are preventing it from starting (or if constraints are the reason it isn't starting).
We'd like a command we can run that specifies a resource and then tells us it is either running, or gives us a reason why it isn't running. pcs can then use that output and pass it back to the user.
Version-Release number of selected component (if applicable):
Upstream commit https://github.com/ClusterLabs/pacemaker/commit/11ac60a modified "crm_resource --cleanup" to print reasons why the resource would stay stopped. For example:
* The configuration specifies that 'myrsc' should remain stopped
* Resource myrsc is configured to not be managed by the cluster
I'm thinking we can add a new option that would do just the check and print. The current implementation does not know what particular constraints or other configuration prevent startup, but it's a good starting point.
This will not be ready in the 7.3 timeframe.
This will not be ready in the 7.4 tiemframe.
Upstream pacemaker now supports a "crm_resource --why" command as of commit 6f0a149c, thanks to a submission by contributor Aravind Kumar.
The descriptions that --cleanup and --why give are currently limited to a few conditions, but this provides a basis for future enhancements.
QA: Test procedure:
1. Configure a pacemaker cluster with various resources.
2. Cause some of the resources to be stopped by various means (pcs resource disable, -INFINITY constraints on all nodes, colocation or ordering constraint with another resource stopped by one of those means, etc.).
3. Run crm_resource with the new --why option. Before the fix, the option doesn't exist; after the fix, it shows why each resource is stopped. Usage:
-> shows status of all resources (running or not running, and why)
crm_resource --why -r <resource-id>
-> shows status of particular resource
crm_resource --why -r <resource-id> -N <node-name>
-> shows status of particular resource on particular node
Before the fix (1.1.16-12.el7-94ff4df), the "--why" option does not exist:
> [root@virt-131 ~]# crm_resource --why
> crm_resource: unrecognized option '--why'
After the fix (1.1.18-11.el7-2b07d5c5a9), creating a bunch of dummy resources and (mis)configuring them to not be able to start using the following methods:
* disabling the resource, which resulted in the following being printed by "crm_resource --why":
> The configuration specifies that '<resource>' should remain stopped
* banning the resource on all nodes (ie. creating -INFINITY location constraints); "crm_resource --why" DOES NOT show any extra info apart from "is not running"
* constraining a resource to be colocated with a disabled resource; "crm_resource --why" DOES NOT show any extra info apart from "is not running"
* constraining a resource to be started after a disabled resource; "crm_resource --why" DOES NOT show any extra info apart from "is not running"
While the number of particular reasons why resources are not starting is currently *very* limited (see link at the end of this comment), it seems highly unlikely to break anything and can be enhanced to cover more situations in the future (to actually become useful in practice). Marking VERIFIED.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.