package org.ovirt.engine.core.common.businessentities.network; import java.util.Map; import java.util.Objects; import javax.validation.Valid; import javax.validation.constraints.NotNull; import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; import org.ovirt.engine.core.common.utils.ToStringBuilder; import org.ovirt.engine.core.common.validation.annotation.NetworkIdOrNetworkNameIsSet; import org.ovirt.engine.core.common.validation.group.CreateEntity; 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 implements IVdcQueryable, BusinessEntity<Guid> { private static final long serialVersionUID = -8052325342869681284L; @NotNull(groups = { UpdateEntity.class }, message = "NETWORK_ATTACHMENTS_ID_MUST_BE_SET_FOR_UPDATE") private Guid id; private Guid networkId; private String networkName; private Guid nicId; @Valid private AnonymousHostNetworkQos hostNetworkQos; private String nicName; @Valid private IpConfiguration ipConfiguration; private Map<String, String> properties; private boolean overrideConfiguration; private ReportedConfigurations reportedConfigurations; public static long getSerialVersionUID() { return serialVersionUID; } public NetworkAttachment() { } public NetworkAttachment(NetworkAttachment networkAttachment) { id = networkAttachment.getId(); nicId = networkAttachment.getNicId(); nicName = networkAttachment.getNicName(); networkId = networkAttachment.getNetworkId(); networkName = networkAttachment.getNetworkName(); ipConfiguration = networkAttachment.getIpConfiguration(); properties = networkAttachment.getProperties(); overrideConfiguration = networkAttachment.isOverrideConfiguration(); reportedConfigurations = networkAttachment.getReportedConfigurations(); } public NetworkAttachment(VdsNetworkInterface baseNic, Network network, IpConfiguration ipConfiguration) { this.networkId = network.getId(); this.networkName = network.getName(); this.nicId = baseNic.getId(); this.nicName = baseNic.getName(); this.ipConfiguration = ipConfiguration; } @Override public Guid getId() { return id; } @Override public void setId(Guid id) { this.id = id; if (isQosOverridden()) { hostNetworkQos.setId(id); } } public Guid getNetworkId() { return networkId; } public void setNetworkId(Guid networkId) { this.networkId = networkId; } public Guid getNicId() { return nicId; } public void setNicId(Guid nicId) { this.nicId = nicId; } public String getNicName() { return nicName; } public void setNicName(String nicName) { this.nicName = nicName; } public IpConfiguration getIpConfiguration() { return ipConfiguration; } public void setIpConfiguration(IpConfiguration ipConfiguration) { this.ipConfiguration = ipConfiguration; } public Map<String, String> getProperties() { return properties; } public void setProperties(Map<String, String> properties) { this.properties = properties; } public boolean hasProperties() { return !(getProperties() == null || getProperties().isEmpty()); } @Override public Object getQueryableId() { return getId(); } public boolean isOverrideConfiguration() { return overrideConfiguration; } public void setOverrideConfiguration(boolean overrideConfiguration) { this.overrideConfiguration = overrideConfiguration; } public void setReportedConfigurations(ReportedConfigurations reportedConfigurations) { this.reportedConfigurations = reportedConfigurations; } public ReportedConfigurations getReportedConfigurations() { return reportedConfigurations; } public String getNetworkName() { return networkName; } public void setNetworkName(String networkName) { this.networkName = networkName; } public AnonymousHostNetworkQos getHostNetworkQos() { return hostNetworkQos; } public void setHostNetworkQos(AnonymousHostNetworkQos hostNetworkQos) { this.hostNetworkQos = hostNetworkQos; if (this.hostNetworkQos != null) { this.hostNetworkQos.setId(this.getId()); } } public boolean isQosOverridden() { return hostNetworkQos != null; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof NetworkAttachment)) { return false; } NetworkAttachment other = (NetworkAttachment) o; return Objects.equals(networkId, other.networkId) && Objects.equals(nicId, other.nicId); } @Override public int hashCode() { return Objects.hash( networkId, nicId ); } @Override public String toString() { return ToStringBuilder.forInstance(this) .append("id", getId()) .append("networkId", getNetworkId()) .append("networkName", getNetworkName()) .append("nicId", getNicId()) .append("nicName", getNicName()) .append("ipConfiguration", getIpConfiguration()) .append("properties", getProperties()) .append("overrideConfiguration", isOverrideConfiguration()) .build(); } }