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