Arik Hadas has uploaded a new change for review. Change subject: core: add managed virtio-serial device when reading ovf ......................................................................
core: add managed virtio-serial device when reading ovf virtio-serial devices were written to OVF files before, so when we import VM/Template and such device exist we'll just add it as managed device (virtio-serial was added to the list of 'special devices'). It could be that OVF file was created before the unmanaged virtio-serial device was added. In this case, we'll create a new managed virtio-serial device for the imported VM/Template. Change-Id: I08c8dc8514edf5b291017690c654f4a9e455a658 Bug-Url: https://bugzilla.redhat.com/1028387 Signed-off-by: Arik Hadas <[email protected]> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java 2 files changed, 29 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/29844/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java index ada3a59..9a53e36 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java @@ -14,6 +14,7 @@ import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; +import org.ovirt.engine.core.common.businessentities.VmDeviceId; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; @@ -61,6 +62,21 @@ && device.getDevice().equals(VmDeviceType.BRIDGE.getName()); } + public static VmDevice createVirtioSerialDeviceForVm(Guid vmId) { + return new VmDevice(new VmDeviceId(Guid.newGuid(), vmId), + VmDeviceGeneralType.CONTROLLER, + VmDeviceType.VIRTIOSERIAL.getName(), + "", + 0, + new HashMap<String, Object>(), + true, + true, + false, + "", + null, + null); + } + /** * updates given devices boot order * diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java index 5c4c584..f5ffd1a 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java @@ -325,8 +325,9 @@ protected abstract void readOsSection(XmlNode section); protected void readHardwareSection(XmlNode section) { - for (XmlNode node : section.SelectNodes("Item")) { + boolean readVirtioSerial = false; + for (XmlNode node : section.SelectNodes("Item")) { switch (node.SelectSingleNode("rasd:ResourceType", _xmlNS).innerText) { case OvfHardware.CPU: readCpuItem(node); @@ -357,9 +358,15 @@ break; case OvfHardware.OTHER: - readOtherHardwareItem(node); + VmDevice vmDevice = readOtherHardwareItem(node); + readVirtioSerial = readVirtioSerial ? true : + VmDeviceType.VIRTIOSERIAL == VmDeviceType.getByName(vmDevice.getDevice()); break; } + } + + if (!readVirtioSerial) { + addManagedVmDevice(VmDeviceCommonUtils.createVirtioSerialDeviceForVm(vmBase.getId())); } } @@ -411,7 +418,7 @@ UsbPolicy.forStringValue(node.SelectSingleNode("rasd:UsbPolicy", _xmlNS).innerText)); } - private void readOtherHardwareItem(XmlNode node) { + private VmDevice readOtherHardwareItem(XmlNode node) { boolean managed = false; if (node.SelectSingleNode(OvfProperties.VMD_TYPE, _xmlNS) != null && StringUtils.isNotEmpty(node.SelectSingleNode(OvfProperties.VMD_TYPE, _xmlNS).innerText)) { @@ -421,11 +428,9 @@ managed = VmDeviceCommonUtils.isSpecialDevice(device, type); } - if (managed) { - readManagedVmDevice(node, Guid.newGuid()); - } else { - readUnmanagedVmDevice(node, Guid.newGuid()); - } + return managed ? + readManagedVmDevice(node, Guid.newGuid()) + : readUnmanagedVmDevice(node, Guid.newGuid()); } protected VmDeviceType getDisplayDevice(DisplayType displayType) { -- To view, visit http://gerrit.ovirt.org/29844 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I08c8dc8514edf5b291017690c654f4a9e455a658 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
