mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-15 18:12:35 +01:00
Support deleteAffinitygroup - remove access
This commit is contained in:
parent
022b9b8f80
commit
cb4d3a3c54
@ -46,6 +46,8 @@ import com.cloud.event.ActionEvent;
|
|||||||
import com.cloud.event.EventTypes;
|
import com.cloud.event.EventTypes;
|
||||||
import com.cloud.exception.InvalidParameterValueException;
|
import com.cloud.exception.InvalidParameterValueException;
|
||||||
import com.cloud.exception.PermissionDeniedException;
|
import com.cloud.exception.PermissionDeniedException;
|
||||||
|
import com.cloud.network.dao.NetworkAccountVO;
|
||||||
|
import com.cloud.network.dao.NetworkDomainVO;
|
||||||
import com.cloud.user.Account;
|
import com.cloud.user.Account;
|
||||||
import com.cloud.user.AccountManager;
|
import com.cloud.user.AccountManager;
|
||||||
import com.cloud.user.DomainManager;
|
import com.cloud.user.DomainManager;
|
||||||
@ -271,29 +273,38 @@ public class AffinityGroupServiceImpl extends ManagerBase implements AffinityGro
|
|||||||
public void doInTransactionWithoutResult(TransactionStatus status) {
|
public void doInTransactionWithoutResult(TransactionStatus status) {
|
||||||
|
|
||||||
AffinityGroupVO group = _affinityGroupDao.lockRow(affinityGroupIdFinal, true);
|
AffinityGroupVO group = _affinityGroupDao.lockRow(affinityGroupIdFinal, true);
|
||||||
if (group == null) {
|
if (group == null) {
|
||||||
throw new InvalidParameterValueException("Unable to find affinity group by id " + affinityGroupIdFinal);
|
throw new InvalidParameterValueException("Unable to find affinity group by id " + affinityGroupIdFinal);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<AffinityGroupVMMapVO> affinityGroupVmMap = _affinityGroupVMMapDao.listByAffinityGroup(affinityGroupIdFinal);
|
List<AffinityGroupVMMapVO> affinityGroupVmMap = _affinityGroupVMMapDao.listByAffinityGroup(affinityGroupIdFinal);
|
||||||
if (!affinityGroupVmMap.isEmpty()) {
|
if (!affinityGroupVmMap.isEmpty()) {
|
||||||
SearchBuilder<AffinityGroupVMMapVO> listByAffinityGroup = _affinityGroupVMMapDao.createSearchBuilder();
|
SearchBuilder<AffinityGroupVMMapVO> listByAffinityGroup = _affinityGroupVMMapDao.createSearchBuilder();
|
||||||
listByAffinityGroup.and("affinityGroupId", listByAffinityGroup.entity().getAffinityGroupId(), SearchCriteria.Op.EQ);
|
listByAffinityGroup.and("affinityGroupId", listByAffinityGroup.entity().getAffinityGroupId(), SearchCriteria.Op.EQ);
|
||||||
listByAffinityGroup.done();
|
listByAffinityGroup.done();
|
||||||
SearchCriteria<AffinityGroupVMMapVO> sc = listByAffinityGroup.create();
|
SearchCriteria<AffinityGroupVMMapVO> sc = listByAffinityGroup.create();
|
||||||
sc.setParameters("affinityGroupId", affinityGroupIdFinal);
|
sc.setParameters("affinityGroupId", affinityGroupIdFinal);
|
||||||
|
|
||||||
_affinityGroupVMMapDao.lockRows(sc, null, true);
|
_affinityGroupVMMapDao.lockRows(sc, null, true);
|
||||||
_affinityGroupVMMapDao.remove(sc);
|
_affinityGroupVMMapDao.remove(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
// call processor to handle the group delete
|
// call processor to handle the group delete
|
||||||
AffinityGroupProcessor processor = getAffinityGroupProcessorForType(group.getType());
|
AffinityGroupProcessor processor = getAffinityGroupProcessorForType(group.getType());
|
||||||
if (processor != null) {
|
if (processor != null) {
|
||||||
processor.handleDeleteGroup(group);
|
processor.handleDeleteGroup(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
_affinityGroupDao.expunge(affinityGroupIdFinal);
|
if(_affinityGroupDao.expunge(affinityGroupIdFinal)){
|
||||||
|
AffinityGroupDomainMapVO groupDomain = _affinityGroupDomainMapDao
|
||||||
|
.findByAffinityGroup(affinityGroupIdFinal);
|
||||||
|
if (groupDomain != null) {
|
||||||
|
_affinityGroupDomainMapDao.remove(groupDomain.getId());
|
||||||
|
}
|
||||||
|
// remove its related ACL permission
|
||||||
|
Pair<AclEntityType, Long> params = new Pair<AclEntityType, Long>(AclEntityType.AffinityGroup, affinityGroupIdFinal);
|
||||||
|
_messageBus.publish(_name, EntityManager.MESSAGE_REMOVE_ENTITY_EVENT, PublishScope.LOCAL, params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user