Martin Mucha has uploaded a new change for review. Change subject: support for adding network attachment via specifying network by name ......................................................................
support for adding network attachment via specifying network by name Change-Id: I6cbc77edb40a35dcf20d2af3f19bde17044d0212 Signed-off-by: Martin Mucha <mmu...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddNetworkAttachmentCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkIdNetworkNameCompleter.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveNetworkAttachmentCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkAttachmentCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkAttachment.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NetworkIdOrNetworkNameIsSetConstraint.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NetworkIdOrNetworkNameIsSet.java M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties M backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendNetworkAttachmentsResource.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkAttachmentMapper.java 13 files changed, 217 insertions(+), 37 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/08/40308/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddNetworkAttachmentCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddNetworkAttachmentCommand.java index ae729a9..6c5952a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddNetworkAttachmentCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddNetworkAttachmentCommand.java @@ -21,10 +21,13 @@ import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.compat.Guid; @NonTransactiveCommandAttribute public class AddNetworkAttachmentCommand<T extends NetworkAttachmentParameters> extends VdsCommand<T> { + @Inject + private NetworkIdNetworkNameCompleter networkIdNetworkNameCompleter; @Inject private ManagementNetworkUtil managementNetworkUtil; @@ -33,6 +36,7 @@ public AddNetworkAttachmentCommand(T parameters) { super(parameters); + addValidationGroup(CreateEntity.class); } @Override @@ -54,6 +58,8 @@ completer.completeNetworkAttachment(getParameters().getNetworkAttachment()); completer.completeNetworkAttachments(networkAttachmentsForVds); + networkIdNetworkNameCompleter.completeNetworkAttachment(getParameters().getNetworkAttachment()); + return validateNetworkAttachment() && validateHostInterface() && validateCrossAttachments(networkAttachmentsForVds); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java index 9290497..537f756 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java @@ -11,6 +11,7 @@ import java.util.concurrent.TimeoutException; import javax.inject.Inject; +import javax.validation.groups.Default; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; @@ -40,6 +41,8 @@ import org.ovirt.engine.core.common.errors.VdcBllErrors; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.interfaces.FutureVDSCall; +import org.ovirt.engine.core.common.validation.group.CreateEntity; +import org.ovirt.engine.core.common.validation.group.UpdateEntity; import org.ovirt.engine.core.common.vdscommands.FutureVDSCommandType; import org.ovirt.engine.core.common.vdscommands.HostNetwork; import org.ovirt.engine.core.common.vdscommands.HostSetupNetworksVdsCommandParameters; @@ -81,8 +84,12 @@ @Inject private ManagementNetworkUtil managementNetworkUtil; + @Inject + private NetworkIdNetworkNameCompleter networkIdNetworkNameCompleter; + public HostSetupNetworksCommand(T parameters) { this(parameters, null); + addValidationGroup(Default.class, CreateEntity.class, UpdateEntity.class); } public HostSetupNetworksCommand(T parameters, CommandContext commandContext) { @@ -118,6 +125,8 @@ completer.completeBonds(getParameters().getRemovedBonds()); completer.completeNetworkAttachments(getExistingAttachments()); + networkIdNetworkNameCompleter.completeNetworkAttachments(getParameters().getNetworkAttachments(), getNetworkBusinessEntityMap()); + validator = new HostSetupNetworksValidator(host, getParameters(), getExistingNics(), diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkIdNetworkNameCompleter.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkIdNetworkNameCompleter.java new file mode 100644 index 0000000..5236df1 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkIdNetworkNameCompleter.java @@ -0,0 +1,77 @@ +package org.ovirt.engine.core.bll.network.host; + +import java.util.List; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import org.ovirt.engine.core.common.businessentities.BusinessEntityMap; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.network.NetworkDao; + + +@Singleton +public class NetworkIdNetworkNameCompleter { + + private final NetworkDao networkDao; + + @Inject + public NetworkIdNetworkNameCompleter(NetworkDao networkDao) { + this.networkDao = networkDao; + } + + public void completeNetworkAttachment(NetworkAttachment networkAttachment) { + completeNetworkAttachment(networkAttachment, null); + } + + public void completeNetworkAttachments(List<NetworkAttachment> networkAttachments, BusinessEntityMap<Network> clusterNetworks) { + for (NetworkAttachment networkAttachment : networkAttachments) { + completeNetworkAttachment(networkAttachment, clusterNetworks); + } + } + + private void completeNetworkAttachment(NetworkAttachment networkAttachment, BusinessEntityMap<Network> clusterNetworks) { + Guid networkId = networkAttachment.getNetworkId(); + String networkName = networkAttachment.getNetworkName(); + + if (networkId == null && networkName == null) { + throw new IllegalArgumentException("network name or network id must be set."); + } + + if (networkName != null) { + Network network = getNetworkByName(networkName, clusterNetworks); + + if (networkId == null) { + networkAttachment.setNetworkId(network.getId()); + } else { + if (!network.getId().equals(networkId)) { + throw new IllegalArgumentException("Both nicId and nicName was specified, " + + "but they does not denote same nic."); + } + } + } else { + //TODO MM: this is not actually required, but it may be confusing why there's sometime unset fields. + Network network = getNetworkById(networkId, clusterNetworks); + networkAttachment.setNetworkName(network.getName()); + } + } + + private Network getNetworkById(Guid networkId, BusinessEntityMap<Network> clusterNetworks) { + if (clusterNetworks != null) { + return clusterNetworks.get(networkId); + } else { + return networkDao.get(networkId); + } + } + + private Network getNetworkByName(String networkName, BusinessEntityMap<Network> clusterNetworks) { + if (clusterNetworks != null) { + return clusterNetworks.get(networkName); + } else { + return networkDao.getByName(networkName); + } + + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveNetworkAttachmentCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveNetworkAttachmentCommand.java index c2f8eef..86cd248 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveNetworkAttachmentCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveNetworkAttachmentCommand.java @@ -13,6 +13,7 @@ import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.validation.group.RemoveEntity; @NonTransactiveCommandAttribute public class RemoveNetworkAttachmentCommand<T extends NetworkAttachmentParameters> extends VdsCommand<T> { @@ -22,6 +23,7 @@ public RemoveNetworkAttachmentCommand(T parameters) { super(parameters); + addValidationGroup(RemoveEntity.class); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkAttachmentCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkAttachmentCommand.java index e76b37e..09fa39b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkAttachmentCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkAttachmentCommand.java @@ -21,6 +21,7 @@ import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.validation.group.UpdateEntity; import org.ovirt.engine.core.dao.network.NetworkAttachmentDao; @NonTransactiveCommandAttribute @@ -34,6 +35,7 @@ public UpdateNetworkAttachmentCommand(T parameters) { super(parameters); + addValidationGroup(UpdateEntity.class); } @Override diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java index 38e046d..477435a 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java @@ -20,6 +20,7 @@ @Valid private List<NetworkAttachment> networkAttachments; + @Valid private List<NetworkAttachment> removedNetworkAttachments; private List<Bond> bonds; diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkAttachment.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkAttachment.java index 5eed3ef..0e669c5 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkAttachment.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkAttachment.java @@ -6,12 +6,14 @@ import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; +import org.ovirt.engine.core.common.validation.annotation.NetworkIdOrNetworkNameIsSet; import org.ovirt.engine.core.common.validation.annotation.ValidNameOfVdsNetworkInterface; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.common.validation.group.RemoveEntity; import org.ovirt.engine.core.common.validation.group.UpdateEntity; import org.ovirt.engine.core.compat.Guid; +@NetworkIdOrNetworkNameIsSet(groups = { CreateEntity.class, UpdateEntity.class }) public class NetworkAttachment extends IVdcQueryable implements BusinessEntity<Guid> { private static final long serialVersionUID = -8052325342869681284L; @@ -19,8 +21,9 @@ @NotNull(groups = { UpdateEntity.class, RemoveEntity.class }) private Guid id; - @NotNull(groups = { CreateEntity.class, UpdateEntity.class }) private Guid networkId; + + private String networkName; private Guid nicId; @@ -112,6 +115,7 @@ result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((ipConfiguration == null) ? 0 : ipConfiguration.hashCode()); result = prime * result + ((networkId == null) ? 0 : networkId.hashCode()); + result = prime * result + ((networkName == null) ? 0 : networkName.hashCode()); result = prime * result + ((nicId == null) ? 0 : nicId.hashCode()); result = prime * result + ((nicName == null) ? 0 : nicName.hashCode()); result = prime * result + ((properties == null) ? 0 : properties.hashCode()); @@ -142,6 +146,11 @@ return false; } else if (!networkId.equals(other.networkId)) return false; + if (networkName == null) { + if (other.networkName != null) + return false; + } else if (!networkName.equals(other.networkName)) + return false; if (nicId == null) { if (other.nicId != null) return false; @@ -164,9 +173,18 @@ public String toString() { return "NetworkAttachment [id=" + id + ", networkId=" + networkId + + ", networkName=" + networkName + ", nicId=" + nicId + ", nicName=" + nicName + ", ipConfiguration=" + ipConfiguration + ", properties=" + properties + "]"; } + + public String getNetworkName() { + return networkName; + } + + public void setNetworkName(String networkName) { + this.networkName = networkName; + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NetworkIdOrNetworkNameIsSetConstraint.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NetworkIdOrNetworkNameIsSetConstraint.java new file mode 100644 index 0000000..29162f6 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/NetworkIdOrNetworkNameIsSetConstraint.java @@ -0,0 +1,23 @@ +package org.ovirt.engine.core.common.validation; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; +import org.ovirt.engine.core.common.validation.annotation.NetworkIdOrNetworkNameIsSet; + +public class NetworkIdOrNetworkNameIsSetConstraint + implements ConstraintValidator<NetworkIdOrNetworkNameIsSet, NetworkAttachment> { + + @Override + public void initialize(NetworkIdOrNetworkNameIsSet constraintAnnotation) { + } + + @Override + public boolean isValid(NetworkAttachment value, ConstraintValidatorContext context) { + boolean networkIdNotSet = value.getNetworkId() == null; + boolean networkNameNotSet = value.getNetworkName() == null; + + return !(networkIdNotSet && networkNameNotSet); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NetworkIdOrNetworkNameIsSet.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NetworkIdOrNetworkNameIsSet.java new file mode 100644 index 0000000..7f97787 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/annotation/NetworkIdOrNetworkNameIsSet.java @@ -0,0 +1,24 @@ +package org.ovirt.engine.core.common.validation.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.Payload; + +import org.ovirt.engine.core.common.validation.NetworkIdOrNetworkNameIsSetConstraint; + +@Constraint(validatedBy = NetworkIdOrNetworkNameIsSetConstraint.class) +@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface NetworkIdOrNetworkNameIsSet { + String message() default "VALIDATION_NETWORK_ID_OR_NETWORK_NAME_MUST_BE_SET"; + + Class<?>[] groups() default { }; + + Class<? extends Payload>[] payload() default { }; +} 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 b245577..f953ca2 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -888,6 +888,7 @@ VALIDATION.DATA_CENTER.DESCRIPTION.INVALID="Data Center description must be formed of ASCII charis only" VALIDATION.DATA_CENTER.NAME.INVALID=Data Center name must be formed of alphanumeric characters, numbers or "-_" VALIDATION_ID_NULL=ID is required. +VALIDATION_NETWORK_ID_OR_NETWORK_NAME_MUST_BE_SET=Either network id or network name must be provided. VALIDATION_NAME_NULL=Name is required. VALIDATION_NAME_INVALID=Name must be formed of alphanumeric characters, numbers or "-_". VALIDATION_NAME_INVALID_WITH_DOT=Name must be formed of alphanumeric characters, numbers or "-_.". diff --git a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml index 6cccee6..28ab4e1 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml +++ b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml @@ -2701,17 +2701,17 @@ parameterType: NetworkAttachment signatures: - mandatoryArguments: - network_attachment.network.id: 'xs:string' + network_attachment.network.name|id: 'xs:string' optionalArguments: - network_attachment.ip_configuration.ipv4s.boot_protocol: 'xs:string' - network_attachment.ip_configuration.ipv4s.ipv4--COLLECTION: - ipv4.address: 'xs:string' - ipv4.netmask: 'xs:string' - ipv4.gateway: 'xs:string' - network_attachment.properties.property--COLLECTION: - property.name: 'xs:string' - property.value: 'xs:string' - network_attachment.override_configuration: 'xs:boolean' + network_attachment.ip_configuration.ipv4s.boot_protocol: 'xs:string' + network_attachment.ip_configuration.ipv4s.ipv4--COLLECTION: + ipv4.address: 'xs:string' + ipv4.netmask: 'xs:string' + ipv4.gateway: 'xs:string' + network_attachment.properties.property--COLLECTION: + property.name: 'xs:string' + property.value: 'xs:string' + network_attachment.override_configuration: 'xs:boolean' - name: /hosts/{host:id}/networkattachments|rel=get description: get the list of network attachments of the host request: @@ -2732,17 +2732,17 @@ parameterType: NetworkAttachment signatures: - optionalArguments: - network_attachment.host_nic.id: 'xs:string' - network_attachment.host_nic.name: 'xs:string' - network_attachment.ip_configuration.ipv4s.boot_protocol: 'xs:string' - network_attachment.ip_configuration.ipv4s.ipv4--COLLECTION: - ipv4.address: 'xs:string' - ipv4.netmask: 'xs:string' - ipv4.gateway: 'xs:string' - network_attachment.properties.property--COLLECTION: - property.name: 'xs:string' - property.value: 'xs:string' - network_attachment.override_configuration: 'xs:boolean' + network_attachment.host_nic.id: 'xs:string' + network_attachment.host_nic.name: 'xs:string' + network_attachment.ip_configuration.ipv4s.boot_protocol: 'xs:string' + network_attachment.ip_configuration.ipv4s.ipv4--COLLECTION: + ipv4.address: 'xs:string' + ipv4.netmask: 'xs:string' + ipv4.gateway: 'xs:string' + network_attachment.properties.property--COLLECTION: + property.name: 'xs:string' + property.value: 'xs:string' + network_attachment.override_configuration: 'xs:boolean' - name: /hosts/{host:id}/networkattachments|rel=add description: add a new network attachment to the host request: @@ -2750,19 +2750,19 @@ parameterType: NetworkAttachment signatures: - mandatoryArguments: - network_attachment.network.id: 'xs:string' + network_attachment.network.name|id: 'xs:string' optionalArguments: - network_attachment.host_nic.id: 'xs:string' - network_attachment.host_nic.name: 'xs:string' - network_attachment.ip_configuration.ipv4s.boot_protocol: 'xs:string' - network_attachment.ip_configuration.ipv4s.ipv4--COLLECTION: - ipv4.address: 'xs:string' - ipv4.netmask: 'xs:string' - ipv4.gateway: 'xs:string' - network_attachment.properties.property--COLLECTION: - property.name: 'xs:string' - property.value: 'xs:string' - network_attachment.override_configuration: 'xs:boolean' + network_attachment.host_nic.id: 'xs:string' + network_attachment.host_nic.name: 'xs:string' + network_attachment.ip_configuration.ipv4s.boot_protocol: 'xs:string' + network_attachment.ip_configuration.ipv4s.ipv4--COLLECTION: + ipv4.address: 'xs:string' + ipv4.netmask: 'xs:string' + ipv4.gateway: 'xs:string' + network_attachment.properties.property--COLLECTION: + property.name: 'xs:string' + property.value: 'xs:string' + network_attachment.override_configuration: 'xs:boolean' - name: /hosts/{host:id}/unmanagednetworks|rel=get description: get a list of unmanaged networks request: diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendNetworkAttachmentsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendNetworkAttachmentsResource.java index 616a76e..8999d69 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendNetworkAttachmentsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendNetworkAttachmentsResource.java @@ -46,7 +46,9 @@ @Override public Response add(NetworkAttachment attachment) { - validateParameters(attachment, "network.id"); + //TODO MM: what is this crazy stuff? There's javax validation which is far superior to this and in most places data from jaxb objects are simply moved to business objects which are (mostly) being validated, so shouldn't this be abandoned where possible? +// validateParameters(attachment, "network.id"); + org.ovirt.engine.core.common.businessentities.network.NetworkAttachment networkAttachment = map(attachment); NetworkAttachmentParameters params = new NetworkAttachmentParameters(hostId, networkAttachment); return performCreate(VdcActionType.AddNetworkAttachment, diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkAttachmentMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkAttachmentMapper.java index 4d10036..e9b2808 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkAttachmentMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkAttachmentMapper.java @@ -24,8 +24,15 @@ entity.setId(GuidUtils.asGuid(model.getId())); } - if (model.isSetNetwork() && model.getNetwork().isSetId()) { - entity.setNetworkId(GuidUtils.asGuid(model.getNetwork().getId())); + if (model.isSetNetwork()) { + Network networkModel = model.getNetwork(); + if (networkModel.isSetId()) { + entity.setNetworkId(GuidUtils.asGuid(networkModel.getId())); + } + + if (networkModel.isSetName()) { + entity.setNetworkName(networkModel.getName()); + } } if (model.isSetHostNic()) { @@ -97,6 +104,14 @@ model.getNetwork().setId(entity.getNetworkId().toString()); } + if (entity.getNetworkName() != null) { + if (model.getNetwork() == null) { + model.setNetwork(new Network()); + } + + model.getNetwork().setName(entity.getNetworkName()); + } + if (entity.getNicId() != null) { model.setHostNic(new HostNIC()); model.getHostNic().setId(entity.getNicId().toString()); -- To view, visit https://gerrit.ovirt.org/40308 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6cbc77edb40a35dcf20d2af3f19bde17044d0212 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <mmu...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches