Fix unsupported format character error for multipart mime

Change-Id: I6cdd794924429040370796e127734c663980f710
Closes-Bug: #1473660
This commit is contained in:
Rabi Mishra 2015-07-14 18:42:34 +05:30
parent 163efe9ea7
commit b924a29d06
2 changed files with 26 additions and 10 deletions

View File

@ -15,6 +15,7 @@ import email
from email.mime import multipart
from email.mime import text
import os
from oslo_utils import uuidutils
from heat.common.i18n import _
from heat.engine import constraints
@ -112,13 +113,14 @@ class MultipartMime(software_config.SoftwareConfig):
part_type = item.get(self.TYPE, self.TEXT)
part = config
try:
sc = self.rpc_client().show_software_config(
self.context, config)
except Exception as ex:
self.rpc_client().ignore_error_named(ex, 'NotFound')
else:
part = sc[rpc_api.SOFTWARE_CONFIG_CONFIG]
if uuidutils.is_uuid_like(config):
try:
sc = self.rpc_client().show_software_config(
self.context, config)
except Exception as ex:
self.rpc_client().ignore_error_named(ex, 'NotFound')
else:
part = sc[rpc_api.SOFTWARE_CONFIG_CONFIG]
if part_type == self.MULTIPART:
self._append_multiparts(subparts, part)

View File

@ -103,7 +103,7 @@ class MultipartMimeTest(common.HeatTestCase):
def test_get_message_fail_back(self):
parts = [{
'config': '#!/bin/bash',
'config': '2e0e5a60-2843-4cfd-9137-d90bdf18eef5',
'type': 'text'
}]
self.init_config(parts=parts)
@ -111,14 +111,28 @@ class MultipartMimeTest(common.HeatTestCase):
result = self.config.get_message()
self.assertEqual(
'#!/bin/bash',
'2e0e5a60-2843-4cfd-9137-d90bdf18eef5',
self.rpc_client.show_software_config.call_args[0][1])
message = email.message_from_string(result)
self.assertTrue(message.is_multipart())
subs = message.get_payload()
self.assertEqual(1, len(subs))
self.assertEqual('#!/bin/bash', subs[0].get_payload())
self.assertEqual('2e0e5a60-2843-4cfd-9137-d90bdf18eef5',
subs[0].get_payload())
def test_get_message_non_uuid(self):
parts = [{
'config': 'http://192.168.122.36:8000/v1/waitcondition/'
}]
self.init_config(parts=parts)
result = self.config.get_message()
message = email.message_from_string(result)
self.assertTrue(message.is_multipart())
subs = message.get_payload()
self.assertEqual(1, len(subs))
self.assertEqual('http://192.168.122.36:8000/v1/waitcondition/',
subs[0].get_payload())
def test_get_message_text_with_filename(self):
parts = [{