Martin Peřina has uploaded a new change for review. Change subject: core: Adds custom properties to VmNetworkInterface ......................................................................
core: Adds custom properties to VmNetworkInterface Patch contains: - Adds custom properties to VmNetworkInterface - Adds custom properties validation to commands creating/updating VmNetworkInterface Change-Id: I218db49043ddf0524178f6ff903e605bc0fe661a Signed-off-by: Martin Perina <mper...@redhat.com> --- M backend/manager/dbscripts/create_views.sql M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterface.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugNicVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java 11 files changed, 91 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/15/14815/1 diff --git a/backend/manager/dbscripts/create_views.sql b/backend/manager/dbscripts/create_views.sql index 122d15a..d9f3b3a 100644 --- a/backend/manager/dbscripts/create_views.sql +++ b/backend/manager/dbscripts/create_views.sql @@ -825,7 +825,8 @@ SELECT vm_interface_statistics.rx_rate, vm_interface_statistics.tx_rate, vm_interface_statistics.rx_drop, vm_interface_statistics.tx_drop, vm_interface_statistics.iface_status, vm_interface.type, vm_interface.speed, vm_interface.mac_addr, vm_interface.network_name, vm_interface.name, vm_static.vm_guid, vm_interface.vmt_guid, - vm_static.vm_name, vm_interface.id, 0 AS boot_protocol, 0 AS is_vds, vm_device.is_plugged, vm_interface.port_mirroring, vm_interface.linked, + vm_static.vm_name, vm_interface.id, 0 AS boot_protocol, 0 AS is_vds, vm_device.is_plugged, + vm_device.custom_properties, vm_interface.port_mirroring, vm_interface.linked, vm_static.vds_group_id AS vds_group_id, vm_static.entity_type AS vm_entity_type FROM vm_interface_statistics JOIN vm_interface ON vm_interface_statistics.id = vm_interface.id @@ -836,8 +837,8 @@ vm_interface_statistics.tx_drop, vm_interface_statistics.iface_status, vm_interface.type, vm_interface.speed, vm_interface.mac_addr, vm_interface.network_name, vm_interface.name, NULL::uuid as vm_guid, vm_interface.vmt_guid, vm_templates.vm_name AS vm_name, vm_interface.id, 0 AS boot_protocol, 0 AS is_vds, - vm_device.is_plugged as is_plugged, vm_interface.port_mirroring, vm_interface.linked, - vm_templates.vds_group_id AS vds_group_id, vm_templates.entity_type AS vm_entity_type + vm_device.is_plugged as is_plugged, vm_device.custom_properties as custom_properties, vm_interface.port_mirroring, + vm_interface.linked, vm_templates.vds_group_id AS vds_group_id, vm_templates.entity_type AS vm_entity_type FROM vm_interface_statistics RIGHT JOIN vm_interface ON vm_interface_statistics.id = vm_interface.id JOIN vm_static AS vm_templates ON vm_interface.vmt_guid = vm_templates.vm_guid diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java index 24c3294..1e8d75f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java @@ -5,6 +5,7 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.VmCommand; +import org.ovirt.engine.core.bll.VmHandler; import org.ovirt.engine.core.bll.VmTemplateHandler; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.utils.VmDeviceUtils; @@ -14,6 +15,7 @@ import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.DiskImageBase; +import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmDeviceId; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; @@ -22,6 +24,8 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.VdcBllMessages; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils.ValidationError; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; @@ -42,7 +46,8 @@ getVmNetworkInterfaceDao().save(getParameters().getInterface()); VmDeviceUtils.addNetworkInterfaceDevice( new VmDeviceId(getParameters().getInterface().getId(), getParameters().getVmTemplateId()), - getParameters().getInterface().isPlugged()); + getParameters().getInterface().isPlugged(), + getParameters().getInterface().getCustomProperties()); setSucceeded(true); } @@ -87,6 +92,16 @@ } } + // validate custom properties + List<ValidationError> errors = + CustomPropertiesUtils.getInstance().validateDeviceProperties(clusterCompatibilityVersion, + VmDeviceGeneralType.INTERFACE, + getParameters().getInterface().getCustomProperties()); + if (!errors.isEmpty()) { + VmHandler.handleCustomPropertiesError(errors, getReturnValue().getCanDoActionMessages()); + return false; + } + return true; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java index f735d3c..0070c33 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/UpdateVmTemplateInterfaceCommand.java @@ -3,17 +3,21 @@ import java.util.List; import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.bll.VmHandler; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.validator.VmNicValidator; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters; import org.ovirt.engine.core.common.businessentities.ActionGroup; +import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.validation.group.UpdateEntity; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.VdcBllMessages; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils.ValidationError; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; @@ -63,6 +67,16 @@ return false; } + // validate custom properties + List<ValidationError> errors = + CustomPropertiesUtils.getInstance().validateDeviceProperties(clusterCompatibilityVersion, + VmDeviceGeneralType.INTERFACE, + getParameters().getInterface().getCustomProperties()); + if (!errors.isEmpty()) { + VmHandler.handleCustomPropertiesError(errors, getReturnValue().getCanDoActionMessages()); + return false; + } + return true; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java index 522e8ac..81e25f3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java @@ -5,6 +5,7 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; +import org.ovirt.engine.core.bll.VmHandler; import org.ovirt.engine.core.bll.network.MacPoolManager; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.utils.VmDeviceUtils; @@ -15,6 +16,7 @@ import org.ovirt.engine.core.common.action.PlugAction; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmDeviceId; import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.network.Network; @@ -24,6 +26,8 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.VdcBllMessages; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils.ValidationError; import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; @@ -81,7 +85,8 @@ private void addInterfaceDeviceToDb() { VmDevice vmDevice = VmDeviceUtils.addNetworkInterfaceDevice( new VmDeviceId(getInterface().getId(), getParameters().getVmId()), - getInterface().isPlugged()); + getInterface().isPlugged(), + getInterface().getCustomProperties()); getCompensationContext().snapshotNewEntity(vmDevice); } @@ -168,6 +173,16 @@ return false; } + // validate custom properties + List<ValidationError> errors = + CustomPropertiesUtils.getInstance().validateDeviceProperties(compatibilityVersion, + VmDeviceGeneralType.INTERFACE, + getParameters().getInterface().getCustomProperties()); + if (!errors.isEmpty()) { + VmHandler.handleCustomPropertiesError(errors, getReturnValue().getCanDoActionMessages()); + return false; + } + return true; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java index f71bb5e..db2fc62 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java @@ -5,6 +5,7 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.bll.ValidationResult; +import org.ovirt.engine.core.bll.VmHandler; import org.ovirt.engine.core.bll.network.MacPoolManager; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.validator.VmNicValidator; @@ -16,6 +17,7 @@ import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmDeviceId; import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.network.Network; @@ -27,6 +29,8 @@ import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.VdcBllMessages; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils; +import org.ovirt.engine.core.utils.customprop.CustomPropertiesUtils.ValidationError; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; import org.ovirt.engine.core.utils.transaction.TransactionMethod; @@ -195,6 +199,17 @@ return false; } + // validate custom properties + Version compatibilityVersion = getVm().getVdsGroupCompatibilityVersion(); + List<ValidationError> errors = + CustomPropertiesUtils.getInstance().validateDeviceProperties(compatibilityVersion, + VmDeviceGeneralType.INTERFACE, + getParameters().getInterface().getCustomProperties()); + if (!errors.isEmpty()) { + VmHandler.handleCustomPropertiesError(errors, getReturnValue().getCanDoActionMessages()); + return false; + } + return true; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java index 03a20d0..466754b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java @@ -318,16 +318,18 @@ * The NIC id (must correspond with the ID of the NIC in the VM). * @param plugged * Is the NIC plugged to the VM or not. + * @param customProp + * device custom properties * @return The device that was added. */ - public static VmDevice addNetworkInterfaceDevice(VmDeviceId id, boolean plugged) { + public static VmDevice addNetworkInterfaceDevice(VmDeviceId id, boolean plugged, String customProp) { return addManagedDevice(id, VmDeviceGeneralType.INTERFACE, VmDeviceType.BRIDGE, Collections.<String, Object> emptyMap(), plugged, false, - null); + customProp); } /** @@ -652,7 +654,7 @@ true, false, getAddress(entity, id), - null); + iface.getCustomProperties()); VmDevice exportedDevice = entity.getManagedDeviceMap().get(deviceId); if (exportedDevice == null) { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterface.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterface.java index 7dc4c58..671fb08 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterface.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterface.java @@ -28,6 +28,11 @@ private boolean plugged = true; /** + * Device custom properties + */ + private String customProperties; + + /** * Link State of the Nic. <BR> * <code>true</code> if UP and <code>false</code> if DOWN. */ @@ -109,6 +114,14 @@ this.plugged = plugged; } + public String getCustomProperties() { + return customProperties; + } + + public void setCustomProperties(String customProperties) { + this.customProperties = customProperties; + } + public boolean isLinked() { return linked; } @@ -155,6 +168,8 @@ .append(getMacAddress()) .append(", active=") .append(isPlugged()) + .append(", customProperties=") + .append(getCustomProperties()) .append(", linked=") .append(isLinked()) .append(", portMirroring=") diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java index d81a7fc..68750e8 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java @@ -39,6 +39,7 @@ entity.setId(Guid.createGuidFromString(rs.getString("id"))); entity.setSpeed((Integer) rs.getObject("speed")); entity.setPlugged(rs.getBoolean("is_plugged")); + entity.setCustomProperties(rs.getString("custom_properties")); entity.setPortMirroring(rs.getBoolean("port_mirroring")); entity.setLinked(rs.getBoolean("linked")); return entity; diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java index 36cb1f7..ddd8402 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoTest.java @@ -58,6 +58,7 @@ newVmDevice.setIsManaged(true); newVmDevice.setIsPlugged(true); newVmDevice.setIsReadOnly(false); + newVmDevice.setCustomProperties("prop1=val1"); } /** diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugNicVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugNicVDSCommand.java index 9378640..e1f54f6 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugNicVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugNicVDSCommand.java @@ -60,6 +60,8 @@ ? Collections.<String> emptyList() : Collections.singletonList(nic.getNetworkName())); } + map.put(VdsProperties.Custom, vmDevice.getCustomProperties()); + VmInfoBuilder.addNetworkFiltersToNic(map, getParameters().getVm().getVdsGroupCompatibilityVersion()); return map; } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java index 22787d0..9419570 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java @@ -32,6 +32,8 @@ nic.isPortMirroring() && nic.getNetworkName() != null ? Collections.singletonList(nic.getNetworkName()) : Collections.<String> emptyList()); + deviceStruct.put(VdsProperties.Custom, getParameters().getVmDevice().getCustomProperties()); + return deviceStruct; } -- To view, visit http://gerrit.ovirt.org/14815 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I218db49043ddf0524178f6ff903e605bc0fe661a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Peřina <mper...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches