private VmDevice readOtherHardwareItem(XmlNode node) { boolean managed = false; if (selectSingleNode(node, VMD_TYPE, _xmlNS) != null && StringUtils.isNotEmpty(selectSingleNode(node, VMD_TYPE, _xmlNS).innerText)) { VmDeviceGeneralType type = VmDeviceGeneralType .forValue(String.valueOf(selectSingleNode(node, VMD_TYPE, _xmlNS).innerText)); String device = selectSingleNode(node, VMD_DEVICE, _xmlNS).innerText; // special devices are treated as managed devices but still have the OTHER OVF ResourceType managed = VmDeviceCommonUtils.isSpecialDevice(device, type); } return managed ? readManagedVmDevice(node, Guid.newGuid()) : readUnmanagedVmDevice(node, Guid.newGuid()); }
private void writeOtherDevices() { List<VmDevice> devices = vmBase.getUnmanagedDeviceList(); Collection<VmDevice> managedDevices = vmBase.getManagedDeviceMap().values(); for (VmDevice device : managedDevices) { if (VmDeviceCommonUtils.isSpecialDevice(device.getDevice(), device.getType())) { devices.add(device); } } for (VmDevice vmDevice : devices) { _writer.writeStartElement("Item"); _writer.writeElement(RASD_URI, "ResourceType", OvfHardware.OTHER); _writer.writeElement(RASD_URI, "InstanceId", vmDevice.getId().getDeviceId().toString()); writeVmDeviceInfo(vmDevice); _writer.writeEndElement(); // item } }