package org.ovirt.engine.api.restapi.resource; import org.junit.Before; import org.junit.Test; import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.api.model.ExternalVmImport; import org.ovirt.engine.api.model.ExternalVmProviderType; import org.ovirt.engine.api.model.File; import org.ovirt.engine.api.model.Host; import org.ovirt.engine.api.model.StorageDomain; import org.ovirt.engine.api.model.Vm; import org.ovirt.engine.api.restapi.utils.OsTypeMockUtils; import org.ovirt.engine.core.common.action.ImportVmFromExternalUrlParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.OriginType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.storage.VolumeType; import org.ovirt.engine.core.compat.Guid; public class BackendExternalVmImportsResourceTest extends AbstractBackendBaseTest { private static final Guid CLUSTER_ID = GUIDS[0]; private static final Guid STORAGE_DOMAIN_ID = GUIDS[1]; private static final Guid HOST_ID = GUIDS[2]; private static final String VMWARE_URL = "vpx://administrator@1.2.3.4/DataCenter/Cluster/2.3.4.5?no_verify=1"; private static final String USERNAME = "administrator"; private static final String PASSWORD = "123456"; private static final String EXTERNAL_VM_NAME = "external-name"; private static final String CREATED_VM_NAME = "new-vm"; private static final String DRIVERS_ISO = "drivers.iso"; private static final VolumeType VOLUME_TYPE = VolumeType.Sparse; private static final OriginType ORIGIN_TYPE = OriginType.VMWARE; private final BackendExternalVmImportsResource resource = new BackendExternalVmImportsResource(); @Override protected void init() { initBackendResource(resource); resource.setMappingLocator(mapperLocator); OsTypeMockUtils.mockOsTypes(); } @Before public void setup() { setUpBasicUriExpectations("/externalvmimports"); } @Test public void testVmWareImport() { VM externalVm = new VM(); externalVm.setName(EXTERNAL_VM_NAME); setUpActionExpectations(VdcActionType.ImportVmFromExternalUrl, ImportVmFromExternalUrlParameters.class, new String[] { "OriginType", "StorageDomainId", "ClusterId", "Url", "Username", "Password", "ProxyHostId", "VirtioIsoName", "ExternalName", "VolumeType", "NewVmName" }, new Object[] { ORIGIN_TYPE, STORAGE_DOMAIN_ID, CLUSTER_ID, VMWARE_URL, USERNAME, PASSWORD, HOST_ID, DRIVERS_ISO, EXTERNAL_VM_NAME, VOLUME_TYPE, CREATED_VM_NAME }, true, true, externalVm, true); ExternalVmImport vmImport = createVmImport(); resource.add(vmImport); } private ExternalVmImport createVmImport() { File file = new File(); file.setId(DRIVERS_ISO); ExternalVmImport vmImport = new ExternalVmImport(); vmImport.setName(EXTERNAL_VM_NAME); vmImport.setVm(new Vm()); vmImport.getVm().setName(CREATED_VM_NAME); vmImport.setCluster(new Cluster()); vmImport.getCluster().setId(CLUSTER_ID.toString()); vmImport.setStorageDomain(new StorageDomain()); vmImport.getStorageDomain().setId(STORAGE_DOMAIN_ID.toString()); vmImport.setHost(new Host()); vmImport.getHost().setId(HOST_ID.toString()); vmImport.setSparse(true); vmImport.setProvider(ExternalVmProviderType.VMWARE); vmImport.setDriversIso(file); vmImport.setUsername(USERNAME); vmImport.setPassword(PASSWORD); vmImport.setUrl(VMWARE_URL); return vmImport; } }