summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2015-03-12 14:46:21 +0100
committerJan Pokorný <jpokorny@redhat.com>2015-03-16 22:40:40 +0100
commit798d2c334c2ed4183a88fea6300e7be5e8cdfd9e (patch)
treefe9945d902ed09d7b638edbac7a1dbb7903683d6
parentf91f83c0450fb231ffc0ddb5f9ae8e6fa3b74508 (diff)
downloadclufter-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__.py30
-rw-r--r--filters/cluster/rm/lvm/__init__.py17
-rw-r--r--filters/cluster/rm/mysql/__init__.py13
-rw-r--r--filters/cluster/rm/nfsserver/__init__.py21
-rw-r--r--filters/cluster/rm/postgres-8/__init__.py34
-rw-r--r--utils_cib.py31
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)