mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-4682: VMs are getting deployed with shared service offering and local compute offering
VM deployment is fine, issue is in attach volume where all possible scenarios are not handled. The following needs to be logic of attached volume: 1. if data volume scope is zone then allow attach (this is already there) 2. if data volume scope is cluster a. if root volume scope is host, allow if both are in same cluster (already there) b. if root volume scope is zone, allow if vm and data volume in same cluster (fixed as part of this commit) 3. if data volume scope is host allow if vm and data volume in same host (fixed as part of this commit)
This commit is contained in:
parent
c5e1c4725c
commit
e58bef22c1
@ -1545,15 +1545,25 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
|
||||
}
|
||||
|
||||
if (storeForRootStoreScope.getScopeType() != storeForDataStoreScope.getScopeType()) {
|
||||
if (storeForDataStoreScope.getScopeType() == ScopeType.CLUSTER && storeForRootStoreScope.getScopeType() == ScopeType.HOST) {
|
||||
HostScope hs = (HostScope)storeForRootStoreScope;
|
||||
if (storeForDataStoreScope.getScopeId().equals(hs.getClusterId())) {
|
||||
if (storeForDataStoreScope.getScopeType() == ScopeType.CLUSTER) {
|
||||
Long vmClusterId = null;
|
||||
if (storeForRootStoreScope.getScopeType() == ScopeType.HOST) {
|
||||
HostScope hs = (HostScope)storeForRootStoreScope;
|
||||
vmClusterId = hs.getClusterId();
|
||||
} else if (storeForRootStoreScope.getScopeType() == ScopeType.ZONE) {
|
||||
Long hostId = _vmInstanceDao.findById(rootVolumeOfVm.getInstanceId()).getHostId();
|
||||
if (hostId != null) {
|
||||
HostVO host = _hostDao.findById(hostId);
|
||||
vmClusterId = host.getClusterId();
|
||||
}
|
||||
}
|
||||
if (storeForDataStoreScope.getScopeId().equals(vmClusterId)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (storeForRootStoreScope.getScopeType() == ScopeType.CLUSTER && storeForDataStoreScope.getScopeType() == ScopeType.HOST) {
|
||||
HostScope hs = (HostScope)storeForDataStoreScope;
|
||||
if (storeForRootStoreScope.getScopeId().equals(hs.getClusterId())) {
|
||||
} else if (storeForDataStoreScope.getScopeType() == ScopeType.HOST &&
|
||||
(storeForRootStoreScope.getScopeType() == ScopeType.CLUSTER || storeForRootStoreScope.getScopeType() == ScopeType.ZONE)) {
|
||||
Long hostId = _vmInstanceDao.findById(rootVolumeOfVm.getInstanceId()).getHostId();
|
||||
if (storeForDataStoreScope.getScopeId().equals(hostId)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user