Lior Vernia has uploaded a new change for review.

Change subject: engine: Consider custom properties in Setup Networks
......................................................................

engine: Consider custom properties in Setup Networks

Added code to validate network custom properties as part of the Setup
Networks command, to mark networks as modified if their custom
properties have changed, and to serialize them for VDSM.

Persistence of the custom properties of a network is performed right
before sending the VDSM command; the alternative is to persist the
data when collecting network data after the VDSM command has finished
running, but at the moment VDSM doesn't report custom properties.

Change-Id: Ic607fb6073f2c4c0a4790763d9a09dc7879f11ca
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/Version.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/customprop/CustomPropertiesUtils.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
11 files changed, 110 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/26646/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
index d644bed..b020eb7 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
@@ -7,6 +7,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 import org.apache.commons.collections.CollectionUtils;
@@ -22,10 +23,13 @@
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import 
org.ovirt.engine.core.common.businessentities.network.NetworkBootProtocol;
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
+import org.ovirt.engine.core.common.config.Config;
+import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.network.NetworkQoSDao;
 import org.ovirt.engine.core.utils.NetworkUtils;
+import org.ovirt.engine.core.utils.customprop.SimpleCustomPropertiesUtil;
 
 public class SetupNetworksHelper {
     protected static final String VIOLATING_ENTITIES_LIST_FORMAT = "${0}_LIST 
{1}";
@@ -53,11 +57,15 @@
     private Map<String, List<NetworkType>> ifacesWithExclusiveNetwork = new 
HashMap<String, List<NetworkType>>();
 
     private final boolean hostNetworkQosSupported;
+    private final boolean networkCustomPropertiesSupported;
 
     public SetupNetworksHelper(SetupNetworksParameters parameters, VDS vds) {
         params = parameters;
         this.vds = vds;
+
         hostNetworkQosSupported = 
FeatureSupported.hostNetworkQos(vds.getVdsGroupCompatibilityVersion());
+        networkCustomPropertiesSupported =
+                
FeatureSupported.networkCustomProperties(vds.getVdsGroupCompatibilityVersion());
     }
 
     /**
@@ -101,6 +109,7 @@
         validateMTU();
         validateNetworkQos();
         validateNotRemovingLabeledNetworks();
+        validateCustomProperties();
 
         return translateViolations();
     }
@@ -137,9 +146,11 @@
                 Set<String> existingLabels =
                         NetworkUtils.isLabeled(existingNic) ? 
existingNic.getLabels() : Collections.<String> emptySet();
                 if (!CollectionUtils.isEqualCollection(newLabels, 
existingLabels)
-                        || nic.isQosOverridden() != 
existingNic.isQosOverridden()) {
+                        || nic.isQosOverridden() != 
existingNic.isQosOverridden()
+                        || !Objects.equals(nic.getCustomProperties(), 
existingNic.getCustomProperties())) {
                     existingNic.setLabels(newLabels);
                     existingNic.setQosOverridden(nic.isQosOverridden());
+                    existingNic.setCustomProperties(nic.getCustomProperties());
                     modifiedInterfaces.add(existingNic);
                 }
             }
@@ -212,6 +223,26 @@
                 }
                 if (qosValidator.peakConsistentWithAverage() != 
ValidationResult.VALID) {
                     
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE,
 iface.getNetworkName());
+                }
+            }
+        }
+    }
+
+    private void validateCustomProperties() {
+        String version = vds.getVdsGroupCompatibilityVersion().getValue();
+        SimpleCustomPropertiesUtil util = 
SimpleCustomPropertiesUtil.getInstance();
+        Map<String, String> validProperties =
+                util.convertProperties(Config.<String> 
getValue(ConfigValues.PreDefinedNetworkCustomProperties, version));
+        validProperties.putAll(util.convertProperties(Config.<String> 
getValue(ConfigValues.UserDefinedNetworkCustomProperties,
+                version)));
+        for (VdsNetworkInterface iface : params.getInterfaces()) {
+            if (iface.getCustomProperties() != null) {
+                if (!networkCustomPropertiesSupported) {
+                    
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED,
+                            iface.getNetworkName());
+                } else if (!util.validateProperties(validProperties, 
iface.getCustomProperties()).isEmpty()) {
+                    
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT,
+                            iface.getNetworkName());
                 }
             }
         }
@@ -504,7 +535,8 @@
         return !ObjectUtils.equals(iface.getNetworkName(), 
existingIface.getNetworkName())
                 || iface.getBootProtocol() != existingIface.getBootProtocol()
                 || staticBootProtoPropertiesChanged(iface, existingIface)
-                || !ObjectUtils.equals(iface.getQos(), existingIface.getQos());
+                || !ObjectUtils.equals(iface.getQos(), existingIface.getQos())
+                || !ObjectUtils.equals(iface.getCustomProperties(), 
existingIface.getCustomProperties());
     }
 
     /**
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
index b9ca651..1ded9af 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
@@ -13,8 +13,10 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
@@ -56,7 +58,19 @@
             mockConfig(ConfigValues.MultipleGatewaysSupported, 
Version.v3_2.toString(), false),
             mockConfig(ConfigValues.HostNetworkQosSupported, 
Version.v3_2.toString(), false),
             mockConfig(ConfigValues.HostNetworkQosSupported, 
Version.v3_3.toString(), false),
-            mockConfig(ConfigValues.HostNetworkQosSupported, 
Version.v3_4.toString(), true));
+            mockConfig(ConfigValues.HostNetworkQosSupported, 
Version.v3_4.toString(), true),
+            mockConfig(ConfigValues.HostNetworkQosSupported, 
Version.v3_5.toString(), true),
+            mockConfig(ConfigValues.NetworkCustomPropertiesSupported, 
Version.v3_3.toString(), false),
+            mockConfig(ConfigValues.NetworkCustomPropertiesSupported, 
Version.v3_4.toString(), false),
+            mockConfig(ConfigValues.NetworkCustomPropertiesSupported, 
Version.v3_5.toString(), true),
+            mockConfig(ConfigValues.PreDefinedNetworkCustomProperties, 
Version.v3_2.toString(), ""),
+            mockConfig(ConfigValues.PreDefinedNetworkCustomProperties, 
Version.v3_3.toString(), ""),
+            mockConfig(ConfigValues.PreDefinedNetworkCustomProperties, 
Version.v3_4.toString(), ""),
+            mockConfig(ConfigValues.PreDefinedNetworkCustomProperties, 
Version.v3_5.toString(), ""),
+            mockConfig(ConfigValues.UserDefinedNetworkCustomProperties, 
Version.v3_2.toString(), ""),
+            mockConfig(ConfigValues.UserDefinedNetworkCustomProperties, 
Version.v3_3.toString(), ""),
+            mockConfig(ConfigValues.UserDefinedNetworkCustomProperties, 
Version.v3_4.toString(), ""),
+            mockConfig(ConfigValues.UserDefinedNetworkCustomProperties, 
Version.v3_5.toString(), "foo=^[a-zA-Z0-9]*$"));
 
     @Mock
     private NetworkDao networkDAO;
@@ -387,6 +401,39 @@
         SetupNetworksHelper helper = 
createHelper(createParametersForNics(iface), Version.v3_4);
 
         validateAndAssertNetworkModified(helper, network);
+    }
+
+    @Test
+    public void customPropertiesNotSupported() {
+        Network network = createNetwork(MANAGEMENT_NETWORK_NAME);
+        mockExistingNetworks(network);
+        VdsNetworkInterface iface = createNicSyncedWithNetwork("eth0", 
network);
+        mockExistingIfaces(iface);
+        iface.setCustomProperties(createCustomProperties());
+
+        SetupNetworksHelper helper = 
createHelper(createParametersForNics(iface));
+
+        validateAndExpectViolation(helper,
+                
VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED,
+                MANAGEMENT_NETWORK_NAME);
+    }
+
+    @Test
+    public void customPropertiesModified() {
+        Network network = createNetwork(MANAGEMENT_NETWORK_NAME);
+        mockExistingNetworks(network);
+        VdsNetworkInterface iface = createNicSyncedWithNetwork("eth0", 
network);
+        mockExistingIfaces(iface);
+        iface.setCustomProperties(createCustomProperties());
+
+        SetupNetworksHelper helper = 
createHelper(createParametersForNics(iface), Version.v3_5);
+
+        validateAndExpectNoViolations(helper);
+        assertNoBondsModified(helper);
+        assertNetworkModified(helper, network);
+        assertNoNetworksRemoved(helper);
+        assertNoBondsRemoved(helper);
+        assertInterfaceModified(helper, iface);
     }
 
     /* --- Tests for external networks --- */
@@ -1773,6 +1820,12 @@
         return qos;
     }
 
