From c271d9650c7ef6da85608cf86cdbf7049a575c73 Mon Sep 17 00:00:00 2001 From: Jan Losinski Date: Fri, 11 Nov 2016 03:30:01 +0100 Subject: [PATCH] Convert pass lookup plugin to ansible 2 Signed-off-by: Jan Losinski --- pass.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/pass.py b/pass.py index dc6d809..34707e0 100644 --- a/pass.py +++ b/pass.py @@ -19,27 +19,31 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type import os +import six import subprocess from ansible import utils, errors +from ansible.plugins.lookup import LookupBase from ansible.errors import AnsibleError -class LookupModule(object): +class LookupModule(LookupBase): COMMAND="pass" CREDENIAL_DIR="credentials" - def __init__(self, basedir=None, **kwargs): - self.basedir = basedir +#def __init__(self, basedir=None, **kwargs): +# super(LookupModule, self).__init__() +# self.basedir = basedir - def run(self, terms, inject=None, **kwargs): + def run(self, terms, inject=None, variables=None, **kwargs): candidates = [] - basepath = utils.path_dwim(self.basedir, self.CREDENIAL_DIR) + basedir = self.get_basedir(variables) + basepath = self._loader.path_dwim_relative(basedir, "", self.CREDENIAL_DIR) if basepath: candidates.append(basepath) - if "playbook_dir" in inject: + if inject is not None and "playbook_dir" in inject: candidates.append(os.path.join(inject['playbook_dir'], self.CREDENIAL_DIR)) keydir = None @@ -47,9 +51,10 @@ class LookupModule(object): if os.path.exists(candidate): keydir = candidate break - terms = utils.listify_lookup_plugin_terms(terms, self.basedir, inject) + if 'listify_lookup_plugin_terms' in globals(): + terms = utils.listify_lookup_plugin_terms(terms, self.basedir, inject) - if isinstance(terms, basestring): + if isinstance(terms, six.string_types): terms = [ terms ] ret = [] @@ -74,7 +79,7 @@ class LookupModule(object): command = "%s %s" % (self.COMMAND, term) p = subprocess.Popen(command, - cwd=self.basedir, + cwd=basedir, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,