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

Reply via email to