Arik Hadas has uploaded a new change for review. Change subject: core: add managed virtio-serial devices on upgrade ......................................................................
core: add managed virtio-serial devices on upgrade The upgrade scripts do the following things: - Change every existing virtio-serial device to be managed - Then is adds managed virtio-serial device to VMs that don't have it In addition, we might get reports of unmanaged virtio-serial devices from VMs that were running at the time of the upgrade, so in that case we'll not add new device, but use the managed device instead. Change-Id: I5b99dd3fa0d43307788a685c0115b32691757454 Bug-Url: https://bugzilla.redhat.com/1028387 Signed-off-by: Arik Hadas <[email protected]> --- M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java A packaging/dbscripts/upgrade/03_06_1010_change_virtio_serial_to_managed_device.sql 2 files changed, 36 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/31894/1 diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java index 24732f7..60e4eb9 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java @@ -1236,7 +1236,7 @@ continue; } - Guid deviceId = getDeviceId(device); + Guid deviceId = getDeviceId(device, deviceMap); VmDevice vmDevice = deviceMap.get(new VmDeviceId(deviceId, vmId)); if (deviceId == null || vmDevice == null) { deviceId = addNewVmDevice(vmId, device); @@ -1326,9 +1326,21 @@ * @param device * @return */ - private static Guid getDeviceId(Map device) { + private static Guid getDeviceId(Map device, Map<VmDeviceId, VmDevice> deviceMap) { String deviceId = (String) device.get(VdsProperties.DeviceId); - return deviceId == null ? null : new Guid(deviceId); + if (deviceId != null) { + return new Guid(deviceId); + } + + if (VdsProperties.VirtioSerial.equals(device.get(VdsProperties.Device))) { + for (VmDevice dev : deviceMap.values()) { + if (VmDeviceType.VIRTIOSERIAL.getName().equals(dev.getDevice())) { + return dev.getDeviceId(); + } + } + } + + return null; } // if not statistics check if status changed return a list of those diff --git a/packaging/dbscripts/upgrade/03_06_1010_change_virtio_serial_to_managed_device.sql b/packaging/dbscripts/upgrade/03_06_1010_change_virtio_serial_to_managed_device.sql new file mode 100644 index 0000000..75ca2ec --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_1010_change_virtio_serial_to_managed_device.sql @@ -0,0 +1,21 @@ +-- change existing unmanaged virtio-serial devices to be managed +update vm_device set is_managed=true where device='virtio-serial'; + +-- add managed virtio-serial device to each vm that does not have it +Create or replace FUNCTION __temp_add_missing_virio_serial_devices() +RETURNS VOID + AS $procedure$ + DECLARE + v_vm_guid UUID; +BEGIN + FOR v_vm_guid in (select vm_guid from vm_static where entity_type!='INSTANCE_TYPE' and vm_guid not in (select vm_id from vm_device where device='virtio-serial')) LOOP + INSERT INTO vm_device (device_id, vm_id, type, device, address, spec_params, is_managed, is_plugged, custom_properties, snapshot_id) + VALUES ((SELECT uuid_generate_v1()), v_vm_guid, 'controller', 'virtio-serial', '', '', true, true, '', NULL); + END LOOP; + +RETURN; +END; $procedure$ +LANGUAGE plpgsql; + +SELECT __temp_add_missing_virio_serial_devices(); +DROP function __temp_add_missing_virio_serial_devices(); -- To view, visit http://gerrit.ovirt.org/31894 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5b99dd3fa0d43307788a685c0115b32691757454 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Arik Hadas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
