summaryrefslogtreecommitdiffstats
path: root/lookup_plugins/oo_option.py
diff options
context:
space:
mode:
authorLénaïc Huard <lhuard@amadeus.com>2015-06-07 23:08:55 +0200
committerLénaïc Huard <lhuard@amadeus.com>2015-07-03 14:55:38 +0200
commit3c48b582bf63fdf46efb2eb644f3adac313ffd6d (patch)
treef212041aec1e3fb42b0f7932344111997c9f6ea4 /lookup_plugins/oo_option.py
parent6ae88062163562c8b67090c0522596a2c0c9fd51 (diff)
downloadopenshift-3c48b582bf63fdf46efb2eb644f3adac313ffd6d.tar.gz
openshift-3c48b582bf63fdf46efb2eb644f3adac313ffd6d.tar.bz2
openshift-3c48b582bf63fdf46efb2eb644f3adac313ffd6d.tar.xz
openshift-3c48b582bf63fdf46efb2eb644f3adac313ffd6d.zip
Add a generic mechanism for passing options
And use it in the libvirt and openstack playbooks
Diffstat (limited to 'lookup_plugins/oo_option.py')
-rw-r--r--lookup_plugins/oo_option.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/lookup_plugins/oo_option.py b/lookup_plugins/oo_option.py
new file mode 100644
index 000000000..35dce48f9
--- /dev/null
+++ b/lookup_plugins/oo_option.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+# vim: expandtab:tabstop=4:shiftwidth=4
+
+'''
+oo_option lookup plugin for openshift-ansible
+
+Usage:
+
+ - debug:
+ msg: "{{ lookup('oo_option', '<key>') | default('<default_value>', True) }}"
+
+This returns, by order of priority:
+
+* if it exists, the `cli_<key>` ansible variable. This variable is set by `bin/cluster --option <key>=<value> …`
+* if it exists, the envirnoment variable named `<key>`
+* if none of the above conditions are met, empty string is returned
+'''
+
+from ansible.utils import template
+import os
+
+# Reason: disable too-few-public-methods because the `run` method is the only
+# one required by the Ansible API
+# Status: permanently disabled
+# pylint: disable=too-few-public-methods
+class LookupModule(object):
+ ''' oo_option lookup plugin main class '''
+
+ # Reason: disable unused-argument because Ansible is calling us with many
+ # parameters we are not interested in.
+ # The lookup plugins of Ansible have this kwargs “catch-all” parameter
+ # which is not used
+ # Status: permanently disabled unless Ansible API evolves
+ # pylint: disable=unused-argument
+ def __init__(self, basedir=None, **kwargs):
+ ''' Constructor '''
+ self.basedir = basedir
+
+ # Reason: disable unused-argument because Ansible is calling us with many
+ # parameters we are not interested in.
+ # The lookup plugins of Ansible have this kwargs “catch-all” parameter
+ # which is not used
+ # Status: permanently disabled unless Ansible API evolves
+ # pylint: disable=unused-argument
+ def run(self, terms, inject=None, **kwargs):
+ ''' Main execution path '''
+
+ try:
+ terms = template.template(self.basedir, terms, inject)
+ # Reason: disable broad-except to really ignore any potential exception
+ # This is inspired by the upstream "env" lookup plugin:
+ # https://github.com/ansible/ansible/blob/devel/v1/ansible/runner/lookup_plugins/env.py#L29
+ # pylint: disable=broad-except
+ except Exception:
+ pass
+
+ if isinstance(terms, basestring):
+ terms = [terms]
+
+ ret = []
+
+ for term in terms:
+ option_name = term.split()[0]
+ cli_key = 'cli_' + option_name
+ if inject and cli_key in inject:
+ ret.append(inject[cli_key])
+ elif option_name in os.environ:
+ ret.append(os.environ[option_name])
+ else:
+ ret.append('')
+
+ return ret