package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.model.MigrationBandwidth;
import org.ovirt.engine.api.model.MigrationBandwidthAssignmentMethod;
import org.ovirt.engine.api.model.MigrationOptions;
import org.ovirt.engine.core.common.businessentities.Cluster;
import org.ovirt.engine.core.common.businessentities.MigrationBandwidthLimitType;
public class ClusterMigrationOptionsMapper {
@Mapping(from = Cluster.class, to = MigrationOptions.class)
public static MigrationOptions map(Cluster entity, MigrationOptions template) {
template = MigrationOptionsMapper.map(entity, template);
MigrationBandwidth bandwidth = template.getBandwidth();
if (bandwidth == null) {
bandwidth = new MigrationBandwidth();
template.setBandwidth(bandwidth);
}
switch (entity.getMigrationBandwidthLimitType()) {
case AUTO:
bandwidth.setAssignmentMethod(MigrationBandwidthAssignmentMethod.AUTO);
break;
case VDSM_CONFIG:
bandwidth.setAssignmentMethod(MigrationBandwidthAssignmentMethod.HYPERVISOR_DEFAULT);
break;
case CUSTOM:
bandwidth.setAssignmentMethod(MigrationBandwidthAssignmentMethod.CUSTOM);
bandwidth.setCustomValue(entity.getCustomMigrationNetworkBandwidth());
break;
}
return template;
}
public static void copyMigrationOptions(MigrationOptions model, Cluster entity) {
MigrationOptionsMapper.copyMigrationOptions(model, entity);
if (model.isSetBandwidth()) {
MigrationBandwidth bandwidth = model.getBandwidth();
switch (bandwidth.getAssignmentMethod()) {
case AUTO:
entity.setMigrationBandwidthLimitType(MigrationBandwidthLimitType.AUTO);
break;
case HYPERVISOR_DEFAULT:
entity.setMigrationBandwidthLimitType(MigrationBandwidthLimitType.VDSM_CONFIG);
break;
case CUSTOM:
entity.setMigrationBandwidthLimitType(MigrationBandwidthLimitType.CUSTOM);
entity.setCustomMigrationNetworkBandwidth(model.getBandwidth().getCustomValue());
}
}
}
}