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

View file

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

View file

@ -20,13 +20,15 @@
import sys
import os
import shlex
from ansible import errors
import jinja2
try:
import json
except ImportError:
import simplejson as json
from ansible import errors
###############################################################
# UTILITY FUNCTIONS FOR COMMAND LINE TOOLS
###############################################################
@ -222,4 +224,15 @@ def parse_json(data):
return { "failed" : True, "parsed" : False, "msg" : data }
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)