Fixes spawn issue on Hyper-V

The current Hyper-V Technical Preview introduces slight changes
in the data returned by GetVirtualHardDiskSettingData in
Msvm_ImageManagementService.

Co-Authored-By: Adelina Tuvenie <atuvenie@cloudbasesolutions.com>
Change-Id: I830b07efb657acc1486f86a475310f5f4e584a37
Closes-Bug: #1376883
This commit is contained in:
Alessandro Pilotti 2014-10-02 22:05:23 +03:00 committed by Adelina Tuvenie
parent c54039c507
commit 1f63f97c6f
2 changed files with 23 additions and 1 deletions

View File

@ -110,6 +110,23 @@ class VHDUtilsV2TestCase(test.NoDBTestCase):
vhd_info['MaxInternalSize'])
self.assertEqual(self._FAKE_TYPE, vhd_info['Type'])
def test_get_vhd_info_no_parent(self):
fake_vhd_xml_no_parent = self._fake_vhd_info_xml.replace(
self._FAKE_PARENT_VHD_PATH, "")
mock_img_svc = self._vhdutils._conn.Msvm_ImageManagementService()[0]
mock_img_svc.GetVirtualHardDiskSettingData.return_value = (
self._FAKE_JOB_PATH, self._FAKE_RET_VAL, fake_vhd_xml_no_parent)
vhd_info = self._vhdutils.get_vhd_info(self._FAKE_VHD_PATH)
self.assertEqual(self._FAKE_VHD_PATH, vhd_info['Path'])
self.assertIsNone(vhd_info['ParentPath'])
self.assertEqual(self._FAKE_FORMAT, vhd_info['Format'])
self.assertEqual(self._FAKE_MAK_INTERNAL_SIZE,
vhd_info['MaxInternalSize'])
self.assertEqual(self._FAKE_TYPE, vhd_info['Type'])
def test_create_dynamic_vhd(self):
self._vhdutils.get_vhd_info = mock.MagicMock(
return_value={'Format': self._FAKE_FORMAT})

View File

@ -215,7 +215,12 @@ class VHDUtilsV2(vhdutils.VHDUtils):
et = ElementTree.fromstring(vhd_info_xml)
for item in et.findall("PROPERTY"):
name = item.attrib["NAME"]
value_text = item.find("VALUE").text
value_item = item.find("VALUE")
if value_item is None:
value_text = None
else:
value_text = value_item.text
if name in ["Path", "ParentPath"]:
vhd_info_dict[name] = value_text
elif name in ["BlockSize", "LogicalSectorSize",