Search in sources :

Example 1 with GetUnregisteredDiskQueryParameters

use of org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters in project ovirt-engine by oVirt.

the class BackendAttachedStorageDomainDiskResource method register.

@Override
public Response register(Action action) {
    // First we need to query the backend to fill in all the information about the disk from the VDSM.
    // We don't just use the information from the Disk object because it's missing a few things like creation
    // date and last modified date.
    Guid dataCenterId = BackendDataCenterHelper.lookupByStorageDomainId(this, storageDomainId);
    GetUnregisteredDiskQueryParameters getDiskParams = new GetUnregisteredDiskQueryParameters(guid, storageDomainId, dataCenterId);
    DiskImage unregisteredDisk = getEntity(DiskImage.class, QueryType.GetUnregisteredDisk, getDiskParams, guid.toString());
    RegisterDiskParameters registerDiskParams = new RegisterDiskParameters(unregisteredDisk, storageDomainId);
    return doAction(ActionType.RegisterDisk, registerDiskParams, action);
}
Also used : Guid(org.ovirt.engine.core.compat.Guid) GetUnregisteredDiskQueryParameters(org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters) DiskImage(org.ovirt.engine.core.common.businessentities.storage.DiskImage) RegisterDiskParameters(org.ovirt.engine.core.common.action.RegisterDiskParameters)

Example 2 with GetUnregisteredDiskQueryParameters

use of org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters in project ovirt-engine by oVirt.

the class GetUnregisteredDisksQueryTest method prepareMocks.

/**
 * Mock the VDSBroker and the Daos
 */
private void prepareMocks() {
    DiskImage existingDiskImage = mock(DiskImage.class);
    when(existingDiskImage.getId()).thenReturn(existingDiskId);
    List<DiskImage> existingDiskImages = Collections.singletonList(existingDiskImage);
    // Mock the get images List VDS command
    VDSReturnValue volListReturnValue = new VDSReturnValue();
    volListReturnValue.setSucceeded(true);
    volListReturnValue.setReturnValue(importDiskIds);
    doReturn(volListReturnValue).when(vdsBroker).runVdsCommand(eq(VDSCommandType.GetImagesList), any());
    // Mock the get unregistered disk query
    when(backendMock.runInternalQuery(eq(QueryType.GetUnregisteredDisk), any(), any())).thenAnswer(invocation -> {
        GetUnregisteredDiskQueryParameters p = (GetUnregisteredDiskQueryParameters) invocation.getArguments()[1];
        QueryReturnValue unregDiskReturnValue = new QueryReturnValue();
        unregDiskReturnValue.setSucceeded(true);
        DiskImage newDiskImage = mock(DiskImage.class);
        when(newDiskImage.getId()).thenReturn(p.getDiskId());
        unregDiskReturnValue.setReturnValue(newDiskImage);
        return unregDiskReturnValue;
    });
    doReturn(storagePoolId).when(getQuery()).getStoragePoolId();
    doReturn(storageDomainId).when(getQuery()).getStorageDomainId();
    when(diskImageDaoMock.getAllSnapshotsForStorageDomain(eq(storageDomainId))).thenReturn(existingDiskImages);
}
Also used : QueryReturnValue(org.ovirt.engine.core.common.queries.QueryReturnValue) GetUnregisteredDiskQueryParameters(org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters) DiskImage(org.ovirt.engine.core.common.businessentities.storage.DiskImage) VDSReturnValue(org.ovirt.engine.core.common.vdscommands.VDSReturnValue)

Example 3 with GetUnregisteredDiskQueryParameters

use of org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters in project ovirt-engine by oVirt.

the class RegisterDiskCommand method refreshDiskImageIfNecessery.

private void refreshDiskImageIfNecessery() {
    if (getParameters().isRefreshFromStorage()) {
        GetUnregisteredDiskQueryParameters unregQueryParams = new GetUnregisteredDiskQueryParameters(getParameters().getDiskImage().getId(), getStorageDomainId(), getStoragePoolId());
        QueryReturnValue unregQueryReturn = runInternalQuery(QueryType.GetUnregisteredDisk, unregQueryParams);
        if (unregQueryReturn.getSucceeded()) {
            setDiskImage(unregQueryReturn.getReturnValue());
        }
    } else {
        setDiskImage(getParameters().getDiskImage());
    }
}
Also used : QueryReturnValue(org.ovirt.engine.core.common.queries.QueryReturnValue) GetUnregisteredDiskQueryParameters(org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters)

Example 4 with GetUnregisteredDiskQueryParameters

use of org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters in project ovirt-engine by oVirt.

the class GetUnregisteredDisksQuery method executeQueryCommand.

@Override
protected void executeQueryCommand() {
    StorageDomain storageDomain = storageDomainDao.get(getStorageDomainId());
    if (storageDomain == null) {
        getQueryReturnValue().setExceptionString(EngineMessage.STORAGE_DOMAIN_DOES_NOT_EXIST.toString());
        getQueryReturnValue().setSucceeded(false);
        return;
    }
    if (storageDomain.getStorageType().isCinderDomain()) {
        QueryReturnValue returnValue = runInternalQuery(QueryType.GetUnregisteredCinderDisksByStorageDomainId, new IdQueryParameters(getStorageDomainId()));
        setReturnValue(returnValue.getReturnValue());
        return;
    }
    // first, run getImagesList query into vdsm to get all of the images on the storage domain - then store in
    // imagesList
    VDSReturnValue imagesListResult = runVdsCommand(VDSCommandType.GetImagesList, new GetImagesListVDSCommandParameters(getStorageDomainId(), getStoragePoolId()));
    @SuppressWarnings("unchecked") List<Guid> imagesList = (List<Guid>) imagesListResult.getReturnValue();
    // fromDao is a list of all disk images on the domain from the Dao
    List<DiskImage> fromDao = diskImageDao.getAllSnapshotsForStorageDomain(getStorageDomainId());
    // if the ID in imagesList is recognized by oVirt, remove from list
    for (DiskImage image : fromDao) {
        imagesList.remove(image.getId());
    }
    List<Disk> unregisteredDisks = new ArrayList<>();
    for (Guid unregisteredDiskId : imagesList) {
        GetUnregisteredDiskQueryParameters unregQueryParams = new GetUnregisteredDiskQueryParameters(unregisteredDiskId, getStorageDomainId(), getStoragePoolId());
        QueryReturnValue unregQueryReturn = runInternalQuery(QueryType.GetUnregisteredDisk, unregQueryParams);
        if (unregQueryReturn.getSucceeded()) {
            unregisteredDisks.add(unregQueryReturn.getReturnValue());
        } else {
            log.debug("Could not get populated disk: {}", unregQueryReturn.getExceptionString());
        }
    }
    getQueryReturnValue().setReturnValue(unregisteredDisks);
}
Also used : ArrayList(java.util.ArrayList) Guid(org.ovirt.engine.core.compat.Guid) VDSReturnValue(org.ovirt.engine.core.common.vdscommands.VDSReturnValue) StorageDomain(org.ovirt.engine.core.common.businessentities.StorageDomain) QueryReturnValue(org.ovirt.engine.core.common.queries.QueryReturnValue) IdQueryParameters(org.ovirt.engine.core.common.queries.IdQueryParameters) ArrayList(java.util.ArrayList) List(java.util.List) GetUnregisteredDiskQueryParameters(org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters) DiskImage(org.ovirt.engine.core.common.businessentities.storage.DiskImage) Disk(org.ovirt.engine.core.common.businessentities.storage.Disk) GetImagesListVDSCommandParameters(org.ovirt.engine.core.common.vdscommands.GetImagesListVDSCommandParameters)

Example 5 with GetUnregisteredDiskQueryParameters

use of org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters in project ovirt-engine by oVirt.

the class BackendStorageDomainDiskResource method get.

@Override
public Disk get() {
    Disk disk;
    boolean unregistered = ParametersHelper.getBooleanParameter(httpHeaders, uriInfo, UNREGISTERED_CONSTRAINT_PARAMETER, true, false);
    if (unregistered) {
        QueryReturnValue result = runQuery(QueryType.GetDiskByDiskId, new IdQueryParameters(guid));
        if (!result.getSucceeded() || result.getReturnValue() == null) {
            Guid dataCenterId = BackendDataCenterHelper.lookupByStorageDomainId(this, storageDomainId);
            disk = performGet(QueryType.GetUnregisteredDisk, new GetUnregisteredDiskQueryParameters(guid, storageDomainId, dataCenterId));
        } else {
            // parameter was passed.
            return notFound();
        }
    } else {
        disk = getDelegate().get();
    }
    if (disk.isSetStorageDomains() && !disk.getStorageDomains().getStorageDomains().isEmpty()) {
        for (StorageDomain sd : disk.getStorageDomains().getStorageDomains()) {
            if (sd.isSetId() && sd.getId().equals(storageDomainId.toString())) {
                return disk;
            }
        }
    }
    return notFound();
}
Also used : QueryReturnValue(org.ovirt.engine.core.common.queries.QueryReturnValue) StorageDomain(org.ovirt.engine.api.model.StorageDomain) IdQueryParameters(org.ovirt.engine.core.common.queries.IdQueryParameters) Guid(org.ovirt.engine.core.compat.Guid) GetUnregisteredDiskQueryParameters(org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters) Disk(org.ovirt.engine.api.model.Disk)

Aggregations

GetUnregisteredDiskQueryParameters (org.ovirt.engine.core.common.queries.GetUnregisteredDiskQueryParameters)7 QueryReturnValue (org.ovirt.engine.core.common.queries.QueryReturnValue)5 Guid (org.ovirt.engine.core.compat.Guid)5 DiskImage (org.ovirt.engine.core.common.businessentities.storage.DiskImage)4 Disk (org.ovirt.engine.api.model.Disk)3 IdQueryParameters (org.ovirt.engine.core.common.queries.IdQueryParameters)3 StorageDomain (org.ovirt.engine.api.model.StorageDomain)2 RegisterDiskParameters (org.ovirt.engine.core.common.action.RegisterDiskParameters)2 VDSReturnValue (org.ovirt.engine.core.common.vdscommands.VDSReturnValue)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 AddDiskParameters (org.ovirt.engine.core.common.action.AddDiskParameters)1 StorageDomain (org.ovirt.engine.core.common.businessentities.StorageDomain)1 Disk (org.ovirt.engine.core.common.businessentities.storage.Disk)1 GetImagesListVDSCommandParameters (org.ovirt.engine.core.common.vdscommands.GetImagesListVDSCommandParameters)1