You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pr...@apache.org on 2014/02/04 03:28:44 UTC

[2/3] git commit: updated refs/heads/rbac to 72c0f1a

Support deleteAffinitygroup - remove access


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cb4d3a3c
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cb4d3a3c
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cb4d3a3c

Branch: refs/heads/rbac
Commit: cb4d3a3c5499ea7436360dcc4f7b3e2e34002a9e
Parents: 022b9b8
Author: Prachi Damle <pr...@cloud.com>
Authored: Mon Feb 3 18:22:57 2014 -0800
Committer: Prachi Damle <pr...@cloud.com>
Committed: Mon Feb 3 18:22:57 2014 -0800

----------------------------------------------------------------------
 .../affinity/AffinityGroupServiceImpl.java      | 49 ++++++++++++--------
 1 file changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cb4d3a3c/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java b/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java
index ce56311..27c541b 100644
--- a/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java
+++ b/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java
@@ -46,6 +46,8 @@ import com.cloud.event.ActionEvent;
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
 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.AccountManager;
 import com.cloud.user.DomainManager;
@@ -271,29 +273,38 @@ public class AffinityGroupServiceImpl extends ManagerBase implements AffinityGro
             public void doInTransactionWithoutResult(TransactionStatus status) {
 
                 AffinityGroupVO group = _affinityGroupDao.lockRow(affinityGroupIdFinal, true);
-        if (group == null) {
-                    throw new InvalidParameterValueException("Unable to find affinity group by id " + affinityGroupIdFinal);
-        }
+                if (group == null) {
+                            throw new InvalidParameterValueException("Unable to find affinity group by id " + affinityGroupIdFinal);
+                }
 
                 List<AffinityGroupVMMapVO> affinityGroupVmMap = _affinityGroupVMMapDao.listByAffinityGroup(affinityGroupIdFinal);
-        if (!affinityGroupVmMap.isEmpty()) {
-            SearchBuilder<AffinityGroupVMMapVO> listByAffinityGroup = _affinityGroupVMMapDao.createSearchBuilder();
-                    listByAffinityGroup.and("affinityGroupId", listByAffinityGroup.entity().getAffinityGroupId(), SearchCriteria.Op.EQ);
-            listByAffinityGroup.done();
-            SearchCriteria<AffinityGroupVMMapVO> sc = listByAffinityGroup.create();
-                    sc.setParameters("affinityGroupId", affinityGroupIdFinal);
-
-            _affinityGroupVMMapDao.lockRows(sc, null, true);
-            _affinityGroupVMMapDao.remove(sc);
-        }
+                if (!affinityGroupVmMap.isEmpty()) {
+                    SearchBuilder<AffinityGroupVMMapVO> listByAffinityGroup = _affinityGroupVMMapDao.createSearchBuilder();
+                            listByAffinityGroup.and("affinityGroupId", listByAffinityGroup.entity().getAffinityGroupId(), SearchCriteria.Op.EQ);
+                    listByAffinityGroup.done();
+                    SearchCriteria<AffinityGroupVMMapVO> sc = listByAffinityGroup.create();
+                            sc.setParameters("affinityGroupId", affinityGroupIdFinal);
+        
+                    _affinityGroupVMMapDao.lockRows(sc, null, true);
+                    _affinityGroupVMMapDao.remove(sc);
+                }
 
-        // call processor to handle the group delete
-        AffinityGroupProcessor processor = getAffinityGroupProcessorForType(group.getType());
-        if (processor != null) {
-            processor.handleDeleteGroup(group);
-        }
+                // call processor to handle the group delete
+                AffinityGroupProcessor processor = getAffinityGroupProcessorForType(group.getType());
+                if (processor != null) {
+                    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);
+                }
             }
         });