Sahina Bose has uploaded a new change for review.

Change subject: engine: Validate change to gluster network
......................................................................

engine: Validate change to gluster network

Added validations for Manage networks to prevent
gluster network role from being detached/unset
when used by bricks in cluster

Change-Id: I57398b39783dbdc5ae9f79e7d32794f416c23116
Bug-Url: https://bugzilla.redhat.com/1049994
Signed-off-by: Sahina Bose <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVdsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/UpdateNetworkOnClusterCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoTest.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M packaging/dbscripts/create_views.sql
M packaging/dbscripts/gluster_volumes_sp.sql
16 files changed, 97 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/40146/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVdsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVdsCommand.java
index 5d0750d..acb54a7 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVdsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVdsCommand.java
@@ -29,7 +29,6 @@
 import org.ovirt.engine.core.dao.VdsDynamicDAO;
 import org.ovirt.engine.core.dao.VdsStaticDAO;
 import org.ovirt.engine.core.dao.VdsStatisticsDAO;
-import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
 import org.ovirt.engine.core.utils.lock.EngineLock;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
@@ -198,10 +197,6 @@
 
     private boolean isGlusterEnabled() {
         return (getVdsGroup().supportsGlusterService());
-    }
-
-    protected GlusterBrickDao getGlusterBrickDao() {
-        return getDbFacade().getGlusterBrickDao();
     }
 
     private boolean hasVolumeBricksOnServer() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
index 8aa5985..ca4ac4b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
@@ -31,7 +31,6 @@
 import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.VdsStaticDAO;
-import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
 import org.ovirt.engine.core.dao.network.InterfaceDao;
 import org.ovirt.engine.core.dao.network.NetworkDao;
 
@@ -228,10 +227,6 @@
 
     public VdsStaticDAO getVdsStaticDao() {
         return getDbFacade().getVdsStaticDao();
-    }
-
-    protected GlusterBrickDao getGlusterBrickDao() {
-        return getDbFacade().getGlusterBrickDao();
     }
 
     protected InterfaceDao getInterfaceDAO() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
index b41f760..d54cc11 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
@@ -56,7 +56,8 @@
                 new DetachNetworkValidator(getNetwork(), 
getParameters().getNetworkCluster());
         return validate(validator.notManagementNetwork())
                 && validate(validator.clusterNetworkNotUsedByVms())
-                && validate(validator.clusterNetworkNotUsedByTemplates());
+                && validate(validator.clusterNetworkNotUsedByTemplates())
+                && validate(validator.clusterNetworkNotUsedByBricks());
     }
 
     @Override
@@ -128,5 +129,11 @@
             }
             return networkNotUsed(templatesUsingNetwork, 
VdcBllMessages.VAR__ENTITIES__VM_TEMPLATES);
         }
+
+        public ValidationResult clusterNetworkNotUsedByBricks() {
+            return 
networkNotUsed(getGlusterBrickDao().getAllByClusterAndNetworkId(networkCluster.getClusterId(),
+                    network.getId()),
+                    VdcBllMessages.VAR__ENTITIES__GLUSTER_BRICKS);
+        }
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterValidator.java
index bcafb22..03555ee 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterValidator.java
@@ -83,4 +83,5 @@
                         String.format(NETWORK_NAME_REPLACEMENT, networkName))
                 : ValidationResult.VALID;
     }
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/UpdateNetworkOnClusterCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/UpdateNetworkOnClusterCommand.java
index 4be1b6c..28b2a41 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/UpdateNetworkOnClusterCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/UpdateNetworkOnClusterCommand.java
@@ -11,6 +11,7 @@
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.NetworkClusterParameters;
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
@@ -115,6 +116,7 @@
         return (!NetworkUtils.isManagementNetwork(getNetwork())
                 || 
validate(validator.managementNetworkAttachment(getNetworkName())))
                 && 
validate(validator.migrationPropertySupported(getNetworkName()))
+                && validate(glusterNetworkInUseAndUnset(getVdsGroup()))
                 && (!getNetwork().isExternal() || 
validateExternalNetwork(validator));
     }
 
@@ -128,6 +130,17 @@
                 new 
