On 2020-09-29 9:15 a.m., Ulrich Windl wrote: >>>> Christopher Lumens <[email protected]> schrieb am 24.09.2020 um 17:48 in > Nachricht <[email protected]>: >> 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
<Insert perl joke here> <3 perl Thanks for this, but I decided to use crm_mon's XML output to determine running resource location and state (building on the CIB parser I already had working). So I'm sorted now, but this would likely have been helpful had I not already. Cheers -- Digimer Papers and Projects: https://alteeve.com/w/ "I am, somehow, less interested in the weight and convolutions of Einstein’s brain than in the near certainty that people of equal talent have lived and died in cotton fields and sweatshops." - Stephen Jay Gould _______________________________________________ Manage your subscription: https://lists.clusterlabs.org/mailman/listinfo/users ClusterLabs home: https://www.clusterlabs.org/
