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
