Fix Path cannot be null error in creating ACL Policy.

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

Branch: refs/heads/rbac
Commit: 5854c0bbeb45add9ac52de370eea4464360aebc6
Parents: 97ec3f6
Author: Min Chen <min.c...@citrix.com>
Authored: Tue Feb 11 22:45:57 2014 -0800
Committer: Min Chen <min.c...@citrix.com>
Committed: Tue Feb 11 22:45:57 2014 -0800

----------------------------------------------------------------------
 .../cloudstack/acl/api/AclApiServiceImpl.java   | 20 ++++++++++++--------
 .../apache/cloudstack/iam/api/IAMService.java   |  2 +-
 .../cloudstack/iam/server/IAMServiceImpl.java   |  3 ++-
 3 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5854c0bb/services/iam/plugin/src/org/apache/cloudstack/acl/api/AclApiServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/services/iam/plugin/src/org/apache/cloudstack/acl/api/AclApiServiceImpl.java 
b/services/iam/plugin/src/org/apache/cloudstack/acl/api/AclApiServiceImpl.java
index 29aa258..da655b8 100644
--- 
a/services/iam/plugin/src/org/apache/cloudstack/acl/api/AclApiServiceImpl.java
+++ 
b/services/iam/plugin/src/org/apache/cloudstack/acl/api/AclApiServiceImpl.java
@@ -273,15 +273,14 @@ public class AclApiServiceImpl extends ManagerBase 
implements AclApiService, Man
     private void createPolicyAndAddToDomainGroup(String policyName, String 
description, String entityType,
             Long entityId, String action, AccessType accessType, Long 
domainId, Boolean recursive) {
 
-        AclPolicy policy = _iamSrv.createAclPolicy(policyName, description, 
null);
-       _iamSrv.addAclPermissionToAclPolicy(policy.getId(), entityType, 
PermissionScope.RESOURCE.toString(),
-               entityId, action, accessType.toString(), Permission.Allow, 
recursive);
-
-       List<Long> policyList = new ArrayList<Long>();
-       policyList.add(new Long(policy.getId()));
-
        Domain domain = _domainDao.findById(domainId);
        if (domain != null) {
+            AclPolicy policy = _iamSrv.createAclPolicy(policyName, 
description, null, domain.getPath());
+            _iamSrv.addAclPermissionToAclPolicy(policy.getId(), entityType, 
PermissionScope.RESOURCE.toString(),
+                    entityId, action, accessType.toString(), Permission.Allow, 
recursive);
+            List<Long> policyList = new ArrayList<Long>();
+            policyList.add(new Long(policy.getId()));
+
            List<AclGroup> domainGroups = listDomainGroup(domain);
            if (domainGroups != null) {
                for (AclGroup group : domainGroups) {
@@ -352,7 +351,12 @@ public class AclApiServiceImpl extends ManagerBase 
implements AclApiService, Man
     @Override
     @ActionEvent(eventType = EventTypes.EVENT_ACL_POLICY_CREATE, 
eventDescription = "Creating Acl Policy", create = true)
     public AclPolicy createAclPolicy(Account caller, final String 
aclPolicyName, final String description, final Long parentPolicyId) {
-        return _iamSrv.createAclPolicy(aclPolicyName, description, 
parentPolicyId);
+        Long domainId = caller.getDomainId();
+        Domain callerDomain = _domainDao.findById(domainId);
+        if (callerDomain == null) {
+            throw new InvalidParameterValueException("Caller does not have a 
domain");
+        }
+        return _iamSrv.createAclPolicy(aclPolicyName, description, 
parentPolicyId, callerDomain.getPath());
     }
 
     @DB

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5854c0bb/services/iam/server/src/org/apache/cloudstack/iam/api/IAMService.java
----------------------------------------------------------------------
diff --git 
a/services/iam/server/src/org/apache/cloudstack/iam/api/IAMService.java 
b/services/iam/server/src/org/apache/cloudstack/iam/api/IAMService.java
index 2b26e72..3957b62 100644
--- a/services/iam/server/src/org/apache/cloudstack/iam/api/IAMService.java
+++ b/services/iam/server/src/org/apache/cloudstack/iam/api/IAMService.java
@@ -40,7 +40,7 @@ public interface IAMService {
     Pair<List<AclGroup>, Integer> listAclGroups(Long aclGroupId, String 
aclGroupName, String path, Long startIndex, Long pageSize);
 
     /* ACL Policy related interfaces */
-    AclPolicy createAclPolicy(String aclPolicyName, String description, Long 
parentPolicyId);
+    AclPolicy createAclPolicy(String aclPolicyName, String description, Long 
parentPolicyId, String path);
 
     boolean deleteAclPolicy(long aclPolicyId);
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5854c0bb/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java 
b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
index 84ed545..1398889 100644
--- 
a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
+++ 
b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java
@@ -294,7 +294,7 @@ public class IAMServiceImpl extends ManagerBase implements 
IAMService, Manager {
 
     @DB
     @Override
-    public AclPolicy createAclPolicy(final String aclPolicyName, final String 
description, final Long parentPolicyId) {
+    public AclPolicy createAclPolicy(final String aclPolicyName, final String 
description, final Long parentPolicyId, final String path) {
 
         // check if the policy is already existing
         AclPolicy ro = _aclPolicyDao.findByName(aclPolicyName);
@@ -308,6 +308,7 @@ public class IAMServiceImpl extends ManagerBase implements 
IAMService, Manager {
             @Override
             public AclPolicy doInTransaction(TransactionStatus status) {
                 AclPolicyVO rvo = new AclPolicyVO(aclPolicyName, description);
+                rvo.setPath(path);
 
                 AclPolicy role = _aclPolicyDao.persist(rvo);
                 if (parentPolicyId != null) {

Reply via email to