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

Reply via email to