Move templating into a utils function. Reuse is our friend.

This commit is contained in:
Michael DeHaan 2012-03-19 19:23:14 -04:00
parent c1fe0dd719
commit af9596307d
3 changed files with 17 additions and 11 deletions

View file

@ -24,7 +24,6 @@ from ansible import errors
import yaml import yaml
import shlex import shlex
import os import os
import jinja2
import time import time
# used to transfer variables to Runner # used to transfer variables to Runner
@ -111,19 +110,15 @@ class PlayBook(object):
if x.find("=") != -1: if x.find("=") != -1:
(k,v) = x.split("=") (k,v) = x.split("=")
inject_vars[k] = v inject_vars[k] = v
included = file(path).read() included = utils.template_from_file(path, inject_vars)
template = jinja2.Template(included)
included = template.render(inject_vars)
included = yaml.load(included) included = yaml.load(included)
for x in included: for x in included:
new_tasks.append(x) new_tasks.append(x)
def _include_handlers(self, play, handler, dirname, new_handlers): def _include_handlers(self, play, handler, dirname, new_handlers):
path = utils.path_dwim(dirname, handler['include']) path = utils.path_dwim(dirname, handler['include'])
included = file(path).read()
inject_vars = self._get_vars(play, dirname) inject_vars = self._get_vars(play, dirname)
template = jinja2.Template(included) included = utils.template_from_file(path, inject_vars)
included = template.render(inject_vars)
included = yaml.load(included) included = yaml.load(included)
for x in included: for x in included:
new_handlers.append(x) new_handlers.append(x)

View file

@ -24,7 +24,6 @@ import signal
import os import os
import Queue import Queue
import random import random
import jinja2
import traceback import traceback
import tempfile import tempfile
import subprocess import subprocess
@ -326,8 +325,7 @@ class Runner(object):
else: else:
args = "%s metadata=~/.ansible/setup" % args args = "%s metadata=~/.ansible/setup" % args
template = jinja2.Template(args) args = utils.template(args, inject_vars)
args = template.render(inject_vars)
argsfile = self._transfer_argsfile(conn, tmp, args) argsfile = self._transfer_argsfile(conn, tmp, args)
if async_jid is None: if async_jid is None:

View file

@ -20,13 +20,15 @@
import sys import sys
import os import os
import shlex import shlex
from ansible import errors import jinja2
try: try:
import json import json
except ImportError: except ImportError:
import simplejson as json import simplejson as json
from ansible import errors
############################################################### ###############################################################
# UTILITY FUNCTIONS FOR COMMAND LINE TOOLS # UTILITY FUNCTIONS FOR COMMAND LINE TOOLS
############################################################### ###############################################################
@ -222,4 +224,15 @@ def parse_json(data):
return { "failed" : True, "parsed" : False, "msg" : data } return { "failed" : True, "parsed" : False, "msg" : data }
return results return results
def template(text, vars):
''' run a text buffer through the templating engine '''
template = jinja2.Template(text)
return template.render(vars)
def template_from_file(path, vars):
''' run a file through the templating engine '''
data = file(path).read()
return template(data, vars)