Repository: atlas Updated Branches: refs/heads/master d55405955 -> b03c24840
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/b03c2484 Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/b03c2484 Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/b03c2484 Branch: refs/heads/master Commit: b03c248405b51a905a117ab60ab533c3ce892539 Parents: d554059 Author: nixonrodrigues <[email protected]> Authored: Thu Apr 19 16:07:40 2018 +0530 Committer: nixonrodrigues <[email protected]> Committed: Fri Apr 20 00:19:35 2018 +0530 ---------------------------------------------------------------------- .../atlas/web/service/ActiveInstanceState.java | 18 +++++++++++++++--- .../web/service/ActiveInstanceStateTest.java | 6 ++++-- 2 files changed, 19 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/atlas/blob/b03c2484/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 ea8b738..1028265 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,11 +24,13 @@ 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; @@ -37,6 +39,7 @@ import org.springframework.stereotype.Component; import javax.inject.Inject; import java.nio.charset.Charset; import java.util.Arrays; +import java.util.ArrayList; import java.util.List; /** @@ -91,9 +94,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/b03c2484/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 25f39f2..713be8d 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);
