mirror of https://github.com/apache/cloudstack.git
Refactor logic for malformed XMLs
This commit is contained in:
parent
fbe7ac61d3
commit
2c9a000530
|
|
@ -63,14 +63,17 @@ public abstract class LibvirtBaseConvertCommandWrapper <T extends Command, A ext
|
|||
}
|
||||
}
|
||||
|
||||
protected List<KVMPhysicalDisk> getTemporaryDisksFromParsedXml(KVMStoragePool pool, LibvirtDomainXMLParser xmlParser, String convertedBasePath) {
|
||||
protected List<KVMPhysicalDisk> getTemporaryDisksFromParsedXml(KVMStoragePool pool, LibvirtDomainXMLParser xmlParser,
|
||||
String convertedBasePath,
|
||||
String conversionPoolPath, String vmVolumesPrefix) {
|
||||
List<LibvirtVMDef.DiskDef> disksDefs = xmlParser.getDisks();
|
||||
disksDefs = disksDefs.stream().filter(x -> x.getDiskType() == LibvirtVMDef.DiskDef.DiskType.FILE &&
|
||||
x.getDeviceType() == LibvirtVMDef.DiskDef.DeviceType.DISK).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(disksDefs)) {
|
||||
String err = String.format("Cannot find any disk defined on the converted XML domain %s.xml", convertedBasePath);
|
||||
logger.error(err);
|
||||
throw new CloudRuntimeException(err);
|
||||
String err = String.format("Cannot find any disk defined on the converted XML domain %s.xml, " +
|
||||
"checking disks at: %s with prefix: %s", convertedBasePath, conversionPoolPath, vmVolumesPrefix);
|
||||
logger.warn(err);
|
||||
return getTemporaryDisksWithPrefixFromTemporaryPool(pool, conversionPoolPath, vmVolumesPrefix);
|
||||
}
|
||||
sanitizeDisksPath(disksDefs);
|
||||
return getPhysicalDisksFromDefPaths(disksDefs, pool);
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class LibvirtCleanupConvertedInstanceDisksCommandWrapper extends LibvirtB
|
|||
|
||||
LibvirtDomainXMLParser xmlParser = xmlExists ? parseMigratedVMXmlDomain(volumesBasePath) : null;
|
||||
List<KVMPhysicalDisk> temporaryDisks = xmlExists && xmlParser != null ?
|
||||
getTemporaryDisksFromParsedXml(conversionPool, xmlParser, volumesBasePath) :
|
||||
getTemporaryDisksFromParsedXml(conversionPool, xmlParser, volumesBasePath, conversionPoolPath, vmVolumesPrefix) :
|
||||
getTemporaryDisksWithPrefixFromTemporaryPool(conversionPool, conversionPoolPath, vmVolumesPrefix);
|
||||
|
||||
cleanupDisksAndDomainFromTemporaryLocation(temporaryDisks, conversionPool, vmVolumesPrefix, xmlExists);
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class LibvirtImportConvertedInstanceCommandWrapper extends LibvirtBaseCon
|
|||
|
||||
List<KVMPhysicalDisk> temporaryDisks = xmlParser == null ?
|
||||
getTemporaryDisksWithPrefixFromTemporaryPool(temporaryStoragePool, temporaryConvertPath, temporaryConvertUuid) :
|
||||
getTemporaryDisksFromParsedXml(temporaryStoragePool, xmlParser, convertedBasePath);
|
||||
getTemporaryDisksFromParsedXml(temporaryStoragePool, xmlParser, convertedBasePath, temporaryConvertPath, temporaryConvertUuid);
|
||||
|
||||
List<KVMPhysicalDisk> disks;
|
||||
if (forceConvertToPool) {
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ public class LibvirtImportConvertedInstanceCommandWrapperTest {
|
|||
Mockito.when(convertedDisk1.getName()).thenReturn("disk1");
|
||||
Mockito.when(temporaryPool.getPhysicalDisk(relativePath)).thenReturn(convertedDisk1);
|
||||
|
||||
List<KVMPhysicalDisk> disks = importInstanceCommandWrapper.getTemporaryDisksFromParsedXml(temporaryPool, parser, "");
|
||||
List<KVMPhysicalDisk> disks = importInstanceCommandWrapper.getTemporaryDisksFromParsedXml(temporaryPool, parser, "", "", "prefix");
|
||||
Mockito.verify(importInstanceCommandWrapper).sanitizeDisksPath(List.of(diskDef));
|
||||
Assert.assertEquals(1, disks.size());
|
||||
Assert.assertEquals("disk1", disks.get(0).getName());
|
||||
|
|
|
|||
Loading…
Reference in New Issue