package org.ovirt.engine.core.bll.storage.disk.cinder;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.context.EngineContext;
import org.ovirt.engine.core.common.action.GetCinderEntityByStorageDomainIdParameters;
import org.ovirt.engine.core.common.businessentities.storage.CinderDisk;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.DiskDao;
import com.woorea.openstack.cinder.model.Volume;
public class GetUnregisteredCinderDiskByIdAndStorageDomainIdQuery<P extends GetCinderEntityByStorageDomainIdParameters>
extends CinderQueryBase<P> {
@Inject
private DiskDao diskDao;
public GetUnregisteredCinderDiskByIdAndStorageDomainIdQuery(P parameters) {
this(parameters, null);
}
public GetUnregisteredCinderDiskByIdAndStorageDomainIdQuery(P parameters, EngineContext context) {
super(parameters, context);
}
@Override
protected void executeQueryCommand() {
Disk diskFromDao = diskDao.get(getParameters().getEntityId());
if (diskFromDao != null) {
log.info("The disk already exist in the DB, hence, should not be fetched from Cinder. ID: '{}', Alias: '{}'",
diskFromDao.getId(), diskFromDao.getDiskAlias());
getQueryReturnValue().setReturnValue(null);
return;
}
String volumeId = getParameters().getEntityId().toString();
Volume volume = getVolumeProviderProxy().getVolumeById(volumeId);
if (volume == null) {
log.info("The volume doesn't exist in Cinder. ID: '{}'", volumeId);
getQueryReturnValue().setReturnValue(null);
return;
}
Guid storageDomainId = getParameters().getId();
CinderDisk unregisteredDisk = CinderBroker.volumeToCinderDisk(volume, storageDomainId);
getQueryReturnValue().setReturnValue(unregisteredDisk);
}
}