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/m_str.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/m_str.py')
| -rw-r--r-- | cloudinit/mergers/m_str.py | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/cloudinit/mergers/m_str.py b/cloudinit/mergers/m_str.py index 291c91c2..e22ce28a 100644 --- a/cloudinit/mergers/m_str.py +++ b/cloudinit/mergers/m_str.py @@ -1,26 +1,30 @@ +# -*- coding: utf-8 -*- # vi: ts=4 expandtab # -# Copyright (C) 2012 Yahoo! Inc. +# Copyright (C) 2012 Yahoo! Inc. # -# Author: Joshua Harlow <harlowja@yahoo-inc.com> +# Author: Joshua Harlow <harlowja@yahoo-inc.com> # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 3, as -# published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. class Merger(object): def __init__(self, _merger, opts): self._append = 'append' in opts + def __str__(self): + return 'StringMerger: (append=%s)' % (self._append) + # On encountering a unicode object to merge value with # we will for now just proxy into the string method to let it handle it. def _on_unicode(self, value, merge_with): @@ -30,10 +34,11 @@ class Merger(object): # perform the following action, if appending we will # merge them together, otherwise we will just return value. def _on_str(self, value, merge_with): + if not isinstance(value, (basestring)): + return merge_with if not self._append: - return value + return merge_with + if isinstance(value, unicode): + return value + unicode(merge_with) else: - if isinstance(value, (unicode)): - return value + unicode(merge_with) - else: - return value + str(merge_with) + return value + str(merge_with) |
