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

Reply via email to