CLOUDSTACK-6170

This commit is contained in:
Mike Tutkowski 2014-03-07 22:20:38 -07:00
parent ded7e682dc
commit cb26b4c337

View File

@ -34,7 +34,6 @@ import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.storage.GuestOSVO; import com.cloud.storage.GuestOSVO;
import com.cloud.storage.Volume;
import com.cloud.storage.VolumeVO; import com.cloud.storage.VolumeVO;
import com.cloud.storage.dao.GuestOSDao; import com.cloud.storage.dao.GuestOSDao;
import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.dao.VolumeDao;
@ -103,30 +102,30 @@ public class XenServerGuru extends HypervisorGuruBase implements HypervisorGuru
List<VolumeVO> volumes = _volumeDao.findByInstance(vm.getId()); List<VolumeVO> volumes = _volumeDao.findByInstance(vm.getId());
// it's OK in this case to send a detach command to the host for a root volume as this
// will simply lead to the SR that supports the root volume being removed
if (volumes != null) { if (volumes != null) {
for (VolumeVO volume : volumes) { for (VolumeVO volume : volumes) {
if (volume.getVolumeType() == Volume.Type.DATADISK) { StoragePoolVO storagePool = _storagePoolDao.findById(volume.getPoolId());
StoragePoolVO storagePool = _storagePoolDao.findById(volume.getPoolId());
// storagePool should be null if we are expunging a volume that was never // storagePool should be null if we are expunging a volume that was never
// attached to a VM that was started (the "trick" for storagePool to be null // attached to a VM that was started (the "trick" for storagePool to be null
// is that none of the VMs this volume may have been attached to were ever started, // is that none of the VMs this volume may have been attached to were ever started,
// so the volume was never assigned to a storage pool) // so the volume was never assigned to a storage pool)
if (storagePool != null && storagePool.isManaged()) { if (storagePool != null && storagePool.isManaged()) {
DataTO volTO = _volFactory.getVolume(volume.getId()).getTO(); DataTO volTO = _volFactory.getVolume(volume.getId()).getTO();
DiskTO disk = new DiskTO(volTO, volume.getDeviceId(), volume.getPath(), volume.getVolumeType()); DiskTO disk = new DiskTO(volTO, volume.getDeviceId(), volume.getPath(), volume.getVolumeType());
DettachCommand cmd = new DettachCommand(disk, vm.getInstanceName()); DettachCommand cmd = new DettachCommand(disk, vm.getInstanceName());
cmd.setManaged(true); cmd.setManaged(true);
cmd.setStorageHost(storagePool.getHostAddress()); cmd.setStorageHost(storagePool.getHostAddress());
cmd.setStoragePort(storagePool.getPort()); cmd.setStoragePort(storagePool.getPort());
cmd.set_iScsiName(volume.get_iScsiName()); cmd.set_iScsiName(volume.get_iScsiName());
commands.add(cmd); commands.add(cmd);
}
} }
} }
} }