Sahina Bose has uploaded a new change for review. Change subject: engine: Add gluster role to network cluster ......................................................................
engine: Add gluster role to network cluster Added a role to specify a network to be used for gluster data traffic Change-Id: Idac78d2c57f4d09aeb368b135f45dcf3237415e7 Bug-Url: https://bugzilla.redhat.com/1049994 Signed-off-by: Sahina Bose <sab...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsGroupCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkParametersBuilder.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/AttachNetworkToVdsGroupCommand.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/action/AttachNetworkToVdsGroupParameter.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkCluster.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoTest.java M packaging/dbscripts/network_sp.sql A packaging/dbscripts/upgrade/03_05_1360_add_gluster_to_network_cluster.sql 13 files changed, 109 insertions(+), 16 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/39709/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsGroupCommand.java index 327a71c..134eac1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsGroupCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsGroupCommand.java @@ -64,7 +64,7 @@ if (net != null) { DbFacade.getInstance().getNetworkClusterDao().save( new NetworkCluster(getParameters().getVdsGroup().getId(), net.getId(), - NetworkStatus.OPERATIONAL, true, true, true)); + NetworkStatus.OPERATIONAL, true, true, true, false)); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java index 8313f41..910e7df 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java @@ -127,7 +127,8 @@ NetworkStatus.OPERATIONAL, true, true, - true)); + true, + false)); } alertIfFencingDisabled(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkParametersBuilder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkParametersBuilder.java index 8e1b0d8..6f2c885 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkParametersBuilder.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkParametersBuilder.java @@ -161,7 +161,7 @@ } protected void addBootProtocolForRoleNetwork(NetworkCluster networkCluster, VdsNetworkInterface nic) { - if ((networkCluster.isDisplay() || networkCluster.isMigration()) + if ((networkCluster.isDisplay() || networkCluster.isMigration() || networkCluster.isGluster()) && (nic.getBootProtocol() == null || nic.getBootProtocol() == NetworkBootProtocol.NONE)) { nic.setBootProtocol(NetworkBootProtocol.DHCP); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/AttachNetworkToVdsGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/AttachNetworkToVdsGroupCommand.java index 308f985..12523c8 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/AttachNetworkToVdsGroupCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/AttachNetworkToVdsGroupCommand.java @@ -223,6 +223,7 @@ NetworkStatus.OPERATIONAL, false, networkCluster.isRequired(), + false, false)); if (network.getCluster().isDisplay()) { 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 24ba3d9..4be1b6c 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 @@ -93,6 +93,11 @@ getNetworkCluster().isMigration() ? getNetwork().getId() : getManagementNetwork().getId()); } + if (getNetworkCluster().isGluster() != getOldNetworkCluster().isGluster()) { + getNetworkClusterDAO().setNetworkExclusivelyAsGluster(getVdsGroupId(), + getNetworkCluster().isGluster() ? getNetwork().getId() : null); + } + NetworkClusterHelper.setStatus(getVdsGroupId(), getNetwork()); setSucceeded(true); } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AttachNetworkToVdsGroupParameter.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AttachNetworkToVdsGroupParameter.java index 57b8dce..88a63b4 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AttachNetworkToVdsGroupParameter.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AttachNetworkToVdsGroupParameter.java @@ -21,7 +21,8 @@ // Cluster attachment data can sometimes be missing, so use defaults in that case. net.getCluster() == null ? false : net.getCluster().isDisplay(), net.getCluster() == null ? true : net.getCluster().isRequired(), - net.getCluster() == null ? false : net.getCluster().isMigration())); + net.getCluster() == null ? false : net.getCluster().isMigration(), + net.getCluster() == null ? false : net.getCluster().isGluster())); _network = net; } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkCluster.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkCluster.java index da42b82..893998e 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkCluster.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkCluster.java @@ -17,9 +17,10 @@ */ private boolean required; private boolean migration; + private boolean gluster; public NetworkCluster() { - this (null, null, NetworkStatus.NON_OPERATIONAL, false, true, false); + this(null, null, NetworkStatus.NON_OPERATIONAL, false, true, false, false); } public NetworkCluster(boolean required) { @@ -31,7 +32,8 @@ NetworkStatus status, boolean display, boolean required, - boolean migration) { + boolean migration, + boolean gluster) { this(required); id = new NetworkClusterId(); id.setClusterId(clusterId); @@ -39,6 +41,7 @@ this.status = status; this.display = display; this.migration = migration; + this.gluster = gluster; } @Override @@ -101,6 +104,14 @@ this.migration = migration; } + public boolean isGluster() { + return gluster; + } + + public void setGluster(boolean gluster) { + this.gluster = gluster; + } + @Override public Object getQueryableId() { return getId(); @@ -119,6 +130,8 @@ .append(isRequired()) .append(", migration=") .append(isMigration()) + .append(", gluster=") + .append(isGluster()) .append("}"); return builder.toString(); } @@ -132,6 +145,7 @@ result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + (required ? 11 : 13); result = prime * result + (migration ? 1231 : 1237); + result = prime * result + (gluster ? 1231 : 1237); return result; } @@ -162,6 +176,10 @@ if (migration != other.migration) { return false; } + if (gluster != other.gluster) { + return false; + } return true; } + } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDao.java index 9dd9c4b..9738722 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDao.java @@ -91,4 +91,12 @@ * @param networkId */ void setNetworkExclusivelyAsMigration(Guid clusterId, Guid networkId); + + /** + * Sets this cluster network as the only gluster storage network on the cluster. + * + * @param clusterId + * @param networkId + */ + void setNetworkExclusivelyAsGluster(Guid clusterId, Guid networkId); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoDbFacadeImpl.java index d69221f..854bba6 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoDbFacadeImpl.java @@ -26,6 +26,7 @@ entity.setDisplay(rs.getBoolean("is_display")); entity.setRequired(rs.getBoolean("required")); entity.setMigration(rs.getBoolean("migration")); + entity.setGluster(rs.getBoolean("is_gluster")); return entity; } }; @@ -72,7 +73,8 @@ .addValue("status", cluster.getStatus()) .addValue("is_display", cluster.isDisplay()) .addValue("required", cluster.isRequired()) - .addValue("migration", cluster.isMigration()); + .addValue("migration", cluster.isMigration()) + .addValue("is_gluster", cluster.isGluster()); getCallsHandler().executeModification("Insertnetwork_cluster", parameterSource); } @@ -85,7 +87,8 @@ .addValue("status", cluster.getStatus()) .addValue("is_display", cluster.isDisplay()) .addValue("required", cluster.isRequired()) - .addValue("migration", cluster.isMigration()); + .addValue("migration", cluster.isMigration()) + .addValue("is_gluster", cluster.isGluster()); getCallsHandler().executeModification("Updatenetwork_cluster", parameterSource); } @@ -124,4 +127,14 @@ getCallsHandler().executeModification("set_network_exclusively_as_migration", parameterSource); } + + @Override + public void setNetworkExclusivelyAsGluster(Guid clusterId, Guid networkId) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() + .addValue("cluster_id", clusterId).addValue("network_id", networkId); + + getCallsHandler().executeModification("set_network_exclusively_as_gluster", parameterSource); + + } + } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java index 9717b53..dea961c 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java @@ -181,6 +181,7 @@ entity.getCluster().setRequired(rs.getBoolean("required")); entity.getCluster().setStatus(NetworkStatus.forValue(rs.getInt("status"))); entity.getCluster().setMigration(rs.getBoolean("migration")); + entity.getCluster().setGluster(rs.getBoolean("is_gluster")); return entity; } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoTest.java index 329afc3..1dcd4ad 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoTest.java @@ -221,4 +221,27 @@ } } } + + @Test + public void testSetGluster() { + dao.setNetworkExclusivelyAsGluster(existingNetworkCluster.getClusterId(), + existingNetworkCluster.getNetworkId()); + List<NetworkCluster> allForCluster = dao.getAllForCluster(existingNetworkCluster.getClusterId()); + for (NetworkCluster net : allForCluster) { + if (net.getId().equals(existingNetworkCluster.getId())) { + assertTrue(net.isGluster()); + } else { + assertFalse(net.isGluster()); + } + } + } + + @Test + public void testSetGlusterAsNull() { + dao.setNetworkExclusivelyAsGluster(existingNetworkCluster.getClusterId(), null); + List<NetworkCluster> allForCluster = dao.getAllForCluster(existingNetworkCluster.getClusterId()); + for (NetworkCluster net : allForCluster) { + assertFalse(net.isGluster()); + } + } } diff --git a/packaging/dbscripts/network_sp.sql b/packaging/dbscripts/network_sp.sql index 9f9f5d7..f601c26 100644 --- a/packaging/dbscripts/network_sp.sql +++ b/packaging/dbscripts/network_sp.sql @@ -196,7 +196,8 @@ mtu INTEGER, vm_network BOOLEAN, label TEXT, provider_network_provider_id UUID, provider_network_external_id TEXT, qos_id UUID, network_id UUID,cluster_id UUID, status INTEGER, is_display BOOLEAN, - required BOOLEAN, migration BOOLEAN); + required BOOLEAN, migration BOOLEAN, is_gluster BOOLEAN); + Create or replace FUNCTION GetAllNetworkByClusterId(v_id UUID, v_user_id uuid, v_is_filtered boolean) RETURNS SETOF networkViewClusterType STABLE AS $procedure$ @@ -225,7 +226,8 @@ network_cluster.status, network_cluster.is_display, network_cluster.required, - network_cluster.migration + network_cluster.migration, + network_cluster.is_gluster FROM network INNER JOIN network_cluster ON network.id = network_cluster.network_id @@ -916,12 +918,13 @@ v_status INTEGER, v_is_display BOOLEAN, v_required BOOLEAN, - v_migration BOOLEAN) + v_migration BOOLEAN, + v_is_gluster BOOLEAN) RETURNS VOID AS $procedure$ BEGIN -INSERT INTO network_cluster(cluster_id, network_id, status, is_display, required, migration) - VALUES(v_cluster_id, v_network_id, v_status, v_is_display, v_required, v_migration); +INSERT INTO network_cluster(cluster_id, network_id, status, is_display, required, migration, is_gluster) + VALUES(v_cluster_id, v_network_id, v_status, v_is_display, v_required, v_migration, v_is_gluster); END; $procedure$ LANGUAGE plpgsql; @@ -933,13 +936,19 @@ v_status INTEGER, v_is_display BOOLEAN, v_required BOOLEAN, - v_migration BOOLEAN) + v_migration BOOLEAN, + v_is_gluster BOOLEAN) RETURNS VOID AS $procedure$ BEGIN UPDATE network_cluster - SET status = v_status,is_display = v_is_display, required = v_required, migration = v_migration - WHERE cluster_id = v_cluster_id AND network_id = v_network_id; + SET status = v_status, + is_display = v_is_display, + required = v_required, + migration = v_migration, + is_gluster = v_is_gluster + WHERE cluster_id = v_cluster_id + AND network_id = v_network_id; END; $procedure$ LANGUAGE plpgsql; @@ -1086,6 +1095,18 @@ END; $procedure$ LANGUAGE plpgsql; +Create or replace FUNCTION set_network_exclusively_as_gluster(v_cluster_id UUID, v_network_id UUID) +RETURNS VOID + AS $procedure$ +BEGIN + + UPDATE network_cluster + SET is_gluster = COALESCE(network_id = v_network_id, false) + WHERE cluster_id = v_cluster_id; + +END; $procedure$ +LANGUAGE plpgsql; + ---------------------------------------------------------------------- -- Vnic Profile diff --git a/packaging/dbscripts/upgrade/03_05_1360_add_gluster_to_network_cluster.sql b/packaging/dbscripts/upgrade/03_05_1360_add_gluster_to_network_cluster.sql new file mode 100644 index 0000000..0daaafd --- /dev/null +++ b/packaging/dbscripts/upgrade/03_05_1360_add_gluster_to_network_cluster.sql @@ -0,0 +1 @@ +select fn_db_add_column('network_cluster', 'is_gluster', 'boolean NOT NULL DEFAULT false'); -- To view, visit https://gerrit.ovirt.org/39709 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idac78d2c57f4d09aeb368b135f45dcf3237415e7 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5-gluster Gerrit-Owner: Sahina Bose <sab...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches