Mike Kolesnik has uploaded a new change for review.

Change subject: engine: Added checks for external networks
......................................................................

engine: Added checks for external networks

1. A check that makes sure the imported network is new in the data
center, otherwise it makes no sense to import it twice since it's the
same underlying network.

2. A check that makes sure that only name or description can be changed
on an external network, since the other details don't reflect what the
properties of the network on the external provider.

3. A check that makes sure external networks are added as VM networks.
This is because we don't know what is an external non-VM network and how
to support it, so currently we block it.

Change-Id: I0a02f3caffa5b2d1d36e908f79db0c788fff5a8f
Signed-off-by: Mike Kolesnik <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/AddNetworkValidatorTest.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkValidatorTest.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
9 files changed, 310 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/13568/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
index 17ec6b9..0c74ddc 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/AddNetworkCommand.java
@@ -3,15 +3,19 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.bll.network.cluster.NetworkHelper;
+import org.ovirt.engine.core.bll.provider.ProviderValidator;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.validator.NetworkValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters;
+import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 
 @SuppressWarnings("serial")
 public class AddNetworkCommand<T extends AddNetworkStoragePoolParameters> 
extends NetworkCommon<T> {
@@ -36,14 +40,23 @@
 
     @Override
     protected boolean canDoAction() {
-        NetworkValidator validator = new NetworkValidator(getNetwork());
+        AddNetworkValidator validator = new AddNetworkValidator(getNetwork());
         return validate(validator.dataCenterExists())
                 && validate(validator.vmNetworkSetCorrectly())
                 && validate(validator.stpForVmNetworkOnly())
                 && validate(validator.mtuValid())
                 && validate(validator.networkPrefixValid())
                 && validate(validator.networkNameNotUsed())
-                && validate(validator.vlanIdNotUsed());
+                && validate(validator.vlanIdNotUsed())
+                && (getNetwork().getProvidedBy() == null || 
externalNetworkValid(validator));
+    }
+
+    private boolean externalNetworkValid(AddNetworkValidator validator) {
+        ProviderValidator providerValidator =
+                new 
ProviderValidator(getDbFacade().getProviderDao().get(getNetwork().getProvidedBy().getProviderId()));
+        return validate(providerValidator.providerIsSet())
+                && validate(validator.externalNetworkNewInDataCenter())
+                && validate(validator.externalNetworkIsVmNetwork());
     }
 
     @Override
@@ -63,4 +76,39 @@
                 : getStoragePoolId().getValue(),
                 VdcObjectType.StoragePool, getActionType().getActionGroup()));
     }
+
+    protected static class AddNetworkValidator extends NetworkValidator {
+
+        public AddNetworkValidator(Network network) {
+            super(network);
+        }
+
+        @Override
+        protected DbFacade getDbFacade() {
+            return super.getDbFacade();
+        }
+
+        /**
+         * @return An error iff the network represents an external network 
that already exists in the data center that
+         *         the network should be on.
+         */
+        public ValidationResult externalNetworkNewInDataCenter() {
+            for (Network otherNetwork : getNetworks()) {
+                if 
(network.getProvidedBy().equals(otherNetwork.getProvidedBy())) {
+                    return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS);
+                }
+            }
+
+            return ValidationResult.VALID;
+        }
+
+        /**
+         * @return An error iff the network represents an external network is 
not a VM network, since we don't know how
+         *         to handle non-VM external networks.
+         */
+        public ValidationResult externalNetworkIsVmNetwork() {
+            return network.isVmNetwork() ? ValidationResult.VALID
+                    : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_EXTERNAL_NETWORK_MUST_BE_VM_NETWORK);
+        }
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
index b9a9479..3b42ab3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.ovirt.engine.core.bll.RenamedEntityInfoProvider;
 import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.bll.network.cluster.NetworkClusterHelper;
@@ -55,7 +56,9 @@
                 && 
validate(validatorOld.notChangingManagementNetwork(getNetwork()))
                 && validate(validatorNew.networkNameNotUsed())
                 && validate(validatorOld.networkNotUsedByVms())
-                && validate(validatorOld.networkNotUsedByTemplates());
+                && validate(validatorOld.networkNotUsedByTemplates())
+                && ((getOldNetwork().getProvidedBy() == null && 
getNetwork().getProvidedBy() == null)
+                || 
validate(validatorOld.externalNetworkDetailsUnchanged(getNetwork())));
     }
 
     @Override
@@ -76,7 +79,7 @@
         return oldNetwork;
     }
 
