summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2015-10-26 12:09:31 -0400
committerJames Cammarata <jimi@sngx.net>2015-10-26 12:09:58 -0400
commit677a2f95e5951bbf0244f4ed640f07cbd0d15abb (patch)
treefd899d23a41a0f380105034e5d878046d7a04cec
parent8f77dd1cf2e1c6538b3f0081d39a29dfce93bcf1 (diff)
downloadansible-677a2f95e5951bbf0244f4ed640f07cbd0d15abb.tar.gz
Make sure Base attributes are copied cleanly
Fixes #12882
-rw-r--r--lib/ansible/playbook/base.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/ansible/playbook/base.py b/lib/ansible/playbook/base.py
index 457b9e08c1..39ae27b7be 100644
--- a/lib/ansible/playbook/base.py
+++ b/lib/ansible/playbook/base.py
@@ -19,6 +19,7 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
+import collections
import itertools
import operator
import uuid
@@ -247,7 +248,13 @@ class Base:
new_me = self.__class__()
for name in self._get_base_attributes():
- setattr(new_me, name, getattr(self, name))
+ attr_val = getattr(self, name)
+ if isinstance(attr_val, collections.Sequence):
+ setattr(new_me, name, attr_val[:])
+ elif isinstance(attr_val, collections.Mapping):
+ setattr(new_me, name, attr_val.copy())
+ else:
+ setattr(new_me, name, attr_val)
new_me._loader = self._loader
new_me._variable_manager = self._variable_manager