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.Network;
import org.ovirt.engine.api.model.NicInterface;
import org.ovirt.engine.api.model.VM;
import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
import org.ovirt.engine.core.compat.Guid;
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(new Guid(model.getVm().getId()));
}
if (model.isSetId()) {
entity.setId(new Guid(model.getId()));
}
if (model.isSetName()) {
entity.setName(model.getName());
}
if (model.isSetMac() && model.getMac().isSetAddress()) {
entity.setMacAddress(model.getMac().getAddress());
}
if (model.isSetNetwork() && model.getNetwork().isSetName()) {
entity.setNetworkName(model.getNetwork().getName());
}
if (model.isSetInterface()) {
NicInterface nicType = NicInterface.fromValue(model.getInterface());
if (nicType != null) {
entity.setType(map(nicType));
}
}
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());
}
if (entity.getNetworkName() != null) {
model.setNetwork(new Network());
model.getNetwork().setName(entity.getNetworkName());
}
model.setInterface(map(entity.getType()));
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;
default:
return -1;
}
}
@Mapping(from = Integer.class, to = String.class)
public static String map(Integer type) {
switch (type) {
case 0:
return NicInterface.RTL8139_VIRTIO.value();
case 1:
return NicInterface.RTL8139.value();
case 2:
return NicInterface.E1000.value();
case 3:
return NicInterface.VIRTIO.value();
default:
return null;
}
}
}