2010-12-01 12 views
1

J'essaye de créer un noeud en utilisant les liaisons python qui sont fournies avec la distribution de zookeeper (src/contrib/zkpython /). Utilisation de zookeeper-3.3.1. Le pydoc for create indique que si la liste de contrôle d'accès est NULL, ce noeud héritera de la liste de contrôle d'accès de ses parents, mais la définition de ce paramètre sur None entraîne une exception de liste de contrôle d'accès non valide.Y a-t-il un moyen de donner une NULL ACL à un noeud Zookeeper via python-bindings?

J'ai jeté un oeil à parse_acls dans zookeeper.c et il semble être en conflit avec le pydoc mais je n'ai pas beaucoup d'expérience avec py c api.

Si je ne peux pas définir cette liste de contrôle d'accès à null existe-t-il une autre liste de contrôle d'accès qui l'héritera d'un parent?

Répondre

2

J'ai eu le même problème et je n'ai trouvé aucune solution. Comme solution de contournement, vous pouvez ajouter une étape supplémentaire. Exemple:

import zookeeper as zk 
parent_path = "/" 
stat, acl = zk.get_acl(zoohandle, parent_path) 
ret = zk.create(zoohandle, node_path, "", acl, 0) 

outre Conseil: Dans zookeeper-3.3.1 le zk.get() ne renvoie jusqu'à 512 octets de données de noeud. Cela devrait être corrigé dans la prochaine version (3.3.3).

+0

Je vais vérifier cette méthode. J'expérimente avec ZOO_CREATOR_ALL_ACL; // (ZOO_PERM_ALL, ZOO_AUTH_IDS). Ma principale préoccupation est de savoir si je devais changer le mot de passe d'un utilisateur authentifié, je veux éviter d'avoir à marcher tous les nœuds pour mettre à jour le résumé. –