diff --git a/cloudbaseinit/plugins/common/userdata.py b/cloudbaseinit/plugins/common/userdata.py index 23346ae6..4b06047b 100644 --- a/cloudbaseinit/plugins/common/userdata.py +++ b/cloudbaseinit/plugins/common/userdata.py @@ -134,7 +134,7 @@ class UserDataPlugin(base.BasePlugin): LOG.debug("Calling user part handler for content type: %s" % content_type) handler_func(None, content_type, part.get_filename(), - part.get_payload()) + part.get_payload(decode=True)) else: user_data_plugin = user_data_plugins.get(content_type) if not user_data_plugin: diff --git a/cloudbaseinit/plugins/common/userdataplugins/cloudconfig.py b/cloudbaseinit/plugins/common/userdataplugins/cloudconfig.py index 76c59a08..9300e46f 100644 --- a/cloudbaseinit/plugins/common/userdataplugins/cloudconfig.py +++ b/cloudbaseinit/plugins/common/userdataplugins/cloudconfig.py @@ -105,5 +105,5 @@ class CloudConfigPlugin(base.BaseUserDataPlugin): return executor.execute() def process(self, part): - payload = part.get_payload() + payload = part.get_payload(decode=True) return self.process_non_multipart(payload) diff --git a/cloudbaseinit/plugins/common/userdataplugins/heat.py b/cloudbaseinit/plugins/common/userdataplugins/heat.py index ee3cfb53..be8ff454 100644 --- a/cloudbaseinit/plugins/common/userdataplugins/heat.py +++ b/cloudbaseinit/plugins/common/userdataplugins/heat.py @@ -40,10 +40,10 @@ class HeatPlugin(base.BaseUserDataPlugin): file_name = os.path.join(CONF.heat_config_dir, part.get_filename()) self._check_dir(file_name) - encoding.write_file(file_name, part.get_payload()) + payload = part.get_payload(decode=True) + encoding.write_file(file_name, payload) if part.get_filename() == self._heat_user_data_filename: - payload = part.get_payload() # Normalize the payload to bytes, since `execute_user_data_script` # operates on bytes and `get_payload` returns a string on # Python 3. diff --git a/cloudbaseinit/plugins/common/userdataplugins/parthandler.py b/cloudbaseinit/plugins/common/userdataplugins/parthandler.py index fea7f104..8dfcade6 100644 --- a/cloudbaseinit/plugins/common/userdataplugins/parthandler.py +++ b/cloudbaseinit/plugins/common/userdataplugins/parthandler.py @@ -29,7 +29,7 @@ class PartHandlerPlugin(base.BaseUserDataPlugin): def process(self, part): temp_dir = tempfile.gettempdir() part_handler_path = os.path.join(temp_dir, part.get_filename()) - encoding.write_file(part_handler_path, part.get_payload()) + encoding.write_file(part_handler_path, part.get_payload(decode=True)) part_handler = classloader.ClassLoader().load_module(part_handler_path) diff --git a/cloudbaseinit/plugins/common/userdataplugins/shellscript.py b/cloudbaseinit/plugins/common/userdataplugins/shellscript.py index 855ced6f..84186297 100644 --- a/cloudbaseinit/plugins/common/userdataplugins/shellscript.py +++ b/cloudbaseinit/plugins/common/userdataplugins/shellscript.py @@ -36,7 +36,7 @@ class ShellScriptPlugin(base.BaseUserDataPlugin): target_path = os.path.join(tempfile.gettempdir(), file_name) try: - encoding.write_file(target_path, part.get_payload()) + encoding.write_file(target_path, part.get_payload(decode=True)) return fileexecutils.exec_file(target_path) except Exception as ex: diff --git a/cloudbaseinit/tests/plugins/common/userdataplugins/test_shellscript.py b/cloudbaseinit/tests/plugins/common/userdataplugins/test_shellscript.py index 75c600a6..7abc7609 100644 --- a/cloudbaseinit/tests/plugins/common/userdataplugins/test_shellscript.py +++ b/cloudbaseinit/tests/plugins/common/userdataplugins/test_shellscript.py @@ -63,7 +63,7 @@ class ShellScriptPluginTests(unittest.TestCase): mock_write_file.assert_called_once_with( fake_target, mock_part.get_payload.return_value) mock_exec_file.assert_called_once_with(fake_target) - mock_part.get_payload.assert_called_once_with() + mock_part.get_payload.assert_called_once_with(decode=True) mock_gettempdir.assert_called_once_with() if not exception: self.assertEqual('fake response', response)