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 <[email protected]> --- 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/NetworkClusterHelper.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/test/java/org/ovirt/engine/core/dao/network/NetworkClusterDaoTest.java M packaging/dbscripts/network_sp.sql A packaging/dbscripts/upgrade/03_06_0830_add_gluster_to_network_cluster.sql 13 files changed, 115 insertions(+), 14 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/37471/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 e9e10f5..75ce347 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 @@ -57,7 +57,8 @@ NetworkStatus.OPERATIONAL, true, 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 b7919f0..276e40f 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 @@ -126,7 +126,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..b1881e3 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 @@ -27,7 +27,7 @@ public abstract class NetworkParametersBuilder { - private CommandContext commandContext; + private final CommandContext commandContext; public NetworkParametersBuilder(CommandContext commandContext) { this.commandContext = commandContext; @@ -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 0d2068a..f64e176 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 @@ -214,6 +214,10 @@ getNetworkClusterDao().setNetworkExclusivelyAsMigration(clusterId, network.getId()); } + if (network.getCluster().isGluster()) { + getNetworkClusterDao().setNetworkExclusivelyAsGluster(clusterId, network.getId()); + } + NetworkClusterHelper.setStatus(clusterId, network); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterHelper.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterHelper.java index 83a8d6a..a07819f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterHelper.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/NetworkClusterHelper.java @@ -64,6 +64,11 @@ updateManagementNetwork = true; } + if (oldNetworkCluster.isGluster()) { + getManagementNetworkCluster().setGluster(true); + updateManagementNetwork = true; + } + if (updateManagementNetwork) { getNetworkClusterDao().update(managementNetworkCluster); } 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 610c602..1730898 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 @@ -79,6 +79,11 @@ getNetworkCluster().isMigration() ? getPersistedNetwork().getId() : getManagementNetwork().getId()); } + if (getNetworkCluster().isGluster() != getOldNetworkCluster().isGluster()) { + getNetworkClusterDAO().setNetworkExclusivelyAsGluster(getVdsGroupId(), + getNetworkCluster().isGluster() ? getPersistedNetwork().getId() : getManagementNetwork().getId()); + } + NetworkClusterHelper.setStatus(getVdsGroupId(), getPersistedNetwork()); 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..fcadabc 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,6 +17,7 @@ */ private boolean required; private boolean migration; + private boolean gluster; public NetworkCluster() { this (null, null, NetworkStatus.NON_OPERATIONAL, false, true, false); @@ -32,6 +33,16 @@ boolean display, boolean required, boolean migration) { + this(clusterId, networkId, status, display, required, migration, false); + } + + public NetworkCluster(Guid clusterId, + Guid networkId, + NetworkStatus status, + boolean display, + boolean required, + boolean migration, + boolean gluster) { this(required); id = new NetworkClusterId(); id.setClusterId(clusterId); @@ -39,6 +50,7 @@ this.status = status; this.display = display; this.migration = migration; + this.gluster = gluster; } @Override @@ -119,6 +131,8 @@ .append(isRequired()) .append(", migration=") .append(isMigration()) + .append(", gluster=") + .append(isGluster()) .append("}"); return builder.toString(); } @@ -132,6 +146,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 +177,17 @@ if (migration != other.migration) { return false; } + if (gluster != other.gluster) { + return false; + } return true; } + + public boolean isGluster() { + return gluster; + } + + public void setGluster(boolean gluster) { + this.gluster = gluster; + } } 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..017fbb4 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("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("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("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/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..10b8ccf 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,18 @@ } } } + + @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()); + } + } + } } diff --git a/packaging/dbscripts/network_sp.sql b/packaging/dbscripts/network_sp.sql index c6ad01e..4e76a15 100644 --- a/packaging/dbscripts/network_sp.sql +++ b/packaging/dbscripts/network_sp.sql @@ -196,7 +196,7 @@ 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, 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 +225,8 @@ network_cluster.status, network_cluster.is_display, network_cluster.required, - network_cluster.migration + network_cluster.migration, + network_cluster.gluster FROM network INNER JOIN network_cluster ON network.id = network_cluster.network_id @@ -930,12 +931,13 @@ v_status INTEGER, v_is_display BOOLEAN, v_required BOOLEAN, - v_migration BOOLEAN) + v_migration BOOLEAN, + v_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, gluster) + VALUES(v_cluster_id, v_network_id, v_status, v_is_display, v_required, v_migration, v_gluster); END; $procedure$ LANGUAGE plpgsql; @@ -947,12 +949,14 @@ v_status INTEGER, v_is_display BOOLEAN, v_required BOOLEAN, - v_migration BOOLEAN) + v_migration BOOLEAN, + v_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 + SET status = v_status,is_display = v_is_display, required = v_required, migration = v_migration, + gluster = v_gluster WHERE cluster_id = v_cluster_id AND network_id = v_network_id; END; $procedure$ LANGUAGE plpgsql; @@ -1100,6 +1104,24 @@ 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 gluster = true + WHERE cluster_id = v_cluster_id AND network_id = v_network_id; + + IF FOUND THEN + UPDATE network_cluster + SET gluster = false + WHERE cluster_id = v_cluster_id AND network_id != v_network_id; + END IF; + +END; $procedure$ +LANGUAGE plpgsql; + ---------------------------------------------------------------------- -- Vnic Profile diff --git a/packaging/dbscripts/upgrade/03_06_0830_add_gluster_to_network_cluster.sql b/packaging/dbscripts/upgrade/03_06_0830_add_gluster_to_network_cluster.sql new file mode 100644 index 0000000..2f2220e --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_0830_add_gluster_to_network_cluster.sql @@ -0,0 +1 @@ +select fn_db_add_column('network_cluster', 'gluster', 'boolean NOT NULL DEFAULT false'); -- To view, visit http://gerrit.ovirt.org/37471 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idac78d2c57f4d09aeb368b135f45dcf3237415e7 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sahina Bose <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
