diff --git a/slapos/recipe/request.py b/slapos/recipe/request.py index 0c57043b7a05bcddae297e336e6393fda8867399..7b3a22a95d35be6b7ad80c892883bff50257dcdf 100644 --- a/slapos/recipe/request.py +++ b/slapos/recipe/request.py @@ -190,12 +190,15 @@ class Recipe(object): # Then try to get all the parameters. In case of problem, put empty string. for param in return_parameters: - options['connection-%s' % param] = '' + value = '' try: - options['connection-%s' % param] = return_parameter_dict[param] + value = return_parameter_dict[param] except KeyError: if self.failed is None: self.failed = param + if isinstance(value, unicode): + value = value.encode('UTF-8') + options['connection-%s' % param] = value def _filterForStorage(self, partition_parameter_kw): return partition_parameter_kw diff --git a/slapos/recipe/slapconfiguration.py b/slapos/recipe/slapconfiguration.py index b70e861aeb5aad18cc7b181314d77a89407e21e4..1a2bf833f1ae72860e291a76eebecde6dcab86ff 100644 --- a/slapos/recipe/slapconfiguration.py +++ b/slapos/recipe/slapconfiguration.py @@ -264,6 +264,8 @@ class Recipe(object): # be very careful with overriding master's information for key, value in flatten_dict(partition_params).items(): if key not in options: + if isinstance(value, unicode): + value = value.encode('UTF-8') options[key] = value # print out augmented options to see what we are passing logger.debug(str(options)) diff --git a/slapos/test/recipe/test_request.py b/slapos/test/recipe/test_request.py index 0e64a810754064f8aa7801e21f79a16396ab8c7a..aa7e3987c8b1a65c9874be181c3835aac4604af8 100644 --- a/slapos/test/recipe/test_request.py +++ b/slapos/test/recipe/test_request.py @@ -83,6 +83,7 @@ class RecipeTestMixin(object): result = recipe.install() self.assertEqual([], result) self.assertEqual(options['connection-anything'], 'done') + self.assertIsInstance(options['connection-anything'], str) self.request_instance.assert_called_with( '', 'RootSoftwareInstance', '', filter_kw={}, partition_parameter_kw=self.called_partition_parameter_kw, diff --git a/slapos/test/recipe/test_slaposconfiguration.py b/slapos/test/recipe/test_slaposconfiguration.py index 9235acd39bb0255adec268fe5ad675e51b3dfbca..0e6c36a5d9b2699787eb37b3a82fa601d113725b 100644 --- a/slapos/test/recipe/test_slaposconfiguration.py +++ b/slapos/test/recipe/test_slaposconfiguration.py @@ -18,7 +18,7 @@ class SlapConfigurationTest(unittest.TestCase): self.resource_file = os.path.join(self.instance_root, slapformat.Partition.resource_file) self.resource = { "tun": { - "ipv4": "192.168.0.1" + "ipv4": u"192.168.0.1" }, "address_list": [ 10, 20 @@ -48,6 +48,7 @@ class SlapConfigurationTest(unittest.TestCase): self.assertEqual(options['tun-ipv4'], "192.168.0.1", "Folded attrs should be separated by -") + self.assertIsInstance(options['tun-ipv4'], str) self.assertEqual(options['address-list'], [10, 20], "All underscores should be replaced with -")