From 677a2f95e5951bbf0244f4ed640f07cbd0d15abb Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Mon, 26 Oct 2015 12:09:31 -0400 Subject: [PATCH] Make sure Base attributes are copied cleanly Fixes #12882 --- lib/ansible/playbook/base.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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