2019-07-10 07:50:19 +00:00

47 lines
1.2 KiB
Python

from ansible.errors import AnsibleError
from ansible.plugins.lookup import LookupBase
import sys
import subprocess
try:
from __main__ import display
except ImportError:
from ansible.utils.display import Display
display = Display()
UNDEFINED = object()
class LookupModule(LookupBase):
def run(self, args, variables=None, vm=None, create=True, multiline=False, no_symbols=False, default=UNDEFINED):
ret = []
cmd = ['qvm-pass']
if vm is not None:
cmd += ['-d', vm]
if create:
cmd += ['get-or-generate']
if no_symbols:
cmd += ["-n"]
cmd += ['--', args[0]]
display.vvvv(u"Password lookup using command %s" % cmd)
try:
ret = subprocess.check_output(cmd)
if not multiline:
ret = ret[:-1].decode("utf-8")
except subprocess.CalledProcessError as e:
if e.returncode == 8:
if create or default is UNDEFINED:
raise AnsibleError("qubes-pass could not locate password entry %s in store" % args[0])
return [default]
else:
raise AnsibleError("qubes-pass lookup failed: %s" % e)
return [ret]