[ClusterLabs] [ClusterLabs Developers] Resource Agent language discussion

Andrew Beekhof andrew at beekhof.net
Sun Aug 16 19:42:35 EDT 2015

> On 11 Aug 2015, at 5:34 pm, Jehan-Guillaume de Rorthais <jgdr at dalibo.com> wrote:
> On Tue, 11 Aug 2015 11:30:03 +1000
> Andrew Beekhof <andrew at beekhof.net> wrote:
>>> On 8 Aug 2015, at 1:14 am, Jehan-Guillaume de Rorthais <jgdr at dalibo.com>
>>> wrote:
>>> Hi Jan,
>>> On Fri, 7 Aug 2015 15:36:57 +0200
>>> Jan Pokorný <jpokorny at redhat.com> wrote:
>>>> On 07/08/15 12:09 +0200, Jehan-Guillaume de Rorthais wrote:
>>>>> Now, I would like to discuss about the language used to write a RA in
>>>>> Pacemaker. I never seen discussion or page about this so far.
>>>> it wasn't in such a "heretic :)" tone, but I tried to show that it
>>>> is extremely hard (if not impossible in some instances) to write
>>>> bullet-proof code in bash (or POSIX shell, for that matter) because
>>>> it's so cumbersome to move from "whitespace-delimited words as
>>>> a single argument" and "words as standalone arguments" back and forth,
>>>> connected with quotation-desired/-counterproductive madness
>>>> (what if one wants to indeed pass quotation marks as legitimate
>>>> characters within the passed value, etc.) few months back:
>>>> http://clusterlabs.org/pipermail/users/2015-May/000403.html
>>>> (even on developers list, but with fewer replies and broken threading:
>>>> http://clusterlabs.org/pipermail/developers/2015-May/000023.html).
>>> Thanks for the links and history. You add some more argument to my points :)
>>>>> HINT: I don't want to discuss (neither troll about) what is the best
>>>>> language. I would like to know why **ALL** the RA are written in
>>>>> bash
>>>> I would expect the original influence were the init scripts (as RAs
>>>> are mostly just enriched variants to support more flexible
>>>> configuration and better diagnostics back to the cluster stack),
>>>> which in turn were born having simplicity and ease of debugging
>>>> (maintainability) in mind.
>>> That sounds legitimate. And bash is still appropriate for some simple RA.
>>> But for the same ease of code debugging and maintainability arguments (and
>>> many others), complexe RA shouldn't use shell as language.
>> You can and should use whatever language you like for your own private RAs.
>> But if you want it accepted and maintained by the resource-agents project,
>> you would be advised to use the language they have standardised on.
> Well, let's imagine our RA was written in bash (in fact, we have a bash version
> pretty close to the current perl version we abandoned). I wonder if it would be
> accepted in the resource-agents project anyway as another one already exists
> there. I can easily list the reasons we rewrote a new one, but this is not the
> subject here.
> The discussion here is more about the language, if I should extract a
> ocf-perl-module from my RA and if there is any chance the resource-agents
> project would accept it.

Well, it depends on the reasons you didn’t list :-)

The first questions any maintainer is going to ask are:
- why did you write a new one?
- can we merge this with the old one?
- can the new one replace the old one? (ie. full superset)

Because if both are included, then they will forevermore be answering the question “which one should I use?”.

Basically, if you want it accepted upstream, then yes, you probably want to ditch the perl bit.
But not having seen the agent or knowing why it exists, its hard to say.

More information about the Users mailing list