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
61e76fd7
Commit
61e76fd7
authored
Aug 04, 2015
by
James Cammarata
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Allow conditionals on PlaybookInclude statements
Fixes #11852
parent
b6c3e5d7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
3 deletions
+22
-3
lib/ansible/playbook/__init__.py
+10
-1
lib/ansible/playbook/playbook_include.py
+12
-2
No files found.
lib/ansible/playbook/__init__.py
View file @
61e76fd7
...
@@ -28,6 +28,12 @@ from ansible.playbook.play import Play
...
@@ -28,6 +28,12 @@ from ansible.playbook.play import Play
from
ansible.playbook.playbook_include
import
PlaybookInclude
from
ansible.playbook.playbook_include
import
PlaybookInclude
from
ansible.plugins
import
get_all_plugin_loaders
from
ansible.plugins
import
get_all_plugin_loaders
try
:
from
__main__
import
display
except
ImportError
:
from
ansible.utils.display
import
Display
display
=
Display
()
__all__
=
[
'Playbook'
]
__all__
=
[
'Playbook'
]
...
@@ -77,7 +83,10 @@ class Playbook:
...
@@ -77,7 +83,10 @@ class Playbook:
if
'include'
in
entry
:
if
'include'
in
entry
:
pb
=
PlaybookInclude
.
load
(
entry
,
basedir
=
self
.
_basedir
,
variable_manager
=
variable_manager
,
loader
=
self
.
_loader
)
pb
=
PlaybookInclude
.
load
(
entry
,
basedir
=
self
.
_basedir
,
variable_manager
=
variable_manager
,
loader
=
self
.
_loader
)
self
.
_entries
.
extend
(
pb
.
_entries
)
if
pb
is
not
None
:
self
.
_entries
.
extend
(
pb
.
_entries
)
else
:
display
.
display
(
"skipping playbook include '
%
s' due to conditional test failure"
%
entry
.
get
(
'include'
,
entry
),
color
=
'cyan'
)
else
:
else
:
entry_obj
=
Play
.
load
(
entry
,
variable_manager
=
variable_manager
,
loader
=
self
.
_loader
)
entry_obj
=
Play
.
load
(
entry
,
variable_manager
=
variable_manager
,
loader
=
self
.
_loader
)
self
.
_entries
.
append
(
entry_obj
)
self
.
_entries
.
append
(
entry_obj
)
...
...
lib/ansible/playbook/playbook_include.py
View file @
61e76fd7
...
@@ -21,14 +21,16 @@ __metaclass__ = type
...
@@ -21,14 +21,16 @@ __metaclass__ = type
import
os
import
os
from
ansible.errors
import
AnsibleParserError
from
ansible.parsing.splitter
import
split_args
,
parse_kv
from
ansible.parsing.splitter
import
split_args
,
parse_kv
from
ansible.parsing.yaml.objects
import
AnsibleBaseYAMLObject
,
AnsibleMapping
from
ansible.parsing.yaml.objects
import
AnsibleBaseYAMLObject
,
AnsibleMapping
from
ansible.playbook.attribute
import
FieldAttribute
from
ansible.playbook.attribute
import
FieldAttribute
from
ansible.playbook.base
import
Base
from
ansible.playbook.base
import
Base
from
ansible.playbook.conditional
import
Conditional
from
ansible.playbook.taggable
import
Taggable
from
ansible.playbook.taggable
import
Taggable
from
ansible.
errors
import
AnsibleParserErro
r
from
ansible.
template
import
Templa
r
class
PlaybookInclude
(
Base
,
Taggable
):
class
PlaybookInclude
(
Base
,
Conditional
,
Taggable
):
_name
=
FieldAttribute
(
isa
=
'string'
)
_name
=
FieldAttribute
(
isa
=
'string'
)
_include
=
FieldAttribute
(
isa
=
'string'
)
_include
=
FieldAttribute
(
isa
=
'string'
)
...
@@ -52,6 +54,14 @@ class PlaybookInclude(Base, Taggable):
...
@@ -52,6 +54,14 @@ class PlaybookInclude(Base, Taggable):
# playbook objects
# playbook objects
new_obj
=
super
(
PlaybookInclude
,
self
)
.
load_data
(
ds
,
variable_manager
,
loader
)
new_obj
=
super
(
PlaybookInclude
,
self
)
.
load_data
(
ds
,
variable_manager
,
loader
)
all_vars
=
dict
()
if
variable_manager
:
all_vars
=
variable_manager
.
get_vars
(
loader
=
loader
)
templar
=
Templar
(
loader
=
loader
,
variables
=
all_vars
)
if
not
new_obj
.
evaluate_conditional
(
templar
=
templar
,
all_vars
=
all_vars
):
return
None
# then we use the object to load a Playbook
# then we use the object to load a Playbook
pb
=
Playbook
(
loader
=
loader
)
pb
=
Playbook
(
loader
=
loader
)
...
...
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