Omer Frenkel has uploaded a new change for review. Change subject: core: fix vm pools behavior when DC is missing ......................................................................
core: fix vm pools behavior when DC is missing When DC is missing (for example force-removed) then if any vm pools still exist, they don't return in queries, because of bad join in the view. this was fixed by changing the vm_pools_view to use left-join with storage-pools in addition, this should not happen, as empty vm pools are not supported. but when using force-remove DC, all vms are deleted, but vm-pools are left. this was fixed by changing the stored procedure for remove storage pool, to remove vm-pools as well, after removing vms. Change-Id: I47c963b6b66efa05e96cb9b9f80e034d8070a30b Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1069219 Signed-off-by: Omer Frenkel <[email protected]> --- M packaging/dbscripts/create_views.sql M packaging/dbscripts/storages_sp.sql 2 files changed, 11 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/10/25010/1 diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index 187e0f9..a388cb7 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -793,7 +793,7 @@ SELECT vm_pools.vm_pool_id, vm_pools.vm_pool_name, vm_pools.vm_pool_description, vm_pools.vm_pool_comment, vm_pools.vm_pool_type, vm_pools.parameters, vm_pools.prestarted_vms, vm_pools.vds_group_id, vds_groups.name AS vds_group_name, storage_pool.name as storage_pool_name, storage_pool.id as storage_pool_id, vm_pools.max_assigned_vms_per_user as max_assigned_vms_per_user FROM vm_pools JOIN vds_groups ON vm_pools.vds_group_id = vds_groups.vds_group_id - JOIN storage_pool ON storage_pool.id = vds_groups.storage_pool_id; + LEFT JOIN storage_pool ON storage_pool.id = vds_groups.storage_pool_id; diff --git a/packaging/dbscripts/storages_sp.sql b/packaging/dbscripts/storages_sp.sql index bc349ee..b785f0a 100644 --- a/packaging/dbscripts/storages_sp.sql +++ b/packaging/dbscripts/storages_sp.sql @@ -119,6 +119,16 @@ WHERE storage_pool_id = v_id); delete FROM vm_static where vm_guid in (select vm_guid from vms where storage_pool_id = v_id); + -- Delete vm pools as empty pools are not supported + -- Get (and keep) a shared lock with "right to upgrade to exclusive" + select vm_pool_id INTO v_val FROM vm_pools where vm_pool_id in (select vm_pool_id from vm_pools_view where storage_pool_id = v_id) FOR UPDATE; + DELETE + FROM vm_pools + WHERE vm_pool_id IN ( + SELECT vm_pool_id + FROM vm_pools_view + WHERE storage_pool_id = v_id); + -- Get (and keep) a shared lock with "right to upgrade to exclusive" -- in order to force locking parent before children select id INTO v_val FROM storage_pool WHERE id = v_id FOR UPDATE; -- To view, visit http://gerrit.ovirt.org/25010 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I47c963b6b66efa05e96cb9b9f80e034d8070a30b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.3 Gerrit-Owner: Omer Frenkel <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
