On Wed, Nov 2, 2011 at 2:33 PM, Tim Serong <tser...@suse.com> wrote: > On 11/02/2011 08:34 AM, Florian Haas wrote: >> >> On 2011-11-01 21:30, Andrew Beekhof wrote: >>> >>> On Wed, Nov 2, 2011 at 7:04 AM, Florian Haas<flor...@hastexo.com> wrote: >>>> >>>> On 2011-11-01 17:52, Tim Ward wrote: >>>>>> >>>>>> You can try tooking at LCMC as that is a Java-based GUI that >>>>>> should at least get you going. >>>>> >>>>> I did find some Java code but we can't use it because it's GPL, and I >>>>> didn't want to study it in case I accidentally copied some of it in >>>>> recreating it. >>>> >>>> Well if you can't use anything that's under GPL, I presume anything >>>> derived from cib.h is off limits to you anyway, as _that_ is under GPL. >>> >>> LGPL iirc >> >>> From include/crm/cib.h: >> >> /* >> * Copyright (C) 2004 Andrew Beekhof<and...@beekhof.net> >> * >> * This program is free software; you can redistribute it and/or >> * modify it under the terms of the GNU General Public >> * License as published by the Free Software Foundation; either >> * version 2 of the License, or (at your option) any later version. >> >> Doesn't say much about LGPL afaics. > > <ianal>I vaguely recall reading the FSF considered headers generally exempt > from GPL provisions, provided they're "boring", i.e. just structs, function > definitions etc. If they're a whole lotta inline code, things are a bit > different</ianal>. > > Anyway. Roughly speaking, if we *did* have other language bindings for > libcib/libpengine, the story would be something like this (Andrew can > correct me if I'm wrong): > > libcib would let you manipulate the CIB programatically, with much the same > ability you have when running cibadmin, i.e. you're just manipulating chunks > of XML. Unless I'm not paying attention, there's no e.g. "create resource" > API; your program would have to construct the correct XML resource > definition then give it to libcib to inject into the cluster configuration. > Likewise, to stop and start a resource, you'll be writing code to set the > target-role meta attribute of that resource. So you may as well just invoke > cibadmin, crm_resource, crm_attribute directly. I think it's safe to assume > those interfaces are stable. At a higher level, "crm configure ..." should > also be considered pretty stable; we know people use it in scripts so we try > not to break it (and BTW, I use all this stuff in Hawk[1]). > > libpengine is more interesting. That would give you reliable information > about resource status. The alternative (given no other language bindings)
I've no problem providing additional language bindings if the interest is there. I recently added python using SWIG so Java should be pretty easy. > is generally either: > > - various invocations of crm_mon and crm_resource (maybe lots of > invocations, depending on what information you want to extract), > which can suck on large clusters, or, > > - one invocation of "cibadmin -Q" to get the CIB status section, > then process this yourself to determine resource status, using the > Dragon Page[2] as a guide. If you do a good jobs of this and/or > you care about op history (not just current status), you will > end up reimplementing parts of the determine_online_status() and > unpack_rsc_op() functions from Pacemaker's lib/pengine/unpack.c in > $other_language_of_your_choice. > > Regards, > > Tim > > [1] http://clusterlabs.org/wiki/Hawk > [2] > http://www.clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Pacemaker_Explained/ch-status.html > > -- > Tim Serong > Senior Clustering Engineer > SUSE > tser...@suse.com > > _______________________________________________ > Pacemaker mailing list: Pacemaker@oss.clusterlabs.org > http://oss.clusterlabs.org/mailman/listinfo/pacemaker > > Project Home: http://www.clusterlabs.org > Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf > Bugs: > http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker > _______________________________________________ Pacemaker mailing list: Pacemaker@oss.clusterlabs.org http://oss.clusterlabs.org/mailman/listinfo/pacemaker Project Home: http://www.clusterlabs.org Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf Bugs: http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker