Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
695acc2d
Commit
695acc2d
authored
Apr 10, 2013
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make lookup plugins accessible in templates
parent
5b2035ed
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
8 deletions
+17
-8
lib/ansible/utils/template.py
+17
-8
No files found.
lib/ansible/utils/template.py
View file @
695acc2d
...
@@ -40,6 +40,13 @@ FILTER_PLUGINS = {}
...
@@ -40,6 +40,13 @@ FILTER_PLUGINS = {}
_LISTRE
=
re
.
compile
(
r"(\w+)\[(\d+)\]"
)
_LISTRE
=
re
.
compile
(
r"(\w+)\[(\d+)\]"
)
JINJA2_OVERRIDE
=
'#jinja2:'
JINJA2_OVERRIDE
=
'#jinja2:'
def
lookup
(
name
,
*
args
,
**
kwargs
):
instance
=
utils
.
plugins
.
lookup_loader
.
get
(
name
.
lower
(),
basedir
=
kwargs
.
get
(
'basedir'
,
None
))
if
instance
is
not
None
:
return
","
.
join
(
instance
.
run
(
*
args
,
inject
=
vars
,
**
kwargs
))
else
:
raise
errors
.
AnsibleError
(
"lookup plugin (
%
s) not found"
%
name
)
def
_legacy_varFindLimitSpace
(
basedir
,
vars
,
space
,
part
,
lookup_fatal
,
depth
,
expand_lists
):
def
_legacy_varFindLimitSpace
(
basedir
,
vars
,
space
,
part
,
lookup_fatal
,
depth
,
expand_lists
):
''' limits the search space of space to part
''' limits the search space of space to part
...
@@ -266,6 +273,7 @@ def template(basedir, varname, vars, lookup_fatal=True, depth=0, expand_lists=Tr
...
@@ -266,6 +273,7 @@ def template(basedir, varname, vars, lookup_fatal=True, depth=0, expand_lists=Tr
else
:
else
:
return
varname
return
varname
class
_jinja2_vars
(
object
):
class
_jinja2_vars
(
object
):
'''
'''
Helper class to template all variable content before jinja2 sees it.
Helper class to template all variable content before jinja2 sees it.
...
@@ -347,12 +355,16 @@ def template_from_file(basedir, path, vars):
...
@@ -347,12 +355,16 @@ def template_from_file(basedir, path, vars):
'''
'''
jinja_exts
=
C
.
DEFAULT_JINJA2_EXTENSIONS
.
replace
(
" "
,
""
)
.
split
(
','
)
jinja_exts
=
C
.
DEFAULT_JINJA2_EXTENSIONS
.
replace
(
" "
,
""
)
.
split
(
','
)
def
my_lookup
(
*
args
,
**
kwargs
):
return
lookup
(
*
args
,
basedir
=
basedir
,
**
kwargs
)
environment
=
jinja2
.
Environment
(
loader
=
loader
,
trim_blocks
=
True
,
extensions
=
jinja_exts
)
environment
=
jinja2
.
Environment
(
loader
=
loader
,
trim_blocks
=
True
,
extensions
=
jinja_exts
)
for
filter_plugin
in
utils
.
plugins
.
filter_loader
.
all
():
for
filter_plugin
in
utils
.
plugins
.
filter_loader
.
all
():
filters
=
filter_plugin
.
filters
()
filters
=
filter_plugin
.
filters
()
if
not
isinstance
(
filters
,
dict
):
if
not
isinstance
(
filters
,
dict
):
raise
errors
.
AnsibleError
(
"FilterModule.filters should return a dict."
)
raise
errors
.
AnsibleError
(
"FilterModule.filters should return a dict."
)
environment
.
filters
.
update
(
filters
)
environment
.
filters
.
update
(
filters
)
environment
.
globals
[
'lookup'
]
=
my_lookup
try
:
try
:
data
=
codecs
.
open
(
realpath
,
encoding
=
"utf8"
)
.
read
()
data
=
codecs
.
open
(
realpath
,
encoding
=
"utf8"
)
.
read
()
except
UnicodeDecodeError
:
except
UnicodeDecodeError
:
...
@@ -417,6 +429,7 @@ def _get_filter_plugins():
...
@@ -417,6 +429,7 @@ def _get_filter_plugins():
raise
errors
.
AnsibleError
(
"FilterModule.filters should return a dict."
)
raise
errors
.
AnsibleError
(
"FilterModule.filters should return a dict."
)
FILTER_PLUGINS
.
update
(
filters
)
FILTER_PLUGINS
.
update
(
filters
)
return
FILTER_PLUGINS
return
FILTER_PLUGINS
def
template_from_string
(
basedir
,
data
,
vars
):
def
template_from_string
(
basedir
,
data
,
vars
):
''' run a file through the (Jinja2) templating engine '''
''' run a file through the (Jinja2) templating engine '''
...
@@ -438,15 +451,11 @@ def template_from_string(basedir, data, vars):
...
@@ -438,15 +451,11 @@ def template_from_string(basedir, data, vars):
raise
errors
.
AnsibleError
(
"recursive loop detected in template string:
%
s"
%
data
)
raise
errors
.
AnsibleError
(
"recursive loop detected in template string:
%
s"
%
data
)
else
:
else
:
return
data
return
data
def
lookup
(
name
,
*
args
,
**
kwargs
):
def
my_lookup
(
*
args
,
**
kwargs
):
instance
=
utils
.
plugins
.
lookup_loader
.
get
(
name
.
lower
(),
basedir
=
basedir
)
return
lookup
(
*
args
,
basedir
=
basedir
,
**
kwargs
)
if
instance
is
not
None
:
return
","
.
join
(
instance
.
run
(
*
args
,
inject
=
vars
,
**
kwargs
))
else
:
raise
errors
.
AnsibleError
(
"lookup plugin (
%
s) not found"
%
name
)
t
.
globals
[
'lookup'
]
=
lookup
t
.
globals
[
'lookup'
]
=
my_
lookup
res
=
jinja2
.
utils
.
concat
(
t
.
root_render_func
(
t
.
new_context
(
_jinja2_vars
(
basedir
,
vars
,
t
.
globals
),
shared
=
True
)))
res
=
jinja2
.
utils
.
concat
(
t
.
root_render_func
(
t
.
new_context
(
_jinja2_vars
(
basedir
,
vars
,
t
.
globals
),
shared
=
True
)))
return
res
return
res
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment