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);
}
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);
}
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());
}
}
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);
}
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();
}
Aggregations