package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.model.Mac;
import org.ovirt.engine.api.model.Nic;
import org.ovirt.engine.api.model.NicInterface;
import org.ovirt.engine.api.model.Vm;
import org.ovirt.engine.api.model.VnicProfile;
import org.ovirt.engine.api.restapi.utils.GuidUtils;
import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
public class NicMapper {
@Mapping(from = Nic.class, to = VmNetworkInterface.class)
public static VmNetworkInterface map(Nic model, VmNetworkInterface template) {
VmNetworkInterface entity = template != null ? template : new VmNetworkInterface();
if (model.isSetVm() && model.getVm().isSetId()) {
entity.setVmId(GuidUtils.asGuid(model.getVm().getId()));
}
if (model.isSetId()) {
entity.setId(GuidUtils.asGuid(model.getId()));
}
if (model.isSetName()) {
entity.setName(model.getName());
}
if (model.isSetMac() && model.getMac().isSetAddress()) {
entity.setMacAddress(model.getMac().getAddress());
}
if (model.isSetLinked()) {
entity.setLinked(model.isLinked());
}
if (model.isSetInterface()) {
entity.setType(map(model.getInterface()));
}
if (model.isSetPlugged()) {
entity.setPlugged(model.isPlugged());
}
if (model.isSetVnicProfile()) {
if (model.getVnicProfile().isSetId()) {
entity.setVnicProfileId(GuidUtils.asGuid(model.getVnicProfile().getId()));
} else {
entity.setVnicProfileId(null);
}
}
return entity;
}
@Mapping(from = VmNetworkInterface.class, to = Nic.class)
public static Nic map(VmNetworkInterface entity, Nic template) {
Nic model = template != null ? template : new Nic();
if (entity.getVmId() != null) {
model.setVm(new Vm());
model.getVm().setId(entity.getVmId().toString());
}
if (entity.getId() != null) {
model.setId(entity.getId().toString());
}
if (entity.getName() != null) {
model.setName(entity.getName());
}
if (entity.getMacAddress() != null) {
model.setMac(new Mac());
model.getMac().setAddress(entity.getMacAddress());
}
model.setLinked(entity.isLinked());
model.setInterface(map(entity.getType()));
model.setPlugged(entity.isPlugged());
if (entity.getVnicProfileId() != null) {
model.setVnicProfile(new VnicProfile());
model.getVnicProfile().setId(entity.getVnicProfileId().toString());
}
return model;
}
@Mapping(from = NicInterface.class, to = Integer.class)
public static Integer map(NicInterface type) {
switch (type) {
case RTL8139_VIRTIO:
return 0;
case RTL8139:
return 1;
case E1000:
return 2;
case VIRTIO:
return 3;
case SPAPR_VLAN:
return 4;
case PCI_PASSTHROUGH:
return 5;
default:
return -1;
}
}
@Mapping(from = Integer.class, to = NicInterface.class)
public static NicInterface map(Integer type) {
switch (type) {
case 0:
return NicInterface.RTL8139_VIRTIO;
case 1:
return NicInterface.RTL8139;
case 2:
return NicInterface.E1000;
case 3:
return NicInterface.VIRTIO;
case 4:
return NicInterface.SPAPR_VLAN;
case 5:
return NicInterface.PCI_PASSTHROUGH;
default:
return null;
}
}
}