diff options
author | Lénaïc Huard <lhuard@amadeus.com> | 2015-06-07 23:08:55 +0200 |
---|---|---|
committer | Lénaïc Huard <lhuard@amadeus.com> | 2015-07-03 14:55:38 +0200 |
commit | 3c48b582bf63fdf46efb2eb644f3adac313ffd6d (patch) | |
tree | f212041aec1e3fb42b0f7932344111997c9f6ea4 /lookup_plugins/oo_option.py | |
parent | 6ae88062163562c8b67090c0522596a2c0c9fd51 (diff) | |
download | openshift-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.py | 73 |
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 |