-    private class UpdateNetworkValidator extends NetworkValidator {
+    protected static class UpdateNetworkValidator extends NetworkValidator {
 
         public UpdateNetworkValidator(Network network) {
             super(network);
@@ -90,6 +93,16 @@
                     : ValidationResult.VALID;
         }
 
+        public ValidationResult externalNetworkDetailsUnchanged(Network 
newNetwork) {
+            return ObjectUtils.equals(network.getVlanId(), 
newNetwork.getVlanId())
+                    && network.getMtu() == newNetwork.getMtu()
+                    && network.getStp() == newNetwork.getStp()
+                    && network.isVmNetwork() == newNetwork.isVmNetwork()
+                    && ObjectUtils.equals(network.getProvidedBy(), 
newNetwork.getProvidedBy())
+                    ? ValidationResult.VALID
+                    : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED);
+        }
+
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/AddNetworkValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/AddNetworkValidatorTest.java
new file mode 100644
index 0000000..65c55dd
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/AddNetworkValidatorTest.java
@@ -0,0 +1,100 @@
+package org.ovirt.engine.core.bll.network.dc;
+
+import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import static 
org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith;
+import static 
org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import 
org.ovirt.engine.core.bll.network.dc.AddNetworkCommand.AddNetworkValidator;
+import org.ovirt.engine.core.common.businessentities.network.Network;
+import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.VdcBllMessages;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.network.NetworkDao;
+
+@RunWith(MockitoJUnitRunner.class)
+public class AddNetworkValidatorTest {
+
+    @Mock
+    private Network network;
+
+    @Mock
+    private DbFacade dbFacade;
+
+    @Mock
+    private NetworkDao networkDao;
+
+    private List<Network> networks = new ArrayList<Network>();
+
+    private AddNetworkValidator validator;
+
+    @Before
+    public void setup() {
+        validator = spy(new AddNetworkValidator(network));
+
+        // spy on attempts to access the database
+        doReturn(dbFacade).when(validator).getDbFacade();
+
+        // mock some commonly used DAOs
+        when(dbFacade.getNetworkDao()).thenReturn(networkDao);
+
+        // mock their getters
+        
when(networkDao.getAllForDataCenter(any(Guid.class))).thenReturn(networks);
+    }
+
+    private void externalNetworkNewInDataCenterTestSetup(boolean 
equalToNetwork) {
+        Network externalNetwork = mock(Network.class);
+        ProviderNetwork providerNetwork = mock(ProviderNetwork.class);
+        when(network.getProvidedBy()).thenReturn(providerNetwork);
+
+        if (equalToNetwork) {
+            when(externalNetwork.getProvidedBy()).thenReturn(providerNetwork);
+        }
+
+        networks.add(externalNetwork);
+    }
+
+    @Test
+    public void externalNetworkIsNewInDataCenterNoNetworks() throws Exception {
+        assertThat(validator.externalNetworkNewInDataCenter(), isValid());
+    }
+
+    @Test
+    public void externalNetworkIsNewInDataCenter() throws Exception {
+        externalNetworkNewInDataCenterTestSetup(false);
+        assertThat(validator.externalNetworkNewInDataCenter(), isValid());
+    }
+
+    @Test
+    public void externalNetworkIsNotNewInDataCenter() throws Exception {
+        externalNetworkNewInDataCenterTestSetup(true);
+        assertThat(validator.externalNetworkNewInDataCenter(),
+                
failsWith(VdcBllMessages.ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS));
+    }
+
+    @Test
+    public void externalNetworkIsAVmNetwork() throws Exception {
+        when(network.isVmNetwork()).thenReturn(true);
+        assertThat(validator.externalNetworkIsVmNetwork(), isValid());
+    }
+
+    @Test
+    public void externalNetworkIsNotAVmNetwork() throws Exception {
+        when(network.isVmNetwork()).thenReturn(false);
+        assertThat(validator.externalNetworkIsVmNetwork(),
+                
failsWith(VdcBllMessages.ACTION_TYPE_FAILED_EXTERNAL_NETWORK_MUST_BE_VM_NETWORK));
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkValidatorTest.java
new file mode 100644
index 0000000..3aa38d3
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkValidatorTest.java
@@ -0,0 +1,124 @@
+package org.ovirt.engine.core.bll.network.dc;
+
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import static 
org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith;
+import static 
org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import 
org.ovirt.engine.core.bll.network.dc.UpdateNetworkCommand.UpdateNetworkValidator;
+import org.ovirt.engine.core.common.businessentities.network.Network;
+import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork;
+import org.ovirt.engine.core.dal.VdcBllMessages;
+
+@RunWith(MockitoJUnitRunner.class)
+public class UpdateNetworkValidatorTest {
+
+    @Mock
+    private Network network;
+
+    private UpdateNetworkValidator validator;
+
+    @Before
+    public void setup() {
+        validator = spy(new UpdateNetworkValidator(network));
+    }
+
+    private Network mockExternalNetwork() {
+        Network externalNetwork = mock(Network.class);
+        ProviderNetwork providerNetwork = mock(ProviderNetwork.class);
+        when(network.getProvidedBy()).thenReturn(providerNetwork);
+        when(externalNetwork.getProvidedBy()).thenReturn(providerNetwork);
+
+        return externalNetwork;
+    }
+
+    @Test
+    public void externalNetworkNameChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+
+        when(externalNetwork.getName()).thenReturn("aaa");
+        when(network.getName()).thenReturn("bbb");
+
+        assertThat(validator.externalNetworkDetailsUnchanged(externalNetwork), 
isValid());
+    }
+
+    @Test
+    public void externalNetworkDescriptionChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+
+        when(externalNetwork.getDescription()).thenReturn("aaa");
+        when(network.getDescription()).thenReturn("bbb");
+
+        assertThat(validator.externalNetworkDetailsUnchanged(externalNetwork), 
isValid());
+    }
+
+    private void assertThatExternalNetworkDetailsUnchangedFails(Network 
externalNetwork) {
+        assertThat(validator.externalNetworkDetailsUnchanged(externalNetwork),
+                
failsWith((VdcBllMessages.ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED)));
+    }
+
+    @Test
+    public void externalNetworkMtuChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+
+        when(externalNetwork.getMtu()).thenReturn(0);
+        when(network.getMtu()).thenReturn(1);
+
+        assertThatExternalNetworkDetailsUnchangedFails(externalNetwork);
+    }
+
+    @Test
+    public void externalNetworkStpChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+
+        boolean stp = true;
+        when(externalNetwork.getStp()).thenReturn(stp);
+        when(network.getStp()).thenReturn(!stp);
+
+        assertThatExternalNetworkDetailsUnchangedFails(externalNetwork);
+    }
+
+    @Test
+    public void externalNetworkVlanIdChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+
+        when(externalNetwork.getVlanId()).thenReturn(0);
+        when(network.getVlanId()).thenReturn(1);
+
+        assertThatExternalNetworkDetailsUnchangedFails(externalNetwork);
+    }
+
+    @Test
+    public void externalNetworkVmNetworkChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+
+        boolean vmNetwork = true;
+        when(externalNetwork.isVmNetwork()).thenReturn(vmNetwork);
+        when(network.isVmNetwork()).thenReturn(!vmNetwork);
+
+        assertThatExternalNetworkDetailsUnchangedFails(externalNetwork);
+    }
+
+    @Test
+    public void externalNetworkProvidedByChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+        
when(externalNetwork.getProvidedBy()).thenReturn(mock(ProviderNetwork.class));
+
+        assertThatExternalNetworkDetailsUnchangedFails(externalNetwork);
+    }
+
+    @Test
+    public void internalNetworkProvidedByChanged() throws Exception {
+        Network externalNetwork = mockExternalNetwork();
+        when(network.getProvidedBy()).thenReturn(null);
+
+        assertThatExternalNetworkDetailsUnchangedFails(externalNetwork);
+    }
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
index f7413b8..e88b5f0 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
@@ -437,6 +437,9 @@
     NETWORK_MTU_OVERRIDE_NOT_SUPPORTED,
     ACTION_TYPE_FAILED_MIGRATION_NETWORK_IS_NOT_SUPPORTED,
     ACTION_TYPE_FAILED_PROVIDER_DOESNT_EXIST,
