diff options
author | Scott Moser <smoser@ubuntu.com> | 2013-05-10 14:26:32 -0700 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2013-05-10 14:26:32 -0700 |
commit | 638cc131857582e3df0c35b8a49433c660fdd299 (patch) | |
tree | fcad890958997eff2e643f3141165e71bdd6eb71 /cloudinit/mergers/__init__.py | |
parent | 4697c1afcc7d05951f4717a83dad01d2360301c6 (diff) | |
parent | 9f866ff5540558bab56f10e38481e4ad2efa079b (diff) | |
download | vyos-cloud-init-638cc131857582e3df0c35b8a49433c660fdd299.tar.gz vyos-cloud-init-638cc131857582e3df0c35b8a49433c660fdd299.zip |
Fixed merging capabilities.
Instead of previously having merging which was not backwards compatible
with the 0.7.1 and prior methods this patch works to ensure said backwards
compatible while at the same time making the new merging functionality
work in a more customizable manner.
Diffstat (limited to 'cloudinit/mergers/__init__.py')
-rw-r--r-- | cloudinit/mergers/__init__.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/cloudinit/mergers/__init__.py b/cloudinit/mergers/__init__.py index f504e15f..0978b2c6 100644 --- a/cloudinit/mergers/__init__.py +++ b/cloudinit/mergers/__init__.py @@ -55,6 +55,9 @@ class UnknownMerger(object): if not meth: meth = self._handle_unknown args.insert(0, method_name) + LOG.debug("Merging '%s' into '%s' using method '%s' of '%s'", + type_name, type_utils.obj_name(merge_with), + meth.__name__, self) return meth(*args) @@ -66,6 +69,9 @@ class LookupMerger(UnknownMerger): else: self._lookups = lookups + def __str__(self): + return 'LookupMerger: (%s)' % (len(self._lookups)) + # For items which can not be merged by the parent this object # will lookup in a internally maintained set of objects and # find which one of those objects can perform the merge. If @@ -78,6 +84,8 @@ class LookupMerger(UnknownMerger): # First one that has that method/attr gets to be # the one that will be called meth = getattr(merger, meth_wanted) + LOG.debug(("Merging using located merger '%s'" + " since it had method '%s'"), merger, meth_wanted) break if not meth: return UnknownMerger._handle_unknown(self, meth_wanted, @@ -87,9 +95,9 @@ class LookupMerger(UnknownMerger): def dict_extract_mergers(config): parsed_mergers = [] - raw_mergers = config.get('merge_how') + raw_mergers = config.pop('merge_how', None) if raw_mergers is None: - raw_mergers = config.get('merge_type') + raw_mergers = config.pop('merge_type', None) if raw_mergers is None: return parsed_mergers if isinstance(raw_mergers, (str, basestring)): |