diff options
author | Jan Pokorný <jpokorny@redhat.com> | 2015-03-12 14:46:21 +0100 |
---|---|---|
committer | Jan Pokorný <jpokorny@redhat.com> | 2015-03-16 22:40:40 +0100 |
commit | 798d2c334c2ed4183a88fea6300e7be5e8cdfd9e (patch) | |
tree | fe9945d902ed09d7b638edbac7a1dbb7903683d6 | |
parent | f91f83c0450fb231ffc0ddb5f9ae8e6fa3b74508 (diff) | |
download | clufter-798d2c334c2ed4183a88fea6300e7be5e8cdfd9e.tar.gz clufter-798d2c334c2ed4183a88fea6300e7be5e8cdfd9e.tar.xz clufter-798d2c334c2ed4183a88fea6300e7be5e8cdfd9e.zip |
utils_cib + filters/ccsflat2pcsprelude: rg2hb_xsl "macro"
Promised "more systemic/less error-prone solution" to prevent random
mistakes/typos/inconsistencies and to exercise DRY principle (slash
common sense).
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
-rw-r--r-- | filters/cluster/rm/apache/__init__.py | 30 | ||||
-rw-r--r-- | filters/cluster/rm/lvm/__init__.py | 17 | ||||
-rw-r--r-- | filters/cluster/rm/mysql/__init__.py | 13 | ||||
-rw-r--r-- | filters/cluster/rm/nfsserver/__init__.py | 21 | ||||
-rw-r--r-- | filters/cluster/rm/postgres-8/__init__.py | 34 | ||||
-rw-r--r-- | utils_cib.py | 31 |
6 files changed, 72 insertions, 74 deletions
diff --git a/filters/cluster/rm/apache/__init__.py b/filters/cluster/rm/apache/__init__.py index f90fbf0..7a5808a 100644 --- a/filters/cluster/rm/apache/__init__.py +++ b/filters/cluster/rm/apache/__init__.py @@ -4,7 +4,7 @@ # Licensed under GPLv2+ (a copy included | http://gnu.org/licenses/gpl-2.0.txt) __author__ = "Jan Pokorný <jpokorny @at@ Red Hat .dot. com>" -from ....utils_cib import ResourceSpec +from ....utils_cib import ResourceSpec, rg2hb_xsl ccsflat2pcsprelude = '''\ @@ -17,12 +17,9 @@ ccsflat2pcsprelude = '''\ ) + ''' <!-- INSTANCE_ATTRIBUTES --> <instance_attributes id="{concat($Prefix, '-ATTRS')}"> - <!-- configfile ~ config_file (if present) --> - <xsl:if test="@config_file"> - <nvpair id="{concat($Prefix, '-ATTRS-configfile')}" - name="configfile" - value="{@config_file}"/> - </xsl:if> +''' + ( + rg2hb_xsl('configfile', 'config_file') +) + '''\ <!-- options ~ httpd_options (if present; + name, server_root) --> <nvpair id="{concat($Prefix, '-ATTRS-options')}" name="options"> @@ -42,22 +39,17 @@ ccsflat2pcsprelude = '''\ </xsl:if> </xsl:attribute> </nvpair> - <!-- httpd ~ httpd (if present, see rhbz#952132) --> - <xsl:if test="@httpd"> - <nvpair id="{concat($Prefix, '-ATTRS-httpd')}" - name="httpd" - value="{@httpd}"/> - </xsl:if> +''' + ( + # see rhbz#952132 + rg2hb_xsl('httpd', 'httpd') +) + '''\ </instance_attributes> <!-- OPERATIONS --> <operations> - <xsl:if test="@shutdown_wait"> - <op id="{concat($Prefix, '-OPS-stop')}" - name="stop" - interval="0" - timeout="{concat(@shutdown_wait, 's')}"/> - </xsl:if> +''' + ( + rg2hb_xsl('stop', 'shutdown_wait', op=True) +) + '''\ </operations> </xsl:when> ''' diff --git a/filters/cluster/rm/lvm/__init__.py b/filters/cluster/rm/lvm/__init__.py index e8e8a5f..d27e465 100644 --- a/filters/cluster/rm/lvm/__init__.py +++ b/filters/cluster/rm/lvm/__init__.py @@ -1,10 +1,10 @@ # -*- coding: UTF-8 -*- -# Copyright 2014 Red Hat, Inc. +# Copyright 2015 Red Hat, Inc. # Part of clufter project # Licensed under GPLv2+ (a copy included | http://gnu.org/licenses/gpl-2.0.txt) __author__ = "Jan Pokorný <jpokorny @at@ Red Hat .dot. com>" -from ....utils_cib import ResourceSpec +from ....utils_cib import ResourceSpec, rg2hb_xsl ccsflat2pcsprelude = '''\ @@ -23,14 +23,11 @@ ccsflat2pcsprelude = '''\ <!-- INSTANCE_ATTRIBUTES --> <instance_attributes id="{concat($Prefix, '-ATTRS')}"> - <!-- volgrpname ~ vg_name --> - <nvpair id="{concat($Prefix, '-ATTRS-volgrpname')}" - name="volgrpname" - value="{@vg_name}"/> - <!-- exclusive: implied --> - <nvpair id="{concat($Prefix, '-ATTRS-exclusive')}" - name="exclusive" - value="true"/> +''' + ( + rg2hb_xsl('volgrpname', 'vg_name', required=True) + + + rg2hb_xsl('exclusive', 'true', required=abs) +) + '''\ </instance_attributes> </xsl:when> ''' diff --git a/filters/cluster/rm/mysql/__init__.py b/filters/cluster/rm/mysql/__init__.py index f797519..8f440d8 100644 --- a/filters/cluster/rm/mysql/__init__.py +++ b/filters/cluster/rm/mysql/__init__.py @@ -1,10 +1,10 @@ # -*- coding: UTF-8 -*- -# Copyright 2014 Red Hat, Inc. +# Copyright 2015 Red Hat, Inc. # Part of clufter project # Licensed under GPLv2+ (a copy included | http://gnu.org/licenses/gpl-2.0.txt) __author__ = "Jan Pokorný <jpokorny @at@ Red Hat .dot. com>" -from ....utils_cib import ResourceSpec +from ....utils_cib import ResourceSpec, rg2hb_xsl ccsflat2pcsprelude = '''\ <!-- @@ -16,12 +16,9 @@ ccsflat2pcsprelude = '''\ ) + ''' <!-- INSTANCE_ATTRIBUTES --> <instance_attributes id="{concat($Prefix, '-ATTRS')}"> - <!-- config ~ config_file --> - <xsl:if test="@config_file"> - <nvpair id="{concat($Prefix, '-ATTRS-config')}" - name="config" - value="{@config_file}"/> - </xsl:if> +''' + ( + rg2hb_xsl('config', 'config_file') +) + '''\ <!-- additional_parameters ~ listen_address + mysqld_options --> <xsl:if test="@listen_address or @mysqld_options"> <nvpair id="{concat($Prefix, '-ATTRS-additional_parameters')}" diff --git a/filters/cluster/rm/nfsserver/__init__.py b/filters/cluster/rm/nfsserver/__init__.py index 47ae103..94b4482 100644 --- a/filters/cluster/rm/nfsserver/__init__.py +++ b/filters/cluster/rm/nfsserver/__init__.py @@ -4,7 +4,7 @@ # Licensed under GPLv2+ (a copy included | http://gnu.org/licenses/gpl-2.0.txt) __author__ = "Jan Pokorný <jpokorny @at@ Red Hat .dot. com>" -from ....utils_cib import ResourceSpec +from ....utils_cib import ResourceSpec, rg2hb_xsl ccsflat2pcsprelude = '''\ @@ -17,19 +17,12 @@ ccsflat2pcsprelude = '''\ ) + ''' <!-- INSTANCE_ATTRIBUTES --> <instance_attributes id="{concat($Prefix, '-ATTRS')}"> - <!-- nfs_shared_infodir ~ nfspath --> - <xsl:if test="@nfspath"> - <nvpair id="{concat($Prefix, '-ATTRS-nfs_shared_infodir')}" - name="nfs_shared_infodir" - value="{@nfspath}"/> - </xsl:if> - <!-- statd_port ~ statdport (if present, see rhbz#918315 - + rhbz#1096376/7) --> - <xsl:if test="@statdport"> - <nvpair id="{concat($Prefix, '-ATTRS-statd_port')}" - name="statd_port" - value="{@statdport}"/> - </xsl:if> +''' + ( + rg2hb_xsl('nfs_shared_infodir', 'nfspath') + + + # see rhbz#918315 + rhbz#1096376/7 + rg2hb_xsl('statd_port', 'statdport') +) + '''\ </instance_attributes> </xsl:when> ''' diff --git a/filters/cluster/rm/postgres-8/__init__.py b/filters/cluster/rm/postgres-8/__init__.py index 61060f4..80a877a 100644 --- a/filters/cluster/rm/postgres-8/__init__.py +++ b/filters/cluster/rm/postgres-8/__init__.py @@ -13,7 +13,7 @@ ccs_artefacts = ''.join(( ### -from ....utils_cib import ResourceSpec +from ....utils_cib import ResourceSpec, rg2hb_xsl ccsflat2pcsprelude = '''\ <!-- @@ -25,22 +25,13 @@ ccsflat2pcsprelude = '''\ ) + ''' <!-- INSTANCE_ATTRIBUTES --> <instance_attributes id="{concat($Prefix, '-ATTRS')}"> - <!-- config ~ config_file --> - <nvpair id="{concat($Prefix, '-ATTRS-config')}" - name="config" - value="{@config_file}"/> - <!-- start_opt ~ postmaster_options --> - <xsl:if test="postmaster_options"> - <nvpair id="{concat($Prefix, '-ATTRS-start_opt')}" - name="start_opt" - value="{@postmaster_options}"/> - </xsl:if> - <!-- pgdba ~ postmaster_user --> - <xsl:if test="postmaster_user"> - <nvpair id="{concat($Prefix, '-ATTRS-pgdba')}" - name="pgdba" - value="{@postmaster_user}"/> - </xsl:if> +''' + ( + rg2hb_xsl('config', 'config_file', required=True) + + + rg2hb_xsl('start_opt', 'postmaster_options') + + + rg2hb_xsl('pgdba', 'postmaster_user') +) + '''\ <!-- XXX some items from postmaster_options could be re-parsed into respective RA params (-h $OCF_RESKEY_pghost) --> @@ -48,12 +39,9 @@ ccsflat2pcsprelude = '''\ <!-- OPERATIONS --> <operations> - <xsl:if test="@startup_wait"> - <op id="{concat($Prefix, '-OPS-start')}" - name="start" - interval="0" - timeout="{concat(@startup_wait, 's')}"/> - </xsl:if> +''' + ( + rg2hb_xsl('start', 'startup_wait', op=True) +) + '''\ </operations> </xsl:when> ''' diff --git a/utils_cib.py b/utils_cib.py index bf5d3a0..1170cc8 100644 --- a/utils_cib.py +++ b/utils_cib.py @@ -62,3 +62,34 @@ class ResourceSpec(object): ret += " and @provider='{0}'".format(self._provider) ret += " and @type='{0}'".format(self._type) return ret + + +def rg2hb_xsl(dst, src, required=False, op=False): + """Emit XSL snippet yielding nvpair-encoded HB RA parameter from RG one + + Parameters: + required valid values: False, True, abs (use raw `src` instead) + """ + assert required in (False, True, abs), "Invalid `required` param" + return (('''\ + <xsl:if test="@{src}"> +''' if not required else '') + (('''\ + <!-- {dst} ~ {src} --> + <nvpair id="{{concat($Prefix, '-ATTRS-{dst}')}}" + name="{dst}" +''' + ('''\ + value="{{@{src}}}"/> +''' if required is not abs else '''\ + value="{src}"/> +''')) if not op else ('''\ + <!-- op:{dst} ~ {src} --> + <op id="{{concat($Prefix, '-OP-{dst}')}}" + name="{dst}" + interval="0" +''' + ('''\ + timeout="{{concat(@{src}, 's')}}"/> +''' if required is not abs else '''\ + timeout="{src}"/> +'''))) + ('''\ + </xsl:if> +''' if not required else '')).format(dst=dst, src=src) |