+    ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS,
+    ACTION_TYPE_FAILED_EXTERNAL_NETWORK_MUST_BE_VM_NETWORK,
+    ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED,
     ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_REQUIRED,
     ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_ADDRESS_CANNOT_BE_CHANGED,
     ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_IN_STORAGE_POOL,
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 4695b77..cf87410 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -461,6 +461,9 @@
 NETWORK_MTU_OVERRIDE_NOT_SUPPORTED=Cannot ${action} ${type}. Overriding MTU is 
not supported for this Data Center's compatibility version.
 ACTION_TYPE_FAILED_MIGRATION_NETWORK_IS_NOT_SUPPORTED=Cannot ${action} 
${type}. Migration network is not supported for this cluster version.
 ACTION_TYPE_FAILED_PROVIDER_DOESNT_EXIST=Cannot ${action} ${type}. The 
provider doesn't exist in the system.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS=Cannot ${action} ${type}. 
The external network already exists as '${NetworkName}' in the data center.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_MUST_BE_VM_NETWORK=Cannot ${action} 
${type}. An external network cannot be a non-VM network.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED=Cannot ${action} 
${type}. External network details (except name and description) cannot be 
changed.
 ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_REQUIRED=Cannot ${action} ${type}. The 
management network '${NetworkName}' must be required, please change the network 
to be required and try again.
 ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_ADDRESS_CANNOT_BE_CHANGED=Cannot 
