summaryrefslogtreecommitdiff
path: root/cloudinit/mergers/m_str.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2013-05-10 14:26:32 -0700
committerScott Moser <smoser@ubuntu.com>2013-05-10 14:26:32 -0700
commit638cc131857582e3df0c35b8a49433c660fdd299 (patch)
treefcad890958997eff2e643f3141165e71bdd6eb71 /cloudinit/mergers/m_str.py
parent4697c1afcc7d05951f4717a83dad01d2360301c6 (diff)
parent9f866ff5540558bab56f10e38481e4ad2efa079b (diff)
downloadvyos-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.py37
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)