+    private Map<String, String> createCustomProperties() {
+        Map<String, String> customProperties = new HashMap<String, String>();
+        customProperties.put("foo", "bar");
+        return customProperties;
+    }
+
     private void mockExistingNetworks(Network... networks) {
         
when(networkDAO.getAllForCluster(any(Guid.class))).thenReturn(Arrays.asList(networks));
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index 9ef0f6c..dd64c99 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -706,6 +706,8 @@
     
ACTION_TYPE_FAILED_INVALID_CUSTOM_PROPERTIES_DUPLICATE_KEYS(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_CUSTOM_PROPERTIES_NOT_SUPPORTED_IN_VERSION(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_INVALID_DEVICE_TYPE_FOR_CUSTOM_PROPERTIES(ErrorType.BAD_PARAMETERS),
+    
ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
+    
ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT(ErrorType.BAD_PARAMETERS),
 
     NETWORK_ILEGAL_NETWORK_NAME(ErrorType.BAD_PARAMETERS),
     NETWORK_ATTACH_ILLEGAL_GATEWAY(ErrorType.BAD_PARAMETERS),
diff --git 
a/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/Version.java
 
b/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/Version.java
index 8a918ea..e97b429 100644
--- 
a/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/Version.java
+++ 
b/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/Version.java
@@ -21,6 +21,7 @@
     public static final Version v3_2 = new Version(3, 2);
     public static final Version v3_3 = new Version(3, 3);
     public static final Version v3_4 = new Version(3, 4);
+    public static final Version v3_5 = new Version(3, 5);
     public static final List<Version> ALL = Arrays.asList(v2_2, v3_0, v3_1, 
v3_2, v3_3, v3_4);
 
 
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 176433d..c83a593 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -209,6 +209,8 @@
 ACTION_TYPE_FAILED_INVALID_CUSTOM_PROPERTIES_INVALID_KEYS=Cannot ${action} 
${type} if some of the specified custom properties are not configured by the 
system. The keys are: ${MissingKeys}
 ACTION_TYPE_FAILED_INVALID_CUSTOM_PROPERTIES_INVALID_VALUES=Cannot ${action} 
${type} if some of the specified custom properties have illegal values. The 
keys are: ${WrongValueKeys}
 ACTION_TYPE_FAILED_CUSTOM_PROPERTIES_NOT_SUPPORTED_IN_VERSION=Cannot ${action} 
${type}. Custom properties are not supported in version: 
${NotSupportedInVersion}
+ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED=Cannot ${action} 
$type}. Network custom properties are not supported in the cluster's 
compatibility version, but they were supplied for the following network(s): 
${ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED_LIST}.
+ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT=Cannot ${action} 
$type}. Some network custom properties contained errors (bad syntax, 
non-existing keys or invalid values), please take a closer look at the 
following network(s): 
${ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT_LIST}.
 ACTION_TYPE_FAILED_INVALID_DEVICE_TYPE_FOR_CUSTOM_PROPERTIES=Cannot ${action} 
${type}. Custom properties are not supported for device type: 
${InvalidDeviceType}
 ACTION_TYPE_FAILED_VDS_VM_CLUSTER=Cannot ${action} ${type}. There are no 
available running Hosts in the Host Cluster.
 ACTION_TYPE_FAILED_VDS_VM_MEMORY=Cannot ${action} ${type}. There are no 
available running Hosts with sufficient memory in VM's Cluster .
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/customprop/CustomPropertiesUtils.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/customprop/CustomPropertiesUtils.java
index 87ba284..cd4a9ae 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/customprop/CustomPropertiesUtils.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/customprop/CustomPropertiesUtils.java
@@ -66,7 +66,7 @@
      * Regex describing properties definition. They can be in the from of 
"key=value" or "key1=value1;... key-n=value_n"
      * (last {@code ;} character can be omitted)
      */
-    protected static final String VALIDATION_STR = KEY_VALUE_REGEX_STR + "(;" 
+ KEY_VALUE_REGEX_STR + ")*;?";
+    protected static final String VALIDATION_STR = "(" + KEY_VALUE_REGEX_STR + 
"(;" + KEY_VALUE_REGEX_STR + ")*;?)?";
 
     /**
      * Pattern to validation properties definition
@@ -141,7 +141,7 @@
     /**
      * Converts properties specification from {@code String} to {@code 
Map<String, Pattern}
      */
-    protected void parsePropertiesRegex(String properties, Map<String, 
Pattern> keysToRegex) {
+    public void parsePropertiesRegex(String properties, Map<String, Pattern> 
keysToRegex) {
         if (StringUtils.isEmpty(properties)) {
             return;
         }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
index 6209427..48076c14 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
@@ -191,6 +191,7 @@
                 vdsIface.setId(dbIface.getId());
                 vdsIface.setLabels(dbIface.getLabels());
                 vdsIface.setQosOverridden(dbIface.isQosOverridden());
+                vdsIface.setCustomProperties(dbIface.getCustomProperties());
                 dbIfacesToBatch.add(vdsIface);
                 updatedIfaces.add(vdsIface.getName());
             } else {
@@ -224,6 +225,7 @@
                 VdsNetworkInterface nic = 
nicsByName.get(nicForUpdate.getName());
                 nicForUpdate.setLabels(nic.getLabels());
                 nicForUpdate.setQosOverridden(nic.isQosOverridden());
+                nicForUpdate.setCustomProperties(nic.getCustomProperties());
             }
         }
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
index 7b3fbdb..3d0492f 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
@@ -79,6 +79,10 @@
                 opts.put(DEFAULT_ROUTE, Boolean.TRUE);
             }
 