${action} ${type}. The management network address cannot be modified without 
reinstalling the host, since this address was used to create the host's 
certification.
 CANNOT_PREIEW_CURRENT_IMAGE=The currently used VM Snapshot Image cannot be 
used in Preview command.
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 6456cc0..10663af 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
@@ -1240,6 +1240,15 @@
     @DefaultStringValue("Cannot ${action} ${type}. The provider doesn't exist 
in the system.")
     String ACTION_TYPE_FAILED_PROVIDER_DOESNT_EXIST();
 
+    @DefaultStringValue("Cannot ${action} ${type}. The external network 
already exists as '${NetworkName}' in the data center.")
+    String ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS();
+
+    @DefaultStringValue("Cannot ${action} ${type}. An external network cannot 
be a non-VM network.")
+    String ACTION_TYPE_FAILED_EXTERNAL_NETWORK_MUST_BE_VM_NETWORK();
+
+    @DefaultStringValue("Cannot ${action} ${type}. External network details 
(except name and description) cannot be changed.")
+    String ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED();
+
     @DefaultStringValue("Cannot ${action} ${type}. The management network 
'${NetworkName}' must be required, please change the network to be required and 
try again.")
     String ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_REQUIRED();
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 082582f..fba5ffa 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -458,6 +458,9 @@
 NETWORK_MTU_OVERRIDE_NOT_SUPPORTED=Cannot ${action} ${type}. Overriding MTU is 
not supported for this Data Center's compatibility version.
 ACTION_TYPE_FAILED_MIGRATION_NETWORK_IS_NOT_SUPPORTED=Cannot ${action} 
${type}. Migration network is not supported for this cluster version.
 ACTION_TYPE_FAILED_PROVIDER_DOESNT_EXIST=Cannot ${action} ${type}. The 
provider doesn't exist in the system.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS=Cannot ${action} ${type}. 
The external network already exists as '${NetworkName}' in the data center.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_MUST_BE_VM_NETWORK=Cannot ${action} 
${type}. An external network cannot be a non-VM network.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED=Cannot ${action} 
${type}. External network details (except name and description) cannot be 
changed.
 ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_REQUIRED=Cannot ${action} ${type}. The 
management network '${NetworkName}' must be required, please change the network 
to be required and try again.
 ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_ADDRESS_CANNOT_BE_CHANGED=Cannot 
${action} ${type}. The management network address cannot be modified without 
reinstalling the host, since this address was used to create the host's 
certification.
 CANNOT_PREIEW_CURRENT_IMAGE=The currently used VM Snapshot Image cannot be 
used in Preview command.
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 869deb4..22865c7 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
@@ -455,6 +455,9 @@
 NETWORK_MTU_OVERRIDE_NOT_SUPPORTED=Cannot ${action} ${type}. Overriding MTU is 
not supported for this Data Center's compatibility version.
 ACTION_TYPE_FAILED_MIGRATION_NETWORK_IS_NOT_SUPPORTED=Cannot ${action} 
${type}. Migration network is not supported for this cluster version.
 ACTION_TYPE_FAILED_PROVIDER_DOESNT_EXIST=Cannot ${action} ${type}. The 
provider doesn't exist in the system.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_ALREADY_EXISTS=Cannot ${action} ${type}. 
The external network already exists as '${NetworkName}' in the data center.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_MUST_BE_VM_NETWORK=Cannot ${action} 
${type}. An external network cannot be a non-VM network.
+ACTION_TYPE_FAILED_EXTERNAL_NETWORK_DETAILS_CANNOT_BE_EDITED=Cannot ${action} 
${type}. External network details (except name and description) cannot be 
changed.
 ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_REQUIRED=Cannot ${action} ${type}. The 
management network '${NetworkName}' must be required, please change the network 
to be required and try again.
 ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_ADDRESS_CANNOT_BE_CHANGED=Cannot 
${action} ${type}. The management network address cannot be modified without 
reinstalling the host, since this address was used to create the host's 
certification.
 CANNOT_PREIEW_CURRENT_IMAGE=The currently used VM Snapshot Image cannot be 
used in Preview command.


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

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

Reply via email to