package org.ovirt.engine.api.restapi.resource; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.Action; import org.ovirt.engine.api.model.VM; import org.ovirt.engine.api.model.VMs; import org.ovirt.engine.api.resource.ActionResource; import org.ovirt.engine.api.resource.StorageDomainContentResource; import org.ovirt.engine.core.common.action.ImportVmParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.queries.GetVmByVmIdParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public class BackendStorageDomainVmResource extends AbstractBackendStorageDomainContentResource<VMs, VM, org.ovirt.engine.core.common.businessentities.VM> implements StorageDomainContentResource<VM> { public BackendStorageDomainVmResource(BackendStorageDomainVmsResource parent, String vmId) { super(vmId, parent, VM.class, org.ovirt.engine.core.common.businessentities.VM.class); } @Override protected VM getFromDataDomain() { return performGet(VdcQueryType.GetVmByVmId, new GetVmByVmIdParameters(guid)); } @Override public Response doImport(Action action) { validateParameters(action, "cluster.id|name", "storageDomain.id|name"); Guid destStorageDomainId = getDestStorageDomainId(action); ImportVmParameters params = new ImportVmParameters(getEntity(), parent.getStorageDomainId(), destStorageDomainId, parent.getDataCenterId(destStorageDomainId), getClusterId(action)); return doAction(VdcActionType.ImportVm, params, action); } @Override public ActionResource getActionSubresource(String action, String ids) { return inject(new BackendActionResource(action, ids)); } @Override protected VM addParents(VM vm) { vm.setStorageDomain(parent.getStorageDomainModel()); return vm; } protected org.ovirt.engine.core.common.businessentities.VM getEntity() { for (org.ovirt.engine.core.common.businessentities.VM entity : parent.getEntitiesFromExportDomain()) { if (guid.equals(entity.getvm_guid())) { return entity; } } return entityNotFound(); } }