Repository: atlas Updated Branches: refs/heads/branch-0.8 1a02dfe56 -> 77a94d2e6
ATLAS-2587:- Set read ACL for /apache_atlas/active_server_info znode in HA for Knox proxy to read. Project: http://git-wip-us.apache.org/repos/asf/atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/77a94d2e Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/77a94d2e Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/77a94d2e Branch: refs/heads/branch-0.8 Commit: 77a94d2e63579651192788a74072733d69f61ce6 Parents: 1a02dfe Author: nixonrodrigues <[email protected]> Authored: Thu Apr 19 16:07:40 2018 +0530 Committer: nixonrodrigues <[email protected]> Committed: Fri Apr 20 00:16:53 2018 +0530 ---------------------------------------------------------------------- .../atlas/web/service/ActiveInstanceState.java | 21 +++++++++++++++----- .../web/service/ActiveInstanceStateTest.java | 6 ++++-- 2 files changed, 20 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/atlas/blob/77a94d2e/webapp/src/main/java/org/apache/atlas/web/service/ActiveInstanceState.java ---------------------------------------------------------------------- diff --git a/webapp/src/main/java/org/apache/atlas/web/service/ActiveInstanceState.java b/webapp/src/main/java/org/apache/atlas/web/service/ActiveInstanceState.java index c6b4a6f..f417dcd 100644 --- a/webapp/src/main/java/org/apache/atlas/web/service/ActiveInstanceState.java +++ b/webapp/src/main/java/org/apache/atlas/web/service/ActiveInstanceState.java @@ -24,19 +24,21 @@ import org.apache.atlas.AtlasException; import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.ha.HAConfiguration; import org.apache.commons.configuration.Configuration; +import org.apache.commons.lang.StringUtils; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.recipes.locks.InterProcessReadWriteLock; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.data.ACL; +import org.apache.zookeeper.data.Id; import org.apache.zookeeper.data.Stat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import scala.actors.threadpool.Arrays; - import javax.inject.Inject; import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.ArrayList; import java.util.List; /** @@ -91,9 +93,18 @@ public class ActiveInstanceState { HAConfiguration.ZookeeperProperties zookeeperProperties = HAConfiguration.getZookeeperProperties(configuration); String atlasServerAddress = HAConfiguration.getBoundAddressForId(configuration, serverId); - List<ACL> acls = Arrays.asList( - new ACL[]{AtlasZookeeperSecurityProperties.parseAcl(zookeeperProperties.getAcl(), - ZooDefs.Ids.OPEN_ACL_UNSAFE.get(0))}); + + List<ACL> acls = new ArrayList<ACL>(); + ACL parsedACL = AtlasZookeeperSecurityProperties.parseAcl(zookeeperProperties.getAcl(), + ZooDefs.Ids.OPEN_ACL_UNSAFE.get(0)); + acls.add(parsedACL); + + //adding world read permission + if (StringUtils.isNotEmpty(zookeeperProperties.getAcl())) { + ACL worldReadPermissionACL = new ACL(ZooDefs.Perms.READ, new Id("world", "anyone")); + acls.add(worldReadPermissionACL); + } + Stat serverInfo = client.checkExists().forPath(getZnodePath(zookeeperProperties)); if (serverInfo == null) { client.create(). http://git-wip-us.apache.org/repos/asf/atlas/blob/77a94d2e/webapp/src/test/java/org/apache/atlas/web/service/ActiveInstanceStateTest.java ---------------------------------------------------------------------- diff --git a/webapp/src/test/java/org/apache/atlas/web/service/ActiveInstanceStateTest.java b/webapp/src/test/java/org/apache/atlas/web/service/ActiveInstanceStateTest.java index 7ad2f76..ca27150 100644 --- a/webapp/src/test/java/org/apache/atlas/web/service/ActiveInstanceStateTest.java +++ b/webapp/src/test/java/org/apache/atlas/web/service/ActiveInstanceStateTest.java @@ -114,9 +114,11 @@ public class ActiveInstanceStateTest { CreateBuilder createBuilder = mock(CreateBuilder.class); when(curatorFramework.create()).thenReturn(createBuilder); when(createBuilder.withMode(CreateMode.EPHEMERAL)).thenReturn(createBuilder); - ACL expectedAcl = new ACL(ZooDefs.Perms.ALL, new Id("sasl", "[email protected]")); + ACL expectedAcl = new ACL(ZooDefs.Perms.ALL, new Id("sasl", "[email protected]")); + ACL expectedAcl1 = new ACL(ZooDefs.Perms.READ, new Id("world", "anyone")); when(createBuilder. - withACL(Arrays.asList(new ACL[]{expectedAcl}))).thenReturn(createBuilder); + withACL(Arrays.asList(new ACL[]{expectedAcl,expectedAcl1}))).thenReturn(createBuilder); + SetDataBuilder setDataBuilder = mock(SetDataBuilder.class); when(curatorFramework.setData()).thenReturn(setDataBuilder);
