package org.ovirt.engine.ui.uicommonweb.models.hosts.network;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
import org.ovirt.engine.ui.uicommonweb.models.hosts.HostSetupNetworksModel;
/**
* A Model for Network Interface Controllers (NICs)
*/
public class NetworkInterfaceModel extends NetworkItemModel<InterfaceStatus> {
private boolean bonded = false;
private BondNetworkInterfaceModel bond;
private List<NetworkLabelModel> labels;
private VdsNetworkInterface iface;
private boolean sriovEnabled = false;
private String physicalFunction;
public NetworkInterfaceModel(HostSetupNetworksModel setupModel) {
super(setupModel);
List<LogicalNetworkModel> networks = new ArrayList<>();
setItems(networks);
labels = new ArrayList<>();
}
public NetworkInterfaceModel(VdsNetworkInterface nic,
Collection<LogicalNetworkModel> nicNetworks,
Collection<NetworkLabelModel> nicLabels,
boolean sriovEnabled,
String physicalFunction,
HostSetupNetworksModel setupModel) {
this(nic, sriovEnabled, physicalFunction, setupModel);
// attach all networks
if (nicNetworks != null) {
for (LogicalNetworkModel logicalNetworkModel : nicNetworks) {
logicalNetworkModel.attach(this);
}
}
// add all labels
if (nicLabels != null) {
for (NetworkLabelModel label : nicLabels) {
label(label);
}
}
}
public NetworkInterfaceModel(VdsNetworkInterface iface,
boolean sriovEnabled,
String physicalFunction,
HostSetupNetworksModel setupModel) {
this(setupModel);
this.iface = iface;
this.sriovEnabled = sriovEnabled;
this.physicalFunction = physicalFunction;
}
public BondNetworkInterfaceModel getBond() {
return bond;
}
@Override
public List<LogicalNetworkModel> getItems() {
return (List<LogicalNetworkModel>) super.getItems();
}
public List<NetworkLabelModel> getLabels() {
return labels;
}
public void label(NetworkLabelModel labelModel) {
labelModel.setInterface(this);
getLabels().add(labelModel);
}
public void unlabel(NetworkLabelModel labelModel) {
labelModel.setInterface(null);
getLabels().remove(labelModel);
}
public int getTotalItemSize() {
return getItems().size() + labels.size();
}
public VdsNetworkInterface getOriginalIface() {
return iface;
}
@Override
public String getName() {
return getOriginalIface().getName();
}
@Override
public InterfaceStatus getStatus() {
return getOriginalIface().getStatistics().getStatus();
}
public boolean isBonded() {
return bonded;
}
public void setBond(BondNetworkInterfaceModel bond) {
this.bond = bond;
}
public void setBonded(boolean bonded) {
this.bonded = bonded;
}
@Override
public String getType() {
return HostSetupNetworksModel.NIC;
}
@Override
public boolean aggregatesNetworks() {
return true;
}
public boolean isSriovEnabled() {
return sriovEnabled;
}
public boolean isVf() {
return physicalFunction != null;
}
public String getPhysicalFunction() {
return physicalFunction;
}
}