+            if (iface.getCustomProperties() != null) {
+                opts.put(VdsProperties.NETWORK_CUSTOM_PROPERTIES, 
iface.getCustomProperties());
+            }
+
             networks.put(network.getName(), opts);
         }
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index 26d8cf2..65c1124 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -113,6 +113,7 @@
     public static final String BRIDGE = "bridge";
     public static final String NW_FILTER = "filter";
     public static final String MAC_ADDR = "macAddr";
+    public static final String NETWORK_CUSTOM_PROPERTIES = "custom";
 
     public static final String supported_cluster_levels = "clusterLevels";
     public static final String supported_engines = "supportedENGINEs";
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index b5c1784..b220f5c 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -565,6 +565,12 @@
     @DefaultStringValue("Cannot ${action} ${type}. Custom properties are not 
supported in version: ${NotSupportedInVersion}")
     String ACTION_TYPE_FAILED_CUSTOM_PROPERTIES_NOT_SUPPORTED_IN_VERSION();
 
+    @DefaultStringValue("Cannot ${action} $type}. Network custom properties 
are not supported in the cluster's compatibility version, but they were 
supplied for the following network(s): 
${ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED_LIST}.")
+    String ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED();
+
+    @DefaultStringValue("Cannot ${action} $type}. Some network custom 
properties contained errors (bad syntax, non-existing keys or invalid values), 
please take a closer look at the following network(s): 
${ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT_LIST}.")
+    String ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT();
+
     @DefaultStringValue("Cannot ${action} ${type}. Custom properties are not 
supported for device type: ${InvalidDeviceType}")
     String ACTION_TYPE_FAILED_INVALID_DEVICE_TYPE_FOR_CUSTOM_PROPERTIES();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index be68147..e29267b 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -208,6 +208,8 @@
 ACTION_TYPE_FAILED_INVALID_CUSTOM_PROPERTIES_INVALID_KEYS=Cannot ${action} 
${type} if some of the specified custom properties are not configured by the 
system. The keys are: ${MissingKeys}
 ACTION_TYPE_FAILED_INVALID_CUSTOM_PROPERTIES_INVALID_VALUES=Cannot ${action} 
${type} if some of the specified custom properties have illegal values. The 
keys are: ${WrongValueKeys}
 ACTION_TYPE_FAILED_CUSTOM_PROPERTIES_NOT_SUPPORTED_IN_VERSION=Cannot ${action} 
${type}. Custom properties are not supported in version: 
${NotSupportedInVersion}
+ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED=Cannot ${action} 
$type}. Network custom properties are not supported in the cluster's 
compatibility version, but they were supplied for the following network(s): 
${ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_NOT_SUPPORTED_LIST}.
+ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT=Cannot ${action} 
$type}. Some network custom properties contained errors (bad syntax, 
non-existing keys or invalid values), please take a closer look at the 
following network(s): 
${ACTION_TYPE_FAILED_NETWORK_CUSTOM_PROPERTIES_BAD_INPUT_LIST}.
 ACTION_TYPE_FAILED_INVALID_DEVICE_TYPE_FOR_CUSTOM_PROPERTIES=Cannot ${action} 
${type}. Custom properties are not supported for device type: 
${InvalidDeviceType}
 ACTION_TYPE_FAILED_VDS_VM_CLUSTER=Cannot ${action} ${type}. There are no 
available running Hosts in the Host Cluster.
 ACTION_TYPE_FAILED_VDS_VM_MEMORY=Cannot ${action} ${type}. There are no 
available running Hosts with sufficient memory in VM's Cluster .


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

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

Reply via email to