Alona Kaplan has uploaded a new change for review. Change subject: engine: introducing AddVfsConfigNetworkCommand ......................................................................
engine: introducing AddVfsConfigNetworkCommand Change-Id: I1b1f7665b609b18dbe38242ca57ef24d3307c4b6 Signed-off-by: Alona Kaplan <alkap...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddVfsConfigNetworkCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VfsConfigNetworkParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/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/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties 9 files changed, 249 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/36650/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddVfsConfigNetworkCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddVfsConfigNetworkCommand.java new file mode 100644 index 0000000..e0fdee6 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddVfsConfigNetworkCommand.java @@ -0,0 +1,68 @@ +package org.ovirt.engine.core.bll.network.host; + +import java.util.Set; + +import org.ovirt.engine.core.bll.context.CommandContext; +import org.ovirt.engine.core.common.AuditLogType; +import org.ovirt.engine.core.common.action.VfsConfigNetworkParameters; +import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.compat.Guid; + +public class AddVfsConfigNetworkCommand extends VfsConfigCommandBase<VfsConfigNetworkParameters> { + + public AddVfsConfigNetworkCommand(VfsConfigNetworkParameters parameters) { + this(parameters, null); + } + + public AddVfsConfigNetworkCommand(VfsConfigNetworkParameters parameters, CommandContext commandContext) { + super(parameters, commandContext); + } + + @Override + protected void executeCommand() { + super.executeCommand(); + + HostNicVfsConfig oldVfsConfig = getVfsConfig(); + Set<Guid> networks = getVfsConfig().getNetworks(); + networks.add(getNetworkId()); + oldVfsConfig.setNetworks(networks); + + getVfsConfigDao().update(oldVfsConfig); + + setSucceeded(true); + } + + @Override + protected boolean canDoAction() { + boolean isValid = super.canDoAction(); + if (isValid) { + isValid = validate(getVfsConfigValidator().settingSpecificNetworksAllowed()) + && validate(getVfsConfigValidator().networkExists(getNetworkId())) + && validate(getVfsConfigValidator().networkNotInVfsConfig(getNetworkId())); + } + + return isValid; + } + + @Override + public AuditLogType getAuditLogTypeValue() { + return getSucceeded() ? AuditLogType.UPDATE_HOST_NIC_VFS_CONFIG + : AuditLogType.UPDATE_HOST_NIC_VFS_CONFIG_FAILED; + } + + @Override + protected void setActionMessageParameters() { + addCanDoActionMessage(VdcBllMessages.VAR__ACTION__ADD); + addCanDoActionMessage(VdcBllMessages.VAR__TYPE__HOST_NIC_VFS_CONFIG_NETWORK); + } + + private Guid getNetworkId() { + return getParameters().getNetworkId(); + } + + private Network getNetwork() { + return getNetworkDAO().get(getNetworkId()); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java index eb71f9e..6be4162 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.FeatureSupported; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; +import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; @@ -20,6 +21,7 @@ static final String NUM_OF_VFS_REPLACEMENT = "$numOfVfs %d"; static final String MAX_NUM_OF_VFS_REPLACEMENT = "$maxNumOfVfs %d"; static final String NETWORK_NAME_REPLACEMENT = "$networkName %s"; + static final String NETWORK_ID_REPLACEMENT = "$networkId %s"; public VfsConfigValidator(Guid nicId) { this.nicId = nicId; @@ -80,6 +82,42 @@ .when(numOfVfs > getOldVfsConfig().getMaxNumOfVfs() || numOfVfs < 0); } + /** + * @return An error iff <code>allNetworkAllowed</code> is <code>true</code> + */ + public ValidationResult settingSpecificNetworksAllowed() { + return ValidationResult.failWith(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_SET_SPECIFIC_NETWORKS, + getNicNameReplacement()) + .when(getOldVfsConfig().isAllNetworksAllowed()); + } + + /** + * @param networkId + * + * @return An error iff a network with the specified id doesn't exist + */ + public ValidationResult networkExists(Guid networkId) { + return ValidationResult.failWith(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_NOT_EXIST, + getNicNameReplacement(), String.format(NETWORK_ID_REPLACEMENT, networkId)) + .when(getNetwork(networkId) == null); + } + + /** + * @param networkId + * + * @return An error iff the network is already part of the VFs configuration + */ + public ValidationResult networkNotInVfsConfig(Guid networkId) { + String networkName = getNetwork(networkId).getName(); + return ValidationResult.failWith(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_ALREADY_IN_VFS_CONFIG, + getNicNameReplacement(), String.format(NETWORK_NAME_REPLACEMENT, networkName)) + .when(getOldVfsConfig().getNetworks().contains(networkId)); + } + + Network getNetwork(Guid networkId) { + return getDbFacade().getNetworkDao().get(networkId); + } + VdsNetworkInterface getNic() { if (nic == null) { nic = getDbFacade().getInterfaceDao().get(nicId); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java index e690e42..db4885f 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java @@ -7,6 +7,9 @@ import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid; +import java.util.HashSet; +import java.util.Set; + import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Rule; @@ -17,6 +20,7 @@ import org.ovirt.engine.core.bll.ValidationResult; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; +import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBllMessages; @@ -26,6 +30,7 @@ import org.ovirt.engine.core.dao.VdsDAO; import org.ovirt.engine.core.dao.network.HostNicVfsConfigDao; import org.ovirt.engine.core.dao.network.InterfaceDao; +import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.utils.MockConfigRule; @RunWith(MockitoJUnitRunner.class) @@ -33,17 +38,26 @@ private static final String CLUSTER_VERSION = "7"; + private static final String NETWORK_NAME = "net"; + + private static final String NIC_NAME = "nic"; + private static final int NUM_OF_VFS = 5; - private Guid nicId = Guid.newGuid(); + private static final Guid NIC_ID = Guid.newGuid(); - private Guid hostId = Guid.newGuid(); + private static final Guid HOST_ID = Guid.newGuid(); + + private static final Guid NETWORK_ID = Guid.newGuid(); @Mock private VdsNetworkInterface nic; @Mock private VDS host; + + @Mock + private Network network; @Mock private HostNicVfsConfig oldVfsConfig; @@ -63,6 +77,9 @@ @Mock private VdsDAO vdsDao; + @Mock + private NetworkDao networkDao; + private VfsConfigValidator validator; @Rule @@ -75,10 +92,11 @@ when(dbFacade.getInterfaceDao()).thenReturn(interfaceDao); when(dbFacade.getHostNicVfsConfigDao()).thenReturn(vfsConfigDao); when(dbFacade.getVdsDao()).thenReturn(vdsDao); + when(dbFacade.getNetworkDao()).thenReturn(networkDao); } private void createValidator() { - validator = spy(new VfsConfigValidator(nicId)); + validator = spy(new VfsConfigValidator(NIC_ID)); doReturn(dbFacade).when(validator).getDbFacade(); } @@ -95,8 +113,8 @@ private void sriovFeatureSupportTest(Matcher<ValidationResult> matcher, boolean isSupported) { simulateNicExists(); - when(nic.getVdsId()).thenReturn(hostId); - when(vdsDao.get(hostId)).thenReturn(host); + when(nic.getVdsId()).thenReturn(HOST_ID); + when(vdsDao.get(HOST_ID)).thenReturn(host); when(host.getVdsGroupCompatibilityVersion()).thenReturn(version); when(version.getValue()).thenReturn(CLUSTER_VERSION); @@ -120,12 +138,14 @@ } private void simulateNicExists() { - when(interfaceDao.get(nicId)).thenReturn(nic); + when(interfaceDao.get(NIC_ID)).thenReturn(nic); + when(nic.getId()).thenReturn(NIC_ID); + when(nic.getName()).thenReturn(NIC_NAME); } private void simulateVfsConfigExists() { simulateNicExists(); - when(vfsConfigDao.getByNicId(nicId)).thenReturn(oldVfsConfig); + when(vfsConfigDao.getByNicId(NIC_ID)).thenReturn(oldVfsConfig); } @Test @@ -191,4 +211,71 @@ when(oldVfsConfig.getNumOfFreeVfs()).thenReturn(numOfFreeVfs); } + @Test + public void settingSpecificNetworksAllowed() { + settingSpecificNetworksAllowedTest(true); + assertThat(validator.settingSpecificNetworksAllowed(), + failsWith(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_SET_SPECIFIC_NETWORKS, + String.format(VfsConfigValidator.NIC_NAME_REPLACEMENT, nic.getName()))); + } + + @Test + public void settingSpecificNetworksNotAllowed() { + settingSpecificNetworksAllowedTest(false); + assertThat(validator.settingSpecificNetworksAllowed(), isValid()); + } + + private void settingSpecificNetworksAllowedTest(boolean isAllNetworksAllowed) { + simulateVfsConfigExists(); + when(oldVfsConfig.isAllNetworksAllowed()).thenReturn(isAllNetworksAllowed); + } + + @Test + public void networExists() { + simulateNicExists(); + simulateNetworkExists(); + assertThat(validator.networkExists(NETWORK_ID), isValid()); + } + + @Test + public void networNotExist() { + simulateNicExists(); + assertThat(validator.networkExists(NETWORK_ID), + failsWith(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_NOT_EXIST, + String.format(VfsConfigValidator.NIC_NAME_REPLACEMENT, nic.getName()), + String.format(VfsConfigValidator.NETWORK_ID_REPLACEMENT, NETWORK_ID))); + } + + private void simulateNetworkExists() { + when(networkDao.get(NETWORK_ID)).thenReturn(network); + when(network.getId()).thenReturn(NETWORK_ID); + when(network.getName()).thenReturn(NETWORK_NAME); + } + + @Test + public void networkNotInVfsConfig() { + networkNotInVfsConfigTest(false); + assertThat(validator.networkNotInVfsConfig(NETWORK_ID), isValid()); + } + + @Test + public void networkInVfsConfigTest() { + networkNotInVfsConfigTest(true); + assertThat(validator.networkNotInVfsConfig(NETWORK_ID), + failsWith(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_ALREADY_IN_VFS_CONFIG, + String.format(VfsConfigValidator.NIC_NAME_REPLACEMENT, nic.getName()), + String.format(VfsConfigValidator.NETWORK_NAME_REPLACEMENT, network.getName()))); + } + + private void networkNotInVfsConfigTest(boolean alreadyInVfsConfig) { + simulateVfsConfigExists(); + simulateNetworkExists(); + + Set<Guid> networks = new HashSet<>(); + + if (alreadyInVfsConfig) { + networks.add(NETWORK_ID); + } + when(oldVfsConfig.getNetworks()).thenReturn(networks); + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java index 6b2804b..45520d2 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java @@ -746,6 +746,8 @@ // SR-IOV UPDATE_HOST_NIC_VFS_CONFIG(1191), UPDATE_HOST_NIC_VFS_CONFIG_FAILED(1192, AuditLogSeverity.ERROR), + ADD_VFS_CONFIG_NETWORK(1193), + ADD_VFS_CONFIG_NETWORK_FAILED(1194), // NUMA NUMA_ADD_VM_NUMA_NODE_SUCCESS(1300), diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VfsConfigNetworkParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VfsConfigNetworkParameters.java new file mode 100644 index 0000000..0e67844 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VfsConfigNetworkParameters.java @@ -0,0 +1,25 @@ +package org.ovirt.engine.core.common.action; + +import javax.validation.constraints.NotNull; + +import org.ovirt.engine.core.compat.Guid; + +public class VfsConfigNetworkParameters extends VfsConfigBaseParameters { + + private static final long serialVersionUID = 8349966455466948610L; + + @NotNull + private Guid networkId; + + public VfsConfigNetworkParameters() { + } + + public VfsConfigNetworkParameters(Guid nicId, Guid networkId) { + super(nicId); + this.networkId = networkId; + } + + public Guid getNetworkId() { + return networkId; + } +} 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 b76ed84..bc10db7 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 @@ -24,6 +24,7 @@ VAR__TYPE__VNIC_PROFILE, VAR__TYPE__LABEL, VAR__TYPE__HOST_NIC_VFS_CONFIG, + VAR__TYPE__HOST_NIC_VFS_CONFIG_NETWORK, VAR__TYPE__PROVIDER, VAR__TYPE__PROVIDER_CERTIFICATE, VAR__TYPE__VM_DISK, @@ -592,6 +593,9 @@ ACTION_TYPE_FAILED_NIC_IS_NOT_SRIOV_ENABLED(ErrorType.NOT_SUPPORTED), ACTION_TYPE_FAILED_NUM_OF_VFS_CANNOT_BE_CHANGED(ErrorType.NOT_SUPPORTED), ACTION_TYPE_FAILED_NUM_OF_VFS_NOT_IN_VALID_RANGE(ErrorType.BAD_PARAMETERS), + ACTION_TYPE_FAILED_CANNOT_SET_SPECIFIC_NETWORKS(ErrorType.CONFLICT), + ACTION_TYPE_FAILED_NETWORK_NOT_EXIST(ErrorType.BAD_PARAMETERS), + ACTION_TYPE_FAILED_NETWORK_ALREADY_IN_VFS_CONFIG(ErrorType.CONFLICT), ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_IN_STORAGE_POOL(ErrorType.CONFLICT), ACTION_TYPE_FAILED_LUNS_ALREADY_PART_OF_STORAGE_DOMAINS(ErrorType.CONFLICT), ACTION_TYPE_FAILED_LUNS_ALREADY_USED_BY_DISKS(ErrorType.CONFLICT), 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 c8b9585..3445ef6 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -284,6 +284,7 @@ VAR__TYPE__VNIC_PROFILE=$type VM network interface profile VAR__TYPE__LABEL=$type Label VAR__TYPE__HOST_NIC_VFS_CONFIG=$type host NIC VFs configuration +VAR__TYPE__HOST_NIC_VFS_CONFIG_NETWORK=$type network to host NIC VFs configuration VAR__TYPE__PROVIDER=$type provider VAR__TYPE__PROVIDER_CERTIFICATE=$type provider certificate VAR__TYPE__VM=$type VM @@ -534,6 +535,8 @@ ACTION_TYPE_FAILED_NIC_IS_NOT_SRIOV_ENABLED=Cannot ${action} ${type}. The selected network interface ${nicName} is not SR-IOV enabled. ACTION_TYPE_FAILED_NUM_OF_VFS_NOT_IN_VALID_RANGE=Cannot ${action} ${type}. The specified number of VFs on network interface ${nicName} is ${numOfVfs}, the valid range is 0 - ${maxNumOfVfs}. ACTION_TYPE_FAILED_CANNOT_SET_SPECIFIC_NETWORKS=Cannot ${action} ${type}. All networks are allowed, cannot set specific network/label. +ACTION_TYPE_FAILED_NETWORK_ALREADY_IN_VFS_CONFIG=Cannot ${action} ${type}. Network ${networkName} already exists on network interface ${nicName} VFs configuration. +ACTION_TYPE_FAILED_NETWORK_NOT_EXIST=Cannot ${action} ${type}. Network with id ${networkId} doesn't exist. ERROR_CANNOT_RECOVERY_STORAGE_POOL_THERE_IS_ACTIVE_DATA_DOMAINS=Cannot recover Data Center with active Data Storage Domain in Data Center. ERROR_CANNOT_DETACH_LAST_STORAGE_DOMAIN=Cannot remove the master Storage Domain from the Data Center without another active Storage Domain to take its place.\n\ 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 42a7545..686e369 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 @@ -763,6 +763,9 @@ @DefaultStringValue("VAR__TYPE__HOST_NIC_VFS_CONFIG=$type host NIC VFs configuration") String VAR__TYPE__HOST_NIC_VFS_CONFIG(); + @DefaultStringValue("$type network to host NIC VFs configuration") + String VAR__TYPE__HOST_NIC_VFS_CONFIG_NETWORK(); + @DefaultStringValue("$type VM network interface profile") String VAR__TYPE__VNIC_PROFILE(); @@ -1489,6 +1492,15 @@ @DefaultStringValue("Cannot ${action} ${type}. The specified number of VFs on network interface ${nicName} is ${numOfVfs}, the valid range is 0 - ${maxNumOfVfs}.") String ACTION_TYPE_FAILED_NUM_OF_VFS_NOT_IN_VALID_RANGE(); + @DefaultStringValue("Cannot ${action} ${type}. All networks are allowed, cannot set specific network/label.") + String ACTION_TYPE_FAILED_CANNOT_SET_SPECIFIC_NETWORKS(); + + @DefaultStringValue("Cannot ${action} ${type}. Network ${networkName} already exists on network interface ${nicName} VFs configuration.") + String ACTION_TYPE_FAILED_NETWORK_ALREADY_IN_VFS_CONFIG(); + + @DefaultStringValue("Cannot ${action} ${type}. Network with id ${networkId} doesn't exist.") + String ACTION_TYPE_FAILED_NETWORK_NOT_EXIST(); + @DefaultStringValue("Cannot recover Data Center with active Data Storage Domain in Data Center.") String ERROR_CANNOT_RECOVERY_STORAGE_POOL_THERE_IS_ACTIVE_DATA_DOMAINS(); 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 ffffbe2..ceb3ff2 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 @@ -280,6 +280,7 @@ VAR__TYPE__NETWORKS=$type Networks VAR__TYPE__LABEL=$type Label VAR__TYPE__HOST_NIC_VFS_CONFIG=$type host NIC VFs configuration +VAR__TYPE__HOST_NIC_VFS_CONFIG_NETWORK=$type network to host NIC VFs configuration VAR__TYPE__VNIC_PROFILE=$type VM network interface profile VAR__TYPE__PROVIDER=$type provider VAR__TYPE__PROVIDER_CERTIFICATE=$type provider certificate @@ -538,6 +539,8 @@ ACTION_TYPE_FAILED_NIC_IS_NOT_SRIOV_ENABLED=Cannot ${action} ${type}. The selected network interface ${nicName} is not SR-IOV enabled. ACTION_TYPE_FAILED_NUM_OF_VFS_NOT_IN_VALID_RANGE=Cannot ${action} ${type}. The specified number of VFs on network interface ${nicName} is ${numOfVfs}, the valid range is 0 - ${maxNumOfVfs}. ACTION_TYPE_FAILED_CANNOT_SET_SPECIFIC_NETWORKS=Cannot ${action} ${type}. All networks are allowed, cannot set specific network/label. +ACTION_TYPE_FAILED_NETWORK_ALREADY_IN_VFS_CONFIG=Cannot ${action} ${type}. Network ${networkName} already exists on network interface ${nicName} VFs configuration. +ACTION_TYPE_FAILED_NETWORK_NOT_EXIST=Cannot ${action} ${type}. Network with id ${networkId} doesn't exist. ERROR_CANNOT_RECOVERY_STORAGE_POOL_THERE_IS_ACTIVE_DATA_DOMAINS=Cannot recover Data Center with active Data Storage Domain in Data Center. ERROR_CANNOT_DETACH_LAST_STORAGE_DOMAIN=Cannot remove the master Storage Domain from the Data Center without another active Storage Domain to take its place.\n\ -- To view, visit http://gerrit.ovirt.org/36650 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1b1f7665b609b18dbe38242ca57ef24d3307c4b6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <alkap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches