Daniel Erez has uploaded a new change for review. Change subject: core: StorageDomain - containsUnregisteredEntities flag ......................................................................
core: StorageDomain - containsUnregisteredEntities flag * Added 'containsUnregisteredEntities' flag to StorageDomain business entity for indicating an existence of unregistered VMs/Templates in the domain. * Added a relevant column in storage domains views. * Added tests to StorageDomainDAOTest. * Created an index for 'storage_domain_id' column in 'unregistered_ovf_of_entities' table. Change-Id: I436b81634786de1c56fb3a89358ee9837e82307b Signed-off-by: Daniel Erez <de...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomain.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java M packaging/dbscripts/create_views.sql A packaging/dbscripts/upgrade/03_05_0710_index_for_stoarge_domain_id_in_unregistered_ovf_of_entities.sql 6 files changed, 57 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/31/28831/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomain.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomain.java index 1636f84..4d0af90 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomain.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomain.java @@ -299,6 +299,14 @@ staticData.setAutoRecoverable(autoRecoverable); } + public boolean isContainsUnregisteredEntities() { + return staticData.isContainsUnregisteredEntities(); + } + + public void setContainsUnregisteredEntities(boolean containsUnregisteredEntities) { + staticData.setContainsUnregisteredEntities(containsUnregisteredEntities); + } + public long getLastTimeUsedAsMaster() { return staticData.getLastTimeUsedAsMaster(); } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java index 5cf9e3e..3daeee2 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/StorageDomainStatic.java @@ -41,6 +41,8 @@ private boolean autoRecoverable; + private boolean containsUnregisteredEntities; + private String storagePoolName; private transient long lastTimeUsedAsMaster; @@ -128,6 +130,14 @@ this.autoRecoverable = autoRecoverable; } + public boolean isContainsUnregisteredEntities() { + return containsUnregisteredEntities; + } + + public void setContainsUnregisteredEntities(boolean containsUnregisteredEntities) { + this.containsUnregisteredEntities = containsUnregisteredEntities; + } + public long getLastTimeUsedAsMaster() { return lastTimeUsedAsMaster; } @@ -158,6 +168,7 @@ int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + (autoRecoverable ? 0 : 1); + result = prime * result + (containsUnregisteredEntities ? 0 : 1); result = prime * result + ((connection == null) ? 0 : connection.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((storage == null) ? 0 : storage.hashCode()); @@ -182,6 +193,7 @@ StorageDomainStatic other = (StorageDomainStatic) obj; return (ObjectUtils.objectsEqual(id, other.id) && autoRecoverable == other.autoRecoverable + && containsUnregisteredEntities == other.containsUnregisteredEntities && ObjectUtils.objectsEqual(connection, other.connection) && ObjectUtils.objectsEqual(name, other.name) && ObjectUtils.objectsEqual(storage, other.storage) diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java index c53825b..4961707 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java @@ -165,6 +165,7 @@ entity.setStorageDomainSharedStatus( StorageDomainSharedStatus.forValue(rs.getInt("storage_domain_shared_status"))); entity.setAutoRecoverable(rs.getBoolean("recoverable")); + entity.setContainsUnregisteredEntities(rs.getBoolean("contains_unregistered_entities")); entity.setLastTimeUsedAsMaster(rs.getLong("last_time_used_as_master")); return entity; } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java index 1644191..5e643d6 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java @@ -461,6 +461,19 @@ domains.get(0).getId(), new Guid("c2211b56-8869-41cd-84e1-78d7cb96f31d")); } + + @Test + public void testContainsUnregisteredEntities() { + StorageDomain storageDomain = dao.get(FixturesTool.STORAGE_DOAMIN_NFS2_1); + assertTrue(storageDomain.isContainsUnregisteredEntities()); + } + + @Test + public void testNotContainsUnregisteredEntities() { + StorageDomain storageDomain = dao.get(EXISTING_DOMAIN_ID); + assertFalse(storageDomain.isContainsUnregisteredEntities()); + } + /** * Asserts the result from {@link StorageDomainDAO#getAll()} is correct without filtering * diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index 9581a1c..682c920 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -16,10 +16,13 @@ storage_domain_static.storage_type as storage_type, storage_domain_static.storage_domain_format_type as storage_domain_format_type, storage_domain_static.last_time_used_as_master as last_time_used_as_master, - storage_pool.name as storage_pool_name + storage_pool.name as storage_pool_name, + unregistered_entities.storage_domain_id IS NOT NULL AS contains_unregistered_entities FROM storage_domain_static LEFT OUTER JOIN storage_pool_iso_map on storage_pool_iso_map.storage_id = storage_domain_static.id -LEFT OUTER JOIN storage_pool ON storage_pool.id = storage_pool_iso_map.storage_pool_id; +LEFT OUTER JOIN storage_pool ON storage_pool.id = storage_pool_iso_map.storage_pool_id +LEFT OUTER JOIN (SELECT DISTINCT storage_domain_id + FROM unregistered_ovf_of_entities) AS unregistered_entities ON unregistered_entities.storage_domain_id = storage_domain_static.id; CREATE OR REPLACE VIEW vms_for_disk_view AS @@ -76,7 +79,8 @@ disk_image_dynamic.flush_latency_seconds as flush_latency_seconds, base_disks.alignment as alignment, base_disks.last_alignment_scan as last_alignment_scan, - EXISTS (SELECT 1 FROM storage_domains_ovf_info WHERE images.image_group_id = storage_domains_ovf_info.ovf_disk_id) as ovf_store + EXISTS (SELECT 1 FROM storage_domains_ovf_info WHERE images.image_group_id = storage_domains_ovf_info.ovf_disk_id) as ovf_store, + storage_domain_static_view.contains_unregistered_entities as contains_unregistered_entities FROM images left outer join disk_image_dynamic on images.image_guid = disk_image_dynamic.image_id @@ -284,11 +288,14 @@ storage_domain_static.storage_domain_format_type as storage_domain_format_type, storage_domain_static.last_time_used_as_master as last_time_used_as_master, fn_get_storage_domain_shared_status_by_domain_id(storage_domain_static.id,storage_pool_iso_map.status,storage_domain_static.storage_domain_type) as storage_domain_shared_status, - storage_domain_static.recoverable as recoverable + storage_domain_static.recoverable as recoverable, + unregistered_entities.storage_domain_id IS NOT NULL AS contains_unregistered_entities FROM storage_domain_static INNER JOIN storage_domain_dynamic ON storage_domain_static.id = storage_domain_dynamic.id LEFT OUTER JOIN storage_pool_iso_map ON storage_domain_static.id = storage_pool_iso_map.storage_id -LEFT OUTER JOIN storage_pool ON storage_pool_iso_map.storage_pool_id = storage_pool.id; +LEFT OUTER JOIN storage_pool ON storage_pool_iso_map.storage_pool_id = storage_pool.id +LEFT OUTER JOIN (SELECT DISTINCT storage_domain_id + FROM unregistered_ovf_of_entities) AS unregistered_entities ON unregistered_entities.storage_domain_id = storage_domain_static.id; @@ -307,11 +314,14 @@ fn_get_actual_images_size_by_storage(storage_domain_static.id) as actual_images_size, null as status, fn_get_storage_domain_shared_status_by_domain_id(storage_domain_static.id,storage_pool_iso_map.status,storage_domain_static.storage_domain_type) as storage_domain_shared_status, - storage_domain_static.recoverable as recoverable + storage_domain_static.recoverable as recoverable, + unregistered_entities.storage_domain_id IS NOT NULL AS contains_unregistered_entities FROM storage_domain_static INNER JOIN storage_domain_dynamic ON storage_domain_static.id = storage_domain_dynamic.id -LEFT OUTER JOIN storage_pool_iso_map ON storage_domain_static.id = storage_pool_iso_map.storage_id; +LEFT OUTER JOIN storage_pool_iso_map ON storage_domain_static.id = storage_pool_iso_map.storage_id +LEFT OUTER JOIN (SELECT DISTINCT storage_domain_id + FROM unregistered_ovf_of_entities) AS unregistered_entities ON unregistered_entities.storage_domain_id = storage_domain_static.id; CREATE OR REPLACE VIEW storage_domains_for_search @@ -331,7 +341,8 @@ fn_get_disk_commited_value_by_storage(storage_domain_static.id) as commited_disk_size, fn_get_actual_images_size_by_storage(storage_domain_static.id) as actual_images_size, fn_get_storage_domain_shared_status_by_domain_id(storage_domain_static.id,status_table.status,storage_domain_static.storage_domain_type) as storage_domain_shared_status, - storage_domain_static.recoverable as recoverable + storage_domain_static.recoverable as recoverable, + unregistered_entities.storage_domain_id IS NOT NULL AS contains_unregistered_entities FROM storage_domain_static INNER JOIN @@ -339,7 +350,9 @@ LEFT OUTER JOIN (SELECT storage_id, count(storage_id) > 1 as is_multi_domain, max(status) AS status FROM storage_pool_iso_map - GROUP BY storage_id) AS status_table ON storage_domain_static.id=status_table.storage_id; + GROUP BY storage_id) AS status_table ON storage_domain_static.id=status_table.storage_id +LEFT OUTER JOIN (SELECT DISTINCT storage_domain_id + FROM unregistered_ovf_of_entities) AS unregistered_entities ON unregistered_entities.storage_domain_id = storage_domain_static.id; diff --git a/packaging/dbscripts/upgrade/03_05_0710_index_for_stoarge_domain_id_in_unregistered_ovf_of_entities.sql b/packaging/dbscripts/upgrade/03_05_0710_index_for_stoarge_domain_id_in_unregistered_ovf_of_entities.sql new file mode 100644 index 0000000..4013d28 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_05_0710_index_for_stoarge_domain_id_in_unregistered_ovf_of_entities.sql @@ -0,0 +1 @@ +CREATE INDEX IDX_unregistered_ovf_of_entities_storage_domain_id ON unregistered_ovf_of_entities(storage_domain_id); -- To view, visit http://gerrit.ovirt.org/28831 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I436b81634786de1c56fb3a89358ee9837e82307b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <de...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches