mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-6170
This commit is contained in:
parent
ded7e682dc
commit
cb26b4c337
@ -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);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user