Alona Kaplan has uploaded a new change for review. Change subject: webadmin: block operation with unsync network (#848373) ......................................................................
webadmin: block operation with unsync network (#848373) https://bugzilla.redhat.com/848373 - Block operation with unsync network- same as unmanaged network. - If sync network is detached- The network will get the dc values and will be condsidered as synced (when detaching the network will automatically be added to the sync list sent to the backend.) Change-Id: I0225ec2240ceab7777373812c2742e261ca8534a Signed-off-by: Alona Kaplan <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/DcNetworkParams.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java 7 files changed, 148 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/7580/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java index f2fe997..f518712 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java @@ -227,9 +227,9 @@ getDescription().setIsChangable((Boolean) value); getIsVmNetwork().setIsChangable(isSupportBridgesReportByVDSM() && (Boolean) value); getHasVLanTag().setIsChangable((Boolean) value); - getVLanTag().setIsChangable((Boolean) value); + getVLanTag().setIsChangable((Boolean)getHasVLanTag().getEntity() && (Boolean) value); getHasMtu().setIsChangable((Boolean) value); - getMtu().setIsChangable((Boolean) value); + getMtu().setIsChangable((Boolean)getHasMtu().getEntity() && (Boolean) value); } }); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/DcNetworkParams.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/DcNetworkParams.java new file mode 100644 index 0000000..2492278 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/DcNetworkParams.java @@ -0,0 +1,40 @@ +package org.ovirt.engine.ui.uicommonweb.models.hosts; + +import org.ovirt.engine.core.common.businessentities.Network; + +public class DcNetworkParams { + + private Integer vlanId; + private int mtu; + private boolean vmNetwork; + + public DcNetworkParams() { + } + + public DcNetworkParams(Network network) { + vlanId = network.getvlan_id(); + mtu = network.getMtu(); + vmNetwork = network.isVmNetwork(); + } + + public Integer getVlanId() { + return vlanId; + } + public void setVlanId(Integer vlanId) { + this.vlanId = vlanId; + } + public int getMtu() { + return mtu; + } + public void setMtu(int mtu) { + this.mtu = mtu; + } + public boolean isVmNetwork() { + return vmNetwork; + } + public void setVmNetwork(boolean vmNetwork) { + this.vmNetwork = vmNetwork; + } + + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java index 7dd980c..71e0428 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java @@ -114,6 +114,7 @@ private NetworkOperationFactory operationFactory; private List<Network> allNetworks; + private final Map<String, DcNetworkParams> netTodcParams; private final HostInterfaceListModel hostInterfaceListModel; private List<VdsNetworkInterface> allBonds; private NetworkOperation currentCandidate; @@ -123,6 +124,7 @@ public HostSetupNetworksModel(HostInterfaceListModel hostInterfaceListModel) { this.hostInterfaceListModel = hostInterfaceListModel; networkToLastDetachParams = new HashMap<String, NetworkParameters>(); + netTodcParams = new HashMap<String, DcNetworkParams>(); setNicsChangedEvent(new Event(NICS_CHANGED_EVENT_DEFINITION)); setNetworksChangedEvent(new Event(NETWORKS_CHANGED_EVENT_DEFINITION)); setOperationCandidateEvent(new Event(OPERATION_CANDIDATE_EVENT_DEFINITION)); @@ -510,6 +512,7 @@ private void initNetworkModels() { Map<String, LogicalNetworkModel> networkModels = new HashMap<String, LogicalNetworkModel>(); for (Network network : allNetworks) { + netTodcParams.put(network.getname(), new DcNetworkParams(network)); networkModels.put(network.getname(), new LogicalNetworkModel(network, this)); } setNetworks(networkModels); @@ -746,5 +749,8 @@ return networksToSync; } + public DcNetworkParams getNetDcParams(String networkName) { + return netTodcParams.get(networkName); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java index 55f9486..373ca97 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java @@ -7,6 +7,7 @@ import org.ovirt.engine.core.common.businessentities.NetworkStatus; import org.ovirt.engine.core.common.businessentities.VdsNetworkInterface; import org.ovirt.engine.core.common.businessentities.VdsNetworkInterface.NetworkImplementationDetails; +import org.ovirt.engine.ui.uicommonweb.models.hosts.DcNetworkParams; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceListModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostSetupNetworksModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.NetworkParameters; @@ -88,6 +89,11 @@ } public void detach() { + if (!isInSync()){ + getSetupModel().getNetworksToSync().add(getName()); + setNetworkToDcValues(); + } + assert attachedToNic != null; NetworkInterfaceModel attachingNic = attachedToNic; // this needs to be null before the NIC items are changed, because they trigger an event @@ -126,6 +132,15 @@ if (nicEntity.getIsManagement()) { nicEntity.setType(0); } + + } + + private void setNetworkToDcValues() { + DcNetworkParams dcNetParams = getSetupModel().getNetDcParams(getName()); + getEntity().setvlan_id(dcNetParams.getVlanId()); + getEntity().setMtu(dcNetParams.getMtu()); + getEntity().setVmNetwork(dcNetParams.isVmNetwork()); + } public NetworkInterfaceModel getAttachedToNic() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java index f028ac7..20cca1b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperation.java @@ -306,6 +306,57 @@ return true; } + }, + NULL_OPERATION_UNSYNC { + + @Override + public String getVerb(NetworkItemModel<?> op1) { + return ConstantsManager.getInstance().getConstants().invalidOperationWithUnsyncNetwork(); + } + @Override + public String getMessage(NetworkItemModel<?> op1, NetworkItemModel<?> op2) { + return getVerb(op1); + } + + @Override + public boolean isNullOperation() { + return true; + } + + }, + NULL_OPERATION_ADD_TO_BOND_UNSYNC { + + @Override + public String getVerb(NetworkItemModel<?> op1) { + return ConstantsManager.getInstance().getConstants().cannotAddNicWithUnsyncNetworkToBond(); + } + @Override + public String getMessage(NetworkItemModel<?> op1, NetworkItemModel<?> op2) { + return getVerb(op1); + } + + @Override + public boolean isNullOperation() { + return true; + } + + }, + NULL_OPERATION_BOND_WITH_UNSYNC { + + @Override + public String getVerb(NetworkItemModel<?> op1) { + return ConstantsManager.getInstance().getConstants().cannotCreateBondIfNicsContainsUnsyncNetwork(); + } + @Override + public String getMessage(NetworkItemModel<?> op1, NetworkItemModel<?> op2) { + return getVerb(op1); + } + + @Override + public boolean isNullOperation() { + return true; + } + }; private static void clearNetworks(NetworkInterfaceModel nic, List<VdsNetworkInterface> allNics) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java index e372a5b..1833cb5 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java @@ -67,6 +67,11 @@ return NetworkOperation.NULL_OPERATION_ADD_TO_BOND_UNMANAGED; } + boolean containsUnsync = containsUnsync(nic1); + if (containsUnsync){ + return NetworkOperation.NULL_OPERATION_ADD_TO_BOND_UNSYNC; + } + if (canBond(nic1, bond)) { return NetworkOperation.ADD_TO_BOND; } else { @@ -82,6 +87,11 @@ boolean containsUnmanaged = containsUnmanaged(nic1) || containsUnmanaged(nic2); if (containsUnmanaged){ return NetworkOperation.NULL_OPERATION_BOND_WITH_UNMANAGED; + } + + boolean containsUnsync = containsUnsync(nic1) || containsUnsync(nic2); + if (containsUnsync){ + return NetworkOperation.NULL_OPERATION_BOND_WITH_UNSYNC; } if (canBond(nic1, nic2)) { @@ -108,6 +118,11 @@ // not managed if (!network.isManaged()) { return NetworkOperation.NULL_OPERATION_UNMANAGED; + } + + // not in sync + if (!network.isInSync()) { + return NetworkOperation.NULL_OPERATION_UNSYNC; } List<LogicalNetworkModel> nicNetworks = nic.getItems(); @@ -155,6 +170,16 @@ return false; } + private static boolean containsUnsync(NetworkInterfaceModel nic) { + // Check if contains unsync networks + for (LogicalNetworkModel network : nic.getItems()) { + if (!network.isInSync()) { + return true; + } + } + return false; + } + private final List<LogicalNetworkModel> allNetworks; private final List<NetworkInterfaceModel> nics; diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java index 15cc3cc..6e81f44 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java @@ -1487,6 +1487,15 @@ @DefaultStringValue("Cannot create a bond if one of the nics contains unmanaged network/s") String cannotCreateBondIfNicsContainsUnmanagedNetwork(); + @DefaultStringValue("Cannot add nic with unsync network/s to a bond") + String cannotAddNicWithUnsyncNetworkToBond(); + + @DefaultStringValue("Invalid operation with unsync network: unsync network can only be detached") + String invalidOperationWithUnsyncNetwork(); + + @DefaultStringValue("Cannot create a bond if one of the nics contains unsync network/s") + String cannotCreateBondIfNicsContainsUnsyncNetwork(); + @DefaultStringValue("Unassigned Logical Networks panel") String unassignedLogicalNetworksPanel(); -- To view, visit http://gerrit.ovirt.org/7580 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0225ec2240ceab7777373812c2742e261ca8534a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
