RANGER-704: Service enable/disable should refresh the policies in the plugins

Signed-off-by: Madhan Neethiraj <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/66b77883
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/66b77883
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/66b77883

Branch: refs/heads/tag-policy
Commit: 66b778832907cef61d6930b0995aacb07251db9b
Parents: 6f75871
Author: Abhay Kulkarni <[email protected]>
Authored: Wed Oct 21 18:57:48 2015 -0700
Committer: Madhan Neethiraj <[email protected]>
Committed: Thu Oct 22 10:59:20 2015 -0700

----------------------------------------------------------------------
 .../ranger/plugin/store/file/ServiceFileStore.java | 15 +++++++++++++--
 .../java/org/apache/ranger/biz/ServiceDBStore.java | 17 +++++++++++++++--
 2 files changed, 28 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/66b77883/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
index 751c3b3..de7bc1f 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
@@ -338,6 +338,11 @@ public class ServiceFileStore extends BaseFileStore 
implements ServiceStore {
                        }
                }
 
+               boolean hasIsEnabledChanged = 
!existing.getIsEnabled().equals(service.getIsEnabled());
+               if (hasIsEnabledChanged) {
+                       handlePolicyUpdate(service);
+               }
+
                RangerService ret = null;
 
                try {
@@ -733,9 +738,15 @@ public class ServiceFileStore extends BaseFileStore 
implements ServiceStore {
                }
 
                if(lastKnownVersion == null || service.getPolicyVersion() == 
null || lastKnownVersion.longValue() != service.getPolicyVersion().longValue()) 
{
-                       SearchFilter filter = new 
SearchFilter(SearchFilter.SERVICE_NAME, serviceName);
 
-                       List<RangerPolicy> policies = getPolicies(filter);
+                       List<RangerPolicy> policies = null;
+
+                       if (service.getIsEnabled()) {
+                               SearchFilter filter = new 
SearchFilter(SearchFilter.SERVICE_NAME, serviceName);
+                               policies = getPolicies(filter);
+                       } else {
+                               policies = new ArrayList<RangerPolicy>();
+                       }
 
                        ret = new ServicePolicies();
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/66b77883/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java 
b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 6e07e4e..e371415 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -1121,6 +1121,8 @@ public class ServiceDBStore implements ServiceStore {
 
                List<XXTrxLog> trxLogList = 
svcService.getTransactionLog(service, existing, 
RangerServiceService.OPERATION_UPDATE_CONTEXT);
 
+               boolean hasIsEnabledChanged = 
!existing.getIsenabled().equals(service.getIsEnabled());
+
                if(populateExistingBaseFields) {
                        
svcServiceWithAssignedId.setPopulateExistingBaseFields(true);
                        service = svcServiceWithAssignedId.update(service);
@@ -1130,7 +1132,17 @@ public class ServiceDBStore implements ServiceStore {
                        service.setGuid(existing.getGuid());
                        service.setVersion(existing.getVersion());
                        
service.setPolicyUpdateTime(existing.getPolicyUpdateTime());
-                       service.setPolicyVersion(existing.getPolicyVersion());
+
+                       Long policyVersion = existing.getPolicyVersion();
+
+                       if(policyVersion == null) {
+                               policyVersion = new Long(1);
+                               service.setPolicyUpdateTime(new Date());
+                       } else if (hasIsEnabledChanged) {
+                               policyVersion = new 
Long(policyVersion.longValue() + 1);
+                               service.setPolicyUpdateTime(new Date());
+                       }
+                       service.setPolicyVersion(policyVersion);
 
                        service = svcService.update(service);
                }
@@ -1645,7 +1657,8 @@ public class ServiceDBStore implements ServiceStore {
                                throw new Exception("service-def does not 
exist. id=" + serviceDbObj.getType());
                        }
 
-                       List<RangerPolicy> policies = 
getServicePolicies(serviceName, null);
+                       List<RangerPolicy> policies = 
serviceDbObj.getIsenabled() ? getServicePolicies(serviceName, null)
+                                       : new ArrayList<RangerPolicy>();
 
                        ret = new ServicePolicies();
 

Reply via email to