Нужно рекурсивно обновлять списки ACL узлов Zookeeper - PullRequest
0 голосов
/ 22 января 2019

У меня есть несколько zknodes со свойствами ACL. Согласно новому требованию, мне нужно рекурсивно обновлять ACL для нового пользователя.

Я использую zookeeper 3.4.3 и apache curator 4.0.1.

Я пытался использовать фреймворк Apache Curator для того же самого, но, похоже, API не подвергается рекурсивному обновлению ACL.

Существует отдельный поток для того же, но я не могу понять, как этот скрипт Python рекурсивно изменяет ACL. обход zkkedes в zookeeper для обновления ACL

Ниже приведен мой код, но я не вижу ни одного API, доступного для обновления ACL рекурсивно:

public class App
{
private static String zkAdminUser = "zookeeper";
private static String zkAdminPassword = "********";
private static String theServers = "**.**.***.***:10181,**.**.***.***:10181,**.**.***.***:10181";

public static void main(String[] args)
{

    CuratorFrameworkFactory.Builder builder =
            CuratorFrameworkFactory.builder().connectString(theServers).retryPolicy(new ExponentialBackoffRetry(30000, 20)).connectionTimeoutMs(30000)
                    .sessionTimeoutMs(10000);

    builder = builder.aclProvider(new ACLProvider()
  {
  @Override
  public List<ACL> getDefaultAcl()
  {
      return ZooDefs.Ids.CREATOR_ALL_ACL;
  }

@Override
public List<ACL> getAclForPath(String path)
{
    // TODO Auto-generated method stub
    return null;
}
  }
    );

    if (zkAdminUser != null && zkAdminPassword != null)
    {
        String authenticationString = zkAdminUser + ":" + zkAdminPassword;
        builder.authorization("ztpasswd", authenticationString.getBytes());

//            .aclProvider(new ACLProvider()
//            {
//                @Override
//                public List<ACL> getDefaultAcl()
//                {
//                    return ZooDefs.Ids.CREATOR_ALL_ACL;
//                }
//
//                @Override
//                public List<ACL> getAclForPath(String path)
//                {
//                    return ZooDefs.Ids.CREATOR_ALL_ACL;
//                }
//            });

    }
    CuratorFramework client = builder.build();
    client.start();
    try
    {
        client.create().withMode(CreateMode.PERSISTENT).forPath("/beans/demo");
    }
    catch (Exception e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally 
    {
        client.close();
    }
}
}
...