use of org.ovirt.engine.core.common.vdscommands.VDSReturnValue in project ovirt-engine by oVirt.
the class TransferImageCommand method extendImageTransferSession.
private boolean extendImageTransferSession(final ImageTransfer entity) {
if (entity.getImagedTicketId() == null) {
log.error("Failed to extend image transfer session: no existing session to extend");
return false;
}
long timeout = getHostTicketLifetime();
Guid resourceId = entity.getImagedTicketId();
ExtendImageTicketVDSCommandParameters transferCommandParams = new ExtendImageTicketVDSCommandParameters(entity.getVdsId(), entity.getImagedTicketId(), timeout);
// TODO This is called from doPolling(), we should run it async (runFutureVDSCommand?)
VDSReturnValue vdsRetVal;
try {
vdsRetVal = backend.getResourceManager().runVdsCommand(VDSCommandType.ExtendImageTicket, transferCommandParams);
} catch (RuntimeException e) {
log.error("Failed to extend image transfer session for ticket '{}': {}", resourceId.toString(), e);
return false;
}
if (!vdsRetVal.getSucceeded()) {
log.error("Failed to extend image transfer session");
return false;
}
log.info("Transfer session with ticket id {} extended, timeout {} seconds", resourceId.toString(), timeout);
setNewSessionExpiration(timeout);
return true;
}
use of org.ovirt.engine.core.common.vdscommands.VDSReturnValue in project ovirt-engine by oVirt.
the class AddSANStorageDomainCommand method createVG.
private String createVG() {
VDSReturnValue returnValue = runVdsCommand(VDSCommandType.CreateVG, new CreateVGVDSCommandParameters(getVds().getId(), getStorageDomain().getId(), getParameters().getLunIds(), getParameters().isForce()));
String volumeGroupId = (String) ((returnValue.getReturnValue() instanceof String) ? returnValue.getReturnValue() : null);
return volumeGroupId;
}
use of org.ovirt.engine.core.common.vdscommands.VDSReturnValue in project ovirt-engine by oVirt.
the class AddImageFromScratchCommand method processImageInIrs.
protected boolean processImageInIrs() {
Guid taskId = persistAsyncTaskPlaceHolder(getParameters().getParentCommand());
VDSReturnValue vdsReturnValue = runVdsCommand(VDSCommandType.CreateImage, getCreateImageVDSCommandParameters());
if (vdsReturnValue.getSucceeded()) {
getParameters().setVdsmTaskIds(new ArrayList<>());
getParameters().getVdsmTaskIds().add(createTask(taskId, vdsReturnValue.getCreationInfo(), getParameters().getParentCommand(), VdcObjectType.Storage, getParameters().getStorageDomainId()));
getTaskIdList().add(getParameters().getVdsmTaskIds().get(0));
return true;
}
return false;
}
use of org.ovirt.engine.core.common.vdscommands.VDSReturnValue in project ovirt-engine by oVirt.
the class DeactivateStorageDomainCommand method executeCommand.
@Override
protected void executeCommand() {
if (isCinderStorageDomain()) {
deactivateCinderStorageDomain();
return;
}
final StoragePoolIsoMap map = storagePoolIsoMapDao.get(new StoragePoolIsoMapId(getParameters().getStorageDomainId(), getParameters().getStoragePoolId()));
map.setStatus(StorageDomainStatus.Unknown);
changeStorageDomainStatusInTransaction(map, getParameters().isInactive() ? StorageDomainStatus.Locked : StorageDomainStatus.PreparingForMaintenance);
final StorageDomain newMaster;
if (getStorageDomain().getStorageDomainType() == StorageDomainType.Master) {
newMaster = electNewMaster();
isLastMaster = proceedStorageDomainTreatmentByDomainType(newMaster, true);
} else {
newMaster = null;
isLastMaster = false;
}
final Guid newMasterId = newMaster != null ? newMaster.getId() : Guid.Empty;
if (isLastMaster) {
executeInNewTransaction(() -> {
getCompensationContext().snapshotEntityStatus(getStoragePool());
getStoragePool().setStatus(StoragePoolStatus.Maintenance);
storagePoolDao.updateStatus(getStoragePool().getId(), getStoragePool().getStatus());
getCompensationContext().stateChanged();
return null;
});
StoragePoolStatusHandler.poolStatusChanged(getStoragePool().getId(), getStoragePool().getStatus());
getStorageDomain().getStorageDynamicData().setAvailableDiskSize(null);
getStorageDomain().getStorageDynamicData().setUsedDiskSize(null);
}
if (!getParameters().isInactive()) {
runVdsCommand(VDSCommandType.DeactivateStorageDomain, new DeactivateStorageDomainVDSCommandParameters(getStoragePool().getId(), getStorageDomain().getId(), newMasterId, getStoragePool().getMasterDomainVersion()));
}
freeLock();
VDS spm = null;
if (getStoragePool().getSpmVdsId() != null) {
spm = vdsDao.get(getStoragePool().getSpmVdsId());
}
if (isLastMaster) {
if (spm != null) {
final VDSReturnValue stopSpmReturnValue = runVdsCommand(VDSCommandType.SpmStopOnIrs, new SpmStopOnIrsVDSCommandParameters(getStoragePool().getId()));
if (!stopSpmReturnValue.getSucceeded()) {
// no need to continue because DisconnectStoragePool will
// fail if host is SPM
log.error("Aborting execution due to failure to stop SPM");
setSucceeded(false);
return;
}
runVdsCommand(VDSCommandType.DisconnectStoragePool, new DisconnectStoragePoolVDSCommandParameters(spm.getId(), getStoragePool().getId(), spm.getVdsSpmId()));
}
runSynchronizeOperation(new DisconnectStoragePoolAsyncOperationFactory());
}
if (!getParameters().isInactive()) {
getEventQueue().submitEventSync(new Event(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), null, EventType.POOLREFRESH, ""), () -> {
runSynchronizeOperation(new AfterDeactivateSingleAsyncOperationFactory(), isLastMaster, newMasterId);
return null;
});
if (spm != null) {
getStorageHelper(getStorageDomain()).disconnectStorageFromDomainByVdsId(getStorageDomain(), spm.getId());
}
}
executeInNewTransaction(() -> {
if (getParameters().isInactive()) {
map.setStatus(StorageDomainStatus.Inactive);
} else if (isLastMaster) {
map.setStatus(StorageDomainStatus.Maintenance);
} else {
log.info("Domain '{}' will remain in '{}' status until deactivated on all hosts", getStorageDomain().getId(), map.getStatus());
}
storagePoolIsoMapDao.updateStatus(map.getId(), map.getStatus());
if (newMaster != null) {
StoragePoolIsoMap mapOfNewMaster = newMaster.getStoragePoolIsoMapData();
mapOfNewMaster.setStatus(StorageDomainStatus.Active);
storagePoolIsoMapDao.updateStatus(mapOfNewMaster.getId(), mapOfNewMaster.getStatus());
}
return null;
});
if (!getParameters().isSkipChecks()) {
notifyAsyncTasks();
}
setSucceeded(true);
}
use of org.ovirt.engine.core.common.vdscommands.VDSReturnValue in project ovirt-engine by oVirt.
the class GetExistingStorageDomainListQuery method executeQueryCommand.
@Override
protected void executeQueryCommand() {
ArrayList<StorageDomain> returnValue = new ArrayList<>();
VDSReturnValue vdsReturnValue = runVdsCommand(VDSCommandType.HSMGetStorageDomainsList, new HSMGetStorageDomainsListVDSCommandParameters(getParameters().getId(), Guid.Empty, null, getParameters().getStorageDomainType(), getParameters().getPath()));
if (vdsReturnValue.getSucceeded()) {
ArrayList<Guid> guidsFromIrs = (ArrayList<Guid>) vdsReturnValue.getReturnValue();
HashSet<Guid> guidsFromDb = new HashSet<>();
if (guidsFromIrs.size() > 0) {
List<StorageDomain> domainsInDb = storageDomainDao.getAll();
for (StorageDomain domain : domainsInDb) {
guidsFromDb.add(domain.getId());
}
for (Guid domainId : guidsFromIrs) {
if (!guidsFromDb.contains(domainId)) {
Pair<StorageDomainStatic, Guid> domainFromIrs = (Pair<StorageDomainStatic, Guid>) runVdsCommand(VDSCommandType.HSMGetStorageDomainInfo, new HSMGetStorageDomainInfoVDSCommandParameters(getParameters().getId(), domainId)).getReturnValue();
StorageDomain domain = new StorageDomain();
domain.setStorageStaticData(domainFromIrs.getFirst());
domain.setStoragePoolId(domainFromIrs.getSecond());
if (getParameters().getStorageFormatType() == null || getParameters().getStorageFormatType() == domain.getStorageFormat()) {
if (getParameters().getStorageType() != null && domain.getStorageType().getValue() != getParameters().getStorageType().getValue()) {
log.warn("The storage type of domain {} has been changed from {} to {}", domain.getStorageName(), domain.getStorageType().toString(), getParameters().getStorageType().toString());
domain.setStorageType(getParameters().getStorageType());
}
returnValue.add(domain);
}
}
}
}
getQueryReturnValue().setReturnValue(returnValue);
}
}
Aggregations