diff options
Diffstat (limited to 'utils_cib.py')
-rw-r--r-- | utils_cib.py | 31 |
1 files changed, 31 insertions, 0 deletions
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) |