diff options
author | James Cammarata <jimi@sngx.net> | 2015-10-26 12:09:31 -0400 |
---|---|---|
committer | James Cammarata <jimi@sngx.net> | 2015-10-26 12:09:58 -0400 |
commit | 677a2f95e5951bbf0244f4ed640f07cbd0d15abb (patch) | |
tree | fd899d23a41a0f380105034e5d878046d7a04cec | |
parent | 8f77dd1cf2e1c6538b3f0081d39a29dfce93bcf1 (diff) | |
download | ansible-677a2f95e5951bbf0244f4ed640f07cbd0d15abb.tar.gz |
Make sure Base attributes are copied cleanly
Fixes #12882
-rw-r--r-- | lib/ansible/playbook/base.py | 9 |
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 |