Moti Asayag has uploaded a new change for review.

Change subject: engine: Unsupported vnic profile features report for 3.0 
clusters
......................................................................

engine: Unsupported vnic profile features report for 3.0 clusters

For 3.0 clusters the engine uses the VmOldInfoBuilder to run the
VMs. It should consider the usage of unsupported features of the
vnic profiles for reporting a warning to the user.

Change-Id: I1f01229169e74bdd96ad989e89f7f0beaebf5a4b
Bug-Url: https://bugzilla.redhat.com/1024209
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java
3 files changed, 76 insertions(+), 48 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/88/21288/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
index 276e6a1..1163f51 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
@@ -10,7 +10,6 @@
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang.StringUtils;
-import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.FeatureSupported;
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType;
@@ -35,8 +34,6 @@
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
-import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
 import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcStringUtils;
 
 @SuppressWarnings({"rawtypes", "unchecked"})
@@ -576,30 +573,7 @@
             unsupportedFeatures.add(VNIC_PROFILE_PROPERTIES.CUSTOM_PROPERTIES);
         }
 
-        if (!unsupportedFeatures.isEmpty()) {
-            reportUnsupportedVnicProfileFeatures(vm, nic, vnicProfile, 
unsupportedFeatures);
-        }
-
-    }
-
-    private static void reportUnsupportedVnicProfileFeatures(VM vm,
-            VmNic nic,
-            VnicProfile vnicProfile,
-            List<VNIC_PROFILE_PROPERTIES> unsupportedFeatures) {
-        AuditLogableBase event = new AuditLogableBase();
-        event.setVmId(vm.getId());
-        event.setVdsGroupId(vm.getVdsGroupId());
-        event.setCustomId(nic.getId().toString());
-        
event.setCompatibilityVersion(vm.getVdsGroupCompatibilityVersion().toString());
-        event.addCustomValue("NicName", nic.getName());
-        event.addCustomValue("VnicProfile", vnicProfile == null ? null : 
vnicProfile.getName());
-        String[] unsupportedFeatureNames = new 
String[unsupportedFeatures.size()];
-        for (int i = 0; i < unsupportedFeatures.size(); i++) {
-            unsupportedFeatureNames[i] = 
unsupportedFeatures.get(i).getFeatureName();
-        }
-
-        event.addCustomValue("UnsupportedFeatures", 
StringUtils.join(unsupportedFeatureNames, ", "));
-        AuditLogDirector.log(event, 
AuditLogType.VNIC_PROFILE_UNSUPPORTED_FEATURES);
+        reportUnsupportedVnicProfileFeatures(vm, nic, vnicProfile, 
unsupportedFeatures);
     }
 
     private static boolean addPortMirroringToVmInterface(Map<String, Object> 
struct,
@@ -939,20 +913,4 @@
             addDevice(struct, vmDevice, null);
         }
     }
-
-    private static enum VNIC_PROFILE_PROPERTIES {
-        PORT_MIRRORING("Port Mirroring"),
-        CUSTOM_PROPERTIES("Custom Properties"),
-        NETWORK_QOS("Network QoS");
-
-        private String featureName;
-
-        private VNIC_PROFILE_PROPERTIES(String featureName) {
-            this.featureName = featureName;
-        }
-
-        public String getFeatureName() {
-            return featureName;
-        }
-    };
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
index b7c1fff..a171fea 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
@@ -11,18 +11,23 @@
 import java.util.TimeZone;
 
 import org.apache.commons.lang.StringUtils;
+import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.VM;
 import 
org.ovirt.engine.core.common.businessentities.comparators.DiskImageByDiskAliasComparator;
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
+import org.ovirt.engine.core.common.businessentities.network.VmNic;
+import org.ovirt.engine.core.common.businessentities.network.VnicProfile;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.osinfo.OsRepository;
 import org.ovirt.engine.core.common.utils.SimpleDependecyInjector;
 import org.ovirt.engine.core.compat.WindowsJavaTimezoneMapping;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
 import org.ovirt.engine.core.utils.customprop.VmPropertiesUtils;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
@@ -232,6 +237,47 @@
         log.error("Unsupported interface type, ISCSI interface type is not 
supported.");
     }
 
