package org.ovirt.engine.ui.uicommonweb.models.vms;
import java.util.List;
import java.util.Map;
import org.ovirt.engine.core.common.action.ImportVmFromOvaParameters;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.ArchitectureType;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.frontend.Frontend;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
import org.ovirt.engine.ui.uicommonweb.models.quota.QuotaListModel;
import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback;
import com.google.inject.Inject;
public class ImportVmFromOvaModel extends ImportVmFromExternalProviderModel {
private String ovaPath;
private Guid hostId;
@Inject
protected ImportVmFromOvaModel(VmImportGeneralModel vmImportGeneralModel,
VmImportDiskListModel importDiskListModel,
VmImportInterfaceListModel vmImportInterfaceListModel,
ClusterListModel<Void> cluster,
QuotaListModel clusterQuota) {
super(vmImportGeneralModel, importDiskListModel, vmImportInterfaceListModel, cluster, clusterQuota);
}
@Override
protected void setTargetArchitecture(List<VM> externalVms) {
setTargetArchitecture(ArchitectureType.x86_64);
}
public void setIsoName(String ovaPath) {
this.ovaPath = ovaPath;
}
public void setHostId(Guid hostId) {
this.hostId = hostId;
}
@Override
public void importVms(IFrontendMultipleActionAsyncCallback callback) {
Frontend.getInstance().runMultipleAction(
VdcActionType.ImportVmFromOva,
buildImportVmFromOvaParameters(),
true,
callback,
null);
}
private List<VdcActionParametersBase> buildImportVmFromOvaParameters() {
ImportVmData importVmData = (ImportVmData) getItems().iterator().next();
VM vm = importVmData.getVm();
ImportVmFromOvaParameters prm = new ImportVmFromOvaParameters(
vm,
getStorage().getSelectedItem().getId(),
getStoragePool().getId(),
getCluster().getSelectedItem().getId());
prm.setOvaPath(ovaPath);
prm.setProxyHostId(hostId);
prm.setVirtioIsoName(getIso().getIsChangable() ? getIso().getSelectedItem() : null);
prm.setExternalName(importVmData.getName());
if (getClusterQuota().getSelectedItem() != null &&
getClusterQuota().getIsAvailable()) {
prm.setQuotaId(getClusterQuota().getSelectedItem().getId());
}
CpuProfile cpuProfile = getCpuProfiles().getSelectedItem();
if (cpuProfile != null) {
prm.setCpuProfileId(cpuProfile.getId());
}
prm.setForceOverride(true);
prm.setCopyCollapse(importVmData.getCollapseSnapshots().getEntity());
for (Map.Entry<Guid, Disk> entry : vm.getDiskMap().entrySet()) {
DiskImage disk = (DiskImage) entry.getValue();
ImportDiskData importDiskData = getDiskImportData(disk.getDiskAlias());
disk.setVolumeType(getAllocation().getSelectedItem());
disk.setVolumeFormat(AsyncDataProvider.getInstance().getDiskVolumeFormat(
disk.getVolumeType(),
getStorage().getSelectedItem().getStorageType()));
if (getDiskImportData(disk.getDiskAlias()).getSelectedQuota() != null) {
disk.setQuotaId(importDiskData.getSelectedQuota().getId());
}
}
updateNetworkInterfacesForVm(vm);
if (importVmData.isExistsInSystem() ||
importVmData.getClone().getEntity()) {
prm.setImportAsNewEntity(true);
prm.setCopyCollapse(true);
}
return java.util.Collections.<VdcActionParametersBase>singletonList(prm);
}
}