package org.ovirt.engine.ui.uicommonweb.models.hosts.network;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.network.Network;
import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment;
import org.ovirt.engine.core.common.businessentities.network.NetworkStatus;
import org.ovirt.engine.core.common.businessentities.network.ReportedConfigurations;
import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
import org.ovirt.engine.ui.uicommonweb.models.hosts.HostSetupNetworksModel;
/**
* A Model for Logical Networks
*/
public class LogicalNetworkModel extends NetworkItemModel<NetworkStatus> {
private final boolean management;
private boolean attachedViaLabel;
private String errorMessage;
private NetworkInterfaceModel attachedToNic;
private VdsNetworkInterface vlanDevice;
private Network network;
private NetworkAttachment networkAttachment;
public LogicalNetworkModel(Network network,
NetworkAttachment networkAttachment,
HostSetupNetworksModel setupModel) {
super(setupModel);
this.network = network;
this.networkAttachment = networkAttachment;
management = network.getCluster() != null && network.getCluster().isManagement();
}
public void attach(NetworkInterfaceModel targetNic) {
attachedToNic = targetNic;
List<LogicalNetworkModel> networksOnTarget = targetNic.getItems();
networksOnTarget.add(this);
}
public NetworkInterfaceModel getAttachedToNic() {
return attachedToNic;
}
public VdsNetworkInterface getVlanDevice() {
return vlanDevice;
}
public Network getNetwork() {
return network;
}
@Override
public String getName() {
return getNetwork().getName();
}
@Override
public NetworkStatus getStatus() {
return getNetwork().getCluster() == null ? null : getNetwork().getCluster().getStatus();
}
public int getVlanId() {
Integer vlanId = getNetwork().getVlanId();
return vlanId == null ? -1 : vlanId;
}
public boolean hasVlan() {
return getVlanId() >= 0;
}
public boolean isAttached() {
return attachedToNic != null;
}
public boolean isAttachedViaLabel() {
return attachedViaLabel;
}
public void attachViaLabel() {
attachedViaLabel = true;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public boolean isManagement() {
return management;
}
public void setVlanDevice(VdsNetworkInterface vlanDevice) {
this.vlanDevice = vlanDevice;
}
public boolean isInSync() {
ReportedConfigurations reportedConfigurations = getReportedConfigurations();
return reportedConfigurations == null || reportedConfigurations.isNetworkInSync();
}
public boolean isManaged() {
return !(isAttached() && getNetworkAttachment() == null);
}
public ReportedConfigurations getReportedConfigurations() {
NetworkAttachment networkAttachment = getNetworkAttachment();
return networkAttachment == null ? null : networkAttachment.getReportedConfigurations();
}
@Override
public String getType() {
return HostSetupNetworksModel.NETWORK;
}
public NetworkAttachment getNetworkAttachment() {
return networkAttachment;
}
}