[ClusterLabs] Antw: [EXT] Re: Determine a resource's current host in the CIB
Ulrich Windl
Ulrich.Windl at rz.uni-regensburg.de
Tue Sep 29 09:15:01 EDT 2020
>>> Christopher Lumens <clumens at redhat.com> schrieb am 24.09.2020 um 17:48 in
Nachricht <801519843.20826233.1600962508662.JavaMail.zimbra at redhat.com>:
> This is the kind of stuff I've been working on a lot, so hopefully I've
> added enough tools to make this easy to do. If not, I guess I've got
> more work to do.
>
> What's your time frame, are you lucky enough to be able to use the latest
> pacemaker releases, and are you going to use command line tools or the
> library?
>
>> > A quick look to the code shows that crm_resource ‑ where we would
>> > have ‑‑locate ‑does have the ‑‑xml‑file as well. But that seems
>> > not to do what I expected althoughI haven't looked into the details.
>>
>> This is an interesting option... I can see that it shows me running
>> resources only (not what resources are configured but off). It does show
>> more directly "VM x is on node y";
>
> Coming eventually, crm_resource will support ‑‑output‑as=xml, which means
> you'd potentially get the output of "crm_resource ‑W" in a structured
> format you could easily parse.
>
> You could also use crm_mon and xmllint to do this right now on the
> command line. First you could use crm_mon to dump a single resource as
> XML:
>
> $ crm_mon ‑‑include=none,resources ‑‑resource dummy ‑‑output‑as xml
> <pacemaker‑result api‑version="2.3" request="crm_mon
‑‑include=none,resources
> ‑‑resource dummy ‑‑output‑as xml">
> <resources>
> <resource id="dummy" resource_agent="ocf::pacemaker:Dummy"
role="Started"
> active="true" orphaned="false" blocked="false" managed="true" failed="false"
> failure_ignored="false" nodes_running_on="1">
> <node name="cluster02" id="2" cached="true"/>
> </resource>
> </resources>
> <status code="0" message="OK"/>
> </pacemaker‑result>
>
> And then you construct an xpath query to get just the attribute you
> want:
>
> $ crm_mon ‑‑include=none,resources ‑‑resource dummy ‑‑output‑as xml |
xmllint ‑‑xpath
> '//resource/node/@name' ‑
> name="cluster02"
>
> You could do the same kinds of queries using libxml2 once you've parsed
> stdout of crm_mon. We've got examples scattered throughout the
> pacemaker code, or I could probably try to remember how it's done.
Hi!
A few years ago I wrote a (Perl) tool that parses and linearizes the XML CIB.
For example using that tool to sort all resources by operation execution time,
the command was:
./pmkrstat.pl --cib-object=status --query '*:exec-time' \
--attribute id=1 --attribute operation=2 --attribute on_node=3 \
--attribute rc-code=4 --attribute queue-time=5 --attribute exec-time=6 \
--attribute last-run=7 \
--show full_path=0 --show name=0 --show attr_name=0 --no-handle-values | \
sed -e 's/(//' -e 's/)//' -e 's/"//g' -e 's/,/ /g' | grep "$1" | sort -k6n
-k1
So on output you have 7 fields: id, operation, on_node, rc-code, queue-time,
exec-time, and last-run
So an output line could be:
prm_db_last_0 start node-13 0 0 31858 1592836459
Ugly, isn't it?
Regards,
Ulrich
>
> ‑ Chris
>
> _______________________________________________
> Manage your subscription:
> https://lists.clusterlabs.org/mailman/listinfo/users
>
> ClusterLabs home: https://www.clusterlabs.org/
More information about the Users
mailing list