ValidationResult(VdcBllMessages.NETWORK_NOT_EXISTS_IN_CURRENT_CLUSTER) : 
ValidationResult.VALID;
     }
 
+    public ValidationResult glusterNetworkInUseAndUnset(VDSGroup cluster) {
+        return 
ValidationResult.failWith(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_NETWORK_INUSE).
+                when(cluster.supportsGlusterService() && 
oldNetworkCluster.isGluster() && !getNetworkCluster().isGluster()
+                        && isGlusterNetworkInUse());
+    }
+
+    private boolean isGlusterNetworkInUse() {
+        return 
!getGlusterBrickDao().getAllByClusterAndNetworkId(getOldNetworkCluster().getClusterId(),
+                getOldNetworkCluster().getNetworkId()).isEmpty();
+    }
+
     @Override
     public AuditLogType getAuditLogTypeValue() {
         return getSucceeded() ? AuditLogType.NETWORK_UPDTAE_NETWORK_ON_CLUSTER
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
index c3c037b..b87dfd2 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java
@@ -5,6 +5,7 @@
 import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask;
 import org.ovirt.engine.core.common.businessentities.BusinessEntityWithStatus;
 import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
+import org.ovirt.engine.core.common.businessentities.Nameable;
 import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
 import org.ovirt.engine.core.common.validation.group.gluster.AddBrick;
@@ -20,7 +21,7 @@
  * @see GlusterVolumeEntity
  * @see GlusterBrickStatus
  */
-public class GlusterBrickEntity extends IVdcQueryable implements 
BusinessEntityWithStatus<Guid, GlusterStatus>, GlusterTaskSupport {
+public class GlusterBrickEntity extends IVdcQueryable implements 
BusinessEntityWithStatus<Guid, GlusterStatus>, GlusterTaskSupport, Nameable {
     private static final long serialVersionUID = 7119439284741452278L;
 
     @NotNull(message = "VALIDATION.GLUSTER.BRICK.ID.NOT_NULL", groups = { 
RemoveBrick.class })
@@ -237,4 +238,9 @@
         this.volumeName = volumeName;
     }
 
+    @Override
+    public String getName() {
+        return getQualifiedName();
+    }
+
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index e99307f..89d412b 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -7,6 +7,9 @@
     VAR__ENTITIES__HOSTS,
     VAR__TYPE__VM,
     VAR__ENTITIES__VMS,
+    VAR__ENTITIES__VM,
+    VAR__ENTITIES__GLUSTER_BRICKS,
+    VAR__ENTITIES__GLUSTER_BRICK,
     VAR__TYPE__QUOTA,
     VAR__TYPE__VM__CLUSTER,
     VAR__TYPE__VM_TEMPLATE,
@@ -569,6 +572,7 @@
     
ACTION_TYPE_FAILED_MIGRATION_NETWORK_IS_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
     ACTION_TYPE_FAILED_PROVIDER_DOESNT_EXIST(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_REQUIRED(ErrorType.BAD_PARAMETERS),
+    ACTION_TYPE_FAILED_GLUSTER_NETWORK_INUSE(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_NETWORK_ADDRESS_CANNOT_BE_CHANGED(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED(ErrorType.NOT_SUPPORTED),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
index 099b849..0c7499f 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
@@ -43,6 +43,7 @@
 import org.ovirt.engine.core.dao.VmStaticDAO;
 import org.ovirt.engine.core.dao.VmStatisticsDAO;
 import org.ovirt.engine.core.dao.VmTemplateDAO;
+import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
 import org.ovirt.engine.core.dao.gluster.GlusterHooksDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
 import org.ovirt.engine.core.dao.network.NetworkClusterDao;
@@ -566,6 +567,10 @@
         return getDbFacade().getGlusterHooksDao();
     }
 
+    public GlusterBrickDao getGlusterBrickDao() {
+        return getDbFacade().getGlusterBrickDao();
+    }
+
     public StorageDomainDAO getStorageDomainDAO() {
         return getDbFacade().getStorageDomainDao();
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDao.java
index a804aca..26dfb9e 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDao.java
@@ -64,4 +64,6 @@
     public void updateBrickProperties(List<GlusterBrickEntity> bricks);
 
     public void updateBrickNetworkId(Guid brickId, Guid networkId);
+
+    public List<GlusterBrickEntity> getAllByClusterAndNetworkId(Guid 
clusterId, Guid networkId);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
index 20b0676..dc03889 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java
@@ -186,6 +186,15 @@
     }
 
     @Override
+    public List<GlusterBrickEntity> getAllByClusterAndNetworkId(Guid 
clusterId, Guid networkId) {
+        return 
getCallsHandler().executeReadList("GetBricksByClusterIdAndNetworkId",
+                brickRowMapper,
+                getCustomMapSqlParameterSource()
+                        .addValue("cluster_id", clusterId)
+                        .addValue("network_id", networkId));
+    }
+
+    @Override
     protected MapSqlParameterSource 
createFullParametersMapper(GlusterBrickEntity brick) {
         return createBrickParams(brick);
     }
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 4c8bd22..793dfac 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -284,6 +284,9 @@
 VAR__TYPE__PROVIDER_CERTIFICATE=$type provider certificate
 VAR__TYPE__VM=$type VM
 VAR__ENTITIES__VMS=$entities virtual machines
+VAR__ENTITIES__VM=$entities virtual machine
+VAR__ENTITIES__GLUSTER_BRICKS=$entities gluster bricks
+VAR__ENTITIES__GLUSTER_BRICK=$entities gluster brick
 VAR__TYPE__QUOTA=$type Quota
 VAR__TYPE__COMPUTER_ACCOUNT=$type Computer Account
 VAR__TYPE__VM_TEMPLATE=$type Template
@@ -630,6 +633,7 @@
 VM_CANNOT_MOVE_TO_CLUSTER_IN_OTHER_STORAGE_POOL=VM can be moved only to a 
Cluster in the same Data Center.
 VM_CLUSTER_IS_NOT_VALID=Cannot ${action} ${type}. Cluster ID is not valid.
 NETWORK_CANNOT_REMOVE_MANAGEMENT_NETWORK=The Management Network 
('${NetworkName}') is mandatory and cannot be removed.
+ACTION_TYPE_FAILED_GLUSTER_NETWORK_INUSE==Cannot ${action} ${type}. Unsetting 
gluster network property is not allowed when it is used by gluster bricks on 
volumes. The gluster volumes will need to be removed to change this.
 NETWORK_CANNOT_REMOVE_ISCSI_BOND_NETWORK=The Network ('${NetworkName}') could 
not be removed since several iSCSI bonds (${IscsiBonds_COUNTER}) are using this 
network:\n ${IscsiBonds}.\nPlease remove the network first from those iSCSI bon
 NETWORK_OLD_NETWORK_NOT_SPECIFIED=Previous network name is required.
 ACTION_TYPE_FAILED_DETECTED_ACTIVE_VMS=Cannot ${action} ${type}. Active VMs 
were detected.\n\
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoTest.java
index b2afc20..aceb334 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoTest.java
@@ -406,5 +406,19 @@
         existingBrick = dao.getById(FixturesTool.GLUSTER_BRICK_UUID1);
         assertNotNull(existingBrick);
         assertEquals(FixturesTool.NETWORK_ENGINE, 
existingBrick.getNetworkId());
+
+        List<GlusterBrickEntity> bricks =
+                
dao.getAllByClusterAndNetworkId(FixturesTool.GLUSTER_CLUSTER_ID, 
FixturesTool.NETWORK_ENGINE);
+        assertNotNull(bricks);
+    }
+
+    @Test
+    public void testGetAllByClusterAndNetworkId() {
+        dao.updateBrickNetworkId(FixturesTool.GLUSTER_BRICK_UUID1, 
FixturesTool.NETWORK_ENGINE);
+        List<GlusterBrickEntity> bricks =
+                
dao.getAllByClusterAndNetworkId(FixturesTool.GLUSTER_CLUSTER_ID, 
FixturesTool.NETWORK_ENGINE);
+        assertNotNull(bricks);
+        assertEquals(1, bricks.size());
+        assertEquals(FixturesTool.GLUSTER_BRICK_UUID1, bricks.get(0).getId());
     }
 }
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index b2b7a58..59b0e43 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -769,6 +769,15 @@
     @DefaultStringValue("$entities virtual machines")
     String VAR__ENTITIES__VMS();
 
+    @DefaultStringValue("$entities virtual machine")
+    String VAR__ENTITIES__VM();
+
+    @DefaultStringValue("$entities gluster bricks")
+    String VAR__ENTITIES__GLUSTER_BRICKS();
+
+    @DefaultStringValue("$entities gluster brick")
+    String VAR__ENTITIES__GLUSTER_BRICK();
+
     @DefaultStringValue("$type Quota")
     String VAR__TYPE__QUOTA();
 
@@ -1735,6 +1744,9 @@
     @DefaultStringValue("The Management Network ('${NetworkName}') is 
mandatory and cannot be removed.")
     String NETWORK_CANNOT_REMOVE_MANAGEMENT_NETWORK();
 
+    @DefaultStringValue("Cannot ${action} ${type}. Unsetting gluster network 
property is not allowed when it is used by gluster bricks on volumes. The 
gluster volumes will need to be removed to change this.")
+    String ACTION_TYPE_FAILED_GLUSTER_NETWORK_INUSE();
+
     @DefaultStringValue("The Network ('${NetworkName}') could not be removed 
since several iSCSI bonds (${IscsiBonds_COUNTER}) are using this network:\n 
${IscsiBonds}.\nPlease remove the network first from those iSCSI bonds, and try 
again.")
     String NETWORK_CANNOT_REMOVE_ISCSI_BOND_NETWORK();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index fdf6fc8..b4071be 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -282,6 +282,9 @@
 VAR__TYPE__PROVIDER_CERTIFICATE=$type provider certificate
 VAR__TYPE__VM=$type VM
 VAR__ENTITIES__VMS=$entities virtual machines
+VAR__ENTITIES__VM=$entities virtual machine
+VAR__ENTITIES__GLUSTER_BRICKS=$entities gluster bricks
+VAR__ENTITIES__GLUSTER_BRICK=$entities gluster brick
 VAR__TYPE__QUOTA=$type Quota
 VAR__TYPE__COMPUTER_ACCOUNT=$type Computer Account
 VAR__TYPE__VM_TEMPLATE=$type Template
diff --git a/packaging/dbscripts/create_views.sql 
b/packaging/dbscripts/create_views.sql
index 00be84d..28e1605 100644
--- a/packaging/dbscripts/create_views.sql
+++ b/packaging/dbscripts/create_views.sql
@@ -1742,7 +1742,8 @@
 SELECT gluster_volume_bricks.*,
        vds_static.host_name AS vds_name,
        gluster_volumes.vol_name AS volume_name,
-       vds_interface.addr as interface_address
+       vds_interface.addr as interface_address,
+       gluster_volumes.cluster_id as cluster_id
 FROM gluster_volume_bricks
 INNER JOIN vds_static ON vds_static.vds_id = gluster_volume_bricks.server_id
 INNER JOIN gluster_volumes ON gluster_volumes.id = 
gluster_volume_bricks.volume_id
diff --git a/packaging/dbscripts/gluster_volumes_sp.sql 
b/packaging/dbscripts/gluster_volumes_sp.sql
index d3ca9a5..e52e1fc 100644
--- a/packaging/dbscripts/gluster_volumes_sp.sql
+++ b/packaging/dbscripts/gluster_volumes_sp.sql
@@ -624,3 +624,16 @@
 WHERE id = v_volume_id;
 END; $procedure$
 LANGUAGE plpgsql;
+
+
+Create or replace FUNCTION GetBricksByClusterIdAndNetworkId(v_cluster_id UUID,
+                                                            v_network_id UUID)
+RETURNS SETOF gluster_volume_bricks_view STABLE
+   AS $procedure$
+BEGIN
+   RETURN QUERY SELECT *
+   FROM  gluster_volume_bricks_view
+   WHERE network_id = v_network_id
+   AND cluster_id = v_cluster_id;
+END; $procedure$
+LANGUAGE plpgsql;


-- 
To view, visit https://gerrit.ovirt.org/40146
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I57398b39783dbdc5ae9f79e7d32794f416c23116
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5-gluster
Gerrit-Owner: Sahina Bose <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to