[Pacemaker] Call for review of undocumented parameters in resource agent meta data

Lars Ellenberg lars.ellenberg at linbit.com
Wed Feb 11 19:29:35 EST 2015

On Fri, Jan 30, 2015 at 09:52:49PM +0100, Dejan Muhamedagic wrote:
> Hello,
> We've tagged today (Jan 30) a new stable resource-agents release
> (3.9.6) in the upstream repository.
> Big thanks go to all contributors! Needless to say, without you
> this release would not be possible.

Big thanks to Dejan.
Who once again finally did,
what I meant to do in late 2013 already, but simply pushed off
for over a year (and no-one else stepped up, either...)

So: Thank You.

I just today noticed that apparently some resource agents
accept and use parameters that are not documented in their meta data.

I now came up with a bash two-liner,
which likely still produces a lot of noise,
because it does not take into account that some agents
"source" additional helper files.

But here is the list:

--- used, but not described
+++ described, but apparently not used.

EvmsSCC           +OCF_RESKEY_ignore_deprecation
Evmsd             +OCF_RESKEY_ignore_deprecation

	?? intentionally undocumented ??

IPaddr            +OCF_RESKEY_iflabel
IPaddr            -OCF_RESKEY_netmask

	Not sure.

IPaddr2           -OCF_RESKEY_netmask

	intentional, backward compat, quoting the agent:
        # Note: We had a version out there for a while which used
        # netmask instead of cidr_netmask. Don't remove this aliasing code!

Please help review these:

IPsrcaddr         -OCF_RESKEY_ip
IPsrcaddr         +OCF_RESKEY_cidr_netmask
IPv6addr.c        -OCF_RESKEY_cidr_netmask
IPv6addr.c        -OCF_RESKEY_ipv6addr
IPv6addr.c        -OCF_RESKEY_nic
LinuxSCSI         +OCF_RESKEY_ignore_deprecation
Squid             -OCF_RESKEY_squid_confirm_trialcount
Squid             -OCF_RESKEY_squid_opts
Squid             -OCF_RESKEY_squid_suspend_trialcount
SysInfo           -OCF_RESKEY_clone
WAS6              -OCF_RESKEY_profileName
apache            +OCF_RESKEY_use_ipv6
conntrackd        -OCF_RESKEY_conntrackd
dnsupdate         -OCF_RESKEY_opts
dnsupdate         +OCF_RESKEY_nsupdate_opts
docker            -OCF_RESKEY_container
ethmonitor        -OCF_RESKEY_check_level
ethmonitor        -OCF_RESKEY_multiplicator

galera            +OCF_RESKEY_additional_parameters
galera            +OCF_RESKEY_binary
galera            +OCF_RESKEY_client_binary
galera            +OCF_RESKEY_config
galera            +OCF_RESKEY_datadir
galera            +OCF_RESKEY_enable_creation
galera            +OCF_RESKEY_group
galera            +OCF_RESKEY_log
galera            +OCF_RESKEY_pid
galera            +OCF_RESKEY_socket
galera            +OCF_RESKEY_user

	Probably all bogus, it source "mysql-common.sh".
	Someone please have a more detailed look.

iSCSILogicalUnit  +OCF_RESKEY_product_id
iSCSILogicalUnit  +OCF_RESKEY_vendor_id

	false positive

	surprise: florian learned some wizardry back then ;-)
	for var in scsi_id scsi_sn vendor_id product_id; do
		if [ -n "${!envar}" ]; then
			params="${params} ${var}=${!envar}"

	If such magic is used elsewhere,
	that could mask "Used but not documented" cases.

iface-bridge      -OCF_RESKEY_multicast_querier

!!	Yep, that needs to be documented!

mysql-proxy       -OCF_RESKEY_group
mysql-proxy       -OCF_RESKEY_user

	Oops, apparently my magic scriptlet below needs to learn to
	ignore script comments...

named             -OCF_RESKEY_rootdir

!!	Probably a bug:
	named_rootdir is documented.

nfsserver         -OCF_RESKEY_nfs_notify_cmd

!!	Yep, that needs to be documented!

nginx             -OCF_RESKEY_client
nginx             +OCF_RESKEY_testclient
!!	client is used, but not documented,
!!	testclient is documented, but unused...

nginx             -OCF_RESKEY_nginx

	Bogus. Needs to be dropped from leading comment block.

oracle            -OCF_RESKEY_tns_admin

!!	Yep, that needs to be documented!

pingd             +OCF_RESKEY_ignore_deprecation

	?? intentionally undocumented ??

pingd             -OCF_RESKEY_update

!!	Yep, is undocumented.

sg_persist        +OCF_RESKEY_binary
sg_persist        -OCF_RESKEY_sg_persist_binary

!!	BUG? binary vs sg_persist_binary

varnish           -OCF_RESKEY_binary

!!	Yep, is undocumented.

Please someone find the time to prepare pull requests
to fix these...



List was generated by below scriptlet,
which can be improved.  The improved version should probably be part of
a "unit test" check, when building resource-agents.

# In the git checkout of the resource agents,
# get a list of files that look like actual agent scripts.
cd heartbeat
A=$(git ls-files | xargs grep -s -l '<resource-agent ')

# and for each of these files,
# diff the list of OCF_RESKEY_* occurrences
# with the list of <parameter name="*" ones.
for a in $A; do
	diff -U0 \
	<(	grep -h -o 'OCF_RESKEY_[[:alnum:]_]*' $a |
		sort -u |
		grep -v -e '_default$' -e 'OCF_RESKEY_$' -e 'OCF_RESKEY_CRM_meta' ) \
    	<(	grep -h '<parameter ' $a |
		sed -ne 's/^.*name="\([^"]*\)".*$/OCF_RESKEY_\1/p' |
		sort -u) |
	sed -e "/^@@\|^---\|^[+][+][+]/d;s#^#$a\t#";
done | column -t

More information about the Pacemaker mailing list