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 <[email protected]>
---
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, 75 insertions(+), 48 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/39/21639/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 1f9f619..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().hashCode());
-        
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..dc83c98 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,31 @@
         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().hashCode());
+        
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 abstract void buildVmVideoCards();
 
     protected abstract void buildVmCD();
@@ -262,4 +292,19 @@
 
     protected abstract void buildVmVirtioScsi();
 
+    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;
+        }
+    };
 }
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/21639
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1f01229169e74bdd96ad989e89f7f0beaebf5a4b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.3
Gerrit-Owner: Moti Asayag <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to