+    protected static void reportUnsupportedVnicProfileFeatures(VM vm,
+            VmNic nic,
+            VnicProfile vnicProfile,
+            List<VNIC_PROFILE_PROPERTIES> unsupportedFeatures) {
+
+        if (unsupportedFeatures.isEmpty()) {
+            return;
+        }
+
+        AuditLogableBase event = new AuditLogableBase();
+        event.setVmId(vm.getId());
+        event.setVdsGroupId(vm.getVdsGroupId());
+        event.setCustomId(nic.getId().toString());
+        
event.setCompatibilityVersion(vm.getVdsGroupCompatibilityVersion().toString());
+        event.addCustomValue("NicName", nic.getName());
+        event.addCustomValue("VnicProfile", vnicProfile == null ? null : 
vnicProfile.getName());
+        String[] unsupportedFeatureNames = new 
String[unsupportedFeatures.size()];
+        for (int i = 0; i < unsupportedFeatures.size(); i++) {
+            unsupportedFeatureNames[i] = 
unsupportedFeatures.get(i).getFeatureName();
+        }
+
+        event.addCustomValue("UnsupportedFeatures", 
StringUtils.join(unsupportedFeatureNames, ", "));
+        AuditLogDirector.log(event, 
AuditLogType.VNIC_PROFILE_UNSUPPORTED_FEATURES);
+    }
+
+    protected static enum VNIC_PROFILE_PROPERTIES {
+        PORT_MIRRORING("Port Mirroring"),
+        CUSTOM_PROPERTIES("Custom Properties"),
+        NETWORK_QOS("Network QoS");
+
+        private String featureName;
+
+        private VNIC_PROFILE_PROPERTIES(String featureName) {
+            this.featureName = featureName;
+        }
+
+        public String getFeatureName() {
+            return featureName;
+        }
+    };
+
     protected abstract void buildVmVideoCards();
 
     protected abstract void buildVmCD();
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java
index 391b5d9..6496258 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java
@@ -15,6 +15,8 @@
 import org.ovirt.engine.core.common.businessentities.VmDevice;
 import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType;
 import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType;
+import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
+import org.ovirt.engine.core.common.businessentities.network.VnicProfile;
 import org.ovirt.engine.core.common.utils.VmDeviceCommonUtils;
 import org.ovirt.engine.core.common.utils.VmDeviceType;
 import org.ovirt.engine.core.compat.Guid;
@@ -147,13 +149,13 @@
         StringBuilder nics = new StringBuilder();
         StringBuilder networks = new StringBuilder();
         for (int i = 0; i < vm.getInterfaces().size(); i++) {
-            macs.append(vm.getInterfaces().get(i).getMacAddress());
-            networks.append(vm.getInterfaces().get(i).getNetworkName());
+            VmNetworkInterface nic = vm.getInterfaces().get(i);
+            macs.append(nic.getMacAddress());
+            networks.append(nic.getNetworkName());
 
             VmInterfaceType ifaceType = VmInterfaceType.rtl8139;
-            if (vm.getInterfaces().get(i).getType() != null) {
-                ifaceType = VmInterfaceType.forValue(vm.getInterfaces().get(i)
-                        .getType());
+            if (nic.getType() != null) {
+                ifaceType = VmInterfaceType.forValue(nic.getType());
             }
 
             if (ifaceType == VmInterfaceType.rtl8139_pv) {
@@ -171,7 +173,29 @@
                 nics.append(",");
                 networks.append(",");
             }
+
+            if (nic.getVnicProfileId() != null) {
+                VnicProfile profile = 
DbFacade.getInstance().getVnicProfileDao().get(nic.getVnicProfileId());
+
+                if (profile != null) {
+                    List<VNIC_PROFILE_PROPERTIES> unsupportedFeatures = new 
ArrayList<>();
+                    if (profile.isPortMirroring()) {
+                        
unsupportedFeatures.add(VNIC_PROFILE_PROPERTIES.PORT_MIRRORING);
+                    }
+
+                    if (profile.getNetworkQosId() != null) {
+                        
unsupportedFeatures.add(VNIC_PROFILE_PROPERTIES.NETWORK_QOS);
+                    }
+
+                    if (profile.getCustomProperties() != null && 
!profile.getCustomProperties().isEmpty()) {
+                        
unsupportedFeatures.add(VNIC_PROFILE_PROPERTIES.CUSTOM_PROPERTIES);
+                    }
+
+                    reportUnsupportedVnicProfileFeatures(vm, nic, profile, 
unsupportedFeatures);
+                }
+            }
         }
+
         if (!StringUtils.isEmpty(macs.toString().trim())) {
             createInfo.put(VdsProperties.MAC_ADDR, macs.toString());
             createInfo.put(VdsProperties.NIC_TYPE, nics.toString());


-- 
To view, visit http://gerrit.ovirt.org/21288
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1f01229169e74bdd96ad989e89f7f0beaebf5a4b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to