Support deleteAffinitygroup - remove access

This commit is contained in:
Prachi Damle 2014-02-03 18:22:57 -08:00
parent 022b9b8f80
commit cb4d3a3c54

View File

@ -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);
}
} }
}); });