summaryrefslogtreecommitdiff
path: root/kazoo/security.py
diff options
context:
space:
mode:
Diffstat (limited to 'kazoo/security.py')
-rw-r--r--kazoo/security.py72
1 files changed, 50 insertions, 22 deletions
diff --git a/kazoo/security.py b/kazoo/security.py
index e473360..6839944 100644
--- a/kazoo/security.py
+++ b/kazoo/security.py
@@ -5,10 +5,10 @@ import hashlib
# Represents a Zookeeper ID and ACL object
-Id = namedtuple('Id', 'scheme id')
+Id = namedtuple("Id", "scheme id")
-class ACL(namedtuple('ACL', 'perms id')):
+class ACL(namedtuple("ACL", "perms id")):
"""An ACL for a Zookeeper Node
An ACL object is created by using an :class:`Id` object along with
@@ -16,27 +16,31 @@ class ACL(namedtuple('ACL', 'perms id')):
:meth:`make_digest_acl` should be used to create an ACL object with
the desired scheme, id, and permissions.
"""
+
@property
def acl_list(self):
perms = []
if self.perms & Permissions.ALL == Permissions.ALL:
- perms.append('ALL')
+ perms.append("ALL")
return perms
if self.perms & Permissions.READ == Permissions.READ:
- perms.append('READ')
+ perms.append("READ")
if self.perms & Permissions.WRITE == Permissions.WRITE:
- perms.append('WRITE')
+ perms.append("WRITE")
if self.perms & Permissions.CREATE == Permissions.CREATE:
- perms.append('CREATE')
+ perms.append("CREATE")
if self.perms & Permissions.DELETE == Permissions.DELETE:
- perms.append('DELETE')
+ perms.append("DELETE")
if self.perms & Permissions.ADMIN == Permissions.ADMIN:
- perms.append('ADMIN')
+ perms.append("ADMIN")
return perms
def __repr__(self):
- return 'ACL(perms=%r, acl_list=%s, id=%r)' % (
- self.perms, self.acl_list, self.id)
+ return "ACL(perms=%r, acl_list=%s, id=%r)" % (
+ self.perms,
+ self.acl_list,
+ self.id,
+ )
class Permissions(object):
@@ -49,8 +53,8 @@ class Permissions(object):
# Shortcuts for common Ids
-ANYONE_ID_UNSAFE = Id('world', 'anyone')
-AUTH_IDS = Id('auth', '')
+ANYONE_ID_UNSAFE = Id("world", "anyone")
+AUTH_IDS = Id("auth", "")
# Shortcuts for common ACLs
OPEN_ACL_UNSAFE = [ACL(Permissions.ALL, ANYONE_ID_UNSAFE)]
@@ -70,13 +74,21 @@ def make_digest_acl_credential(username, password):
See: https://github.com/python-zk/kazoo/pull/584
"""
- credential = username.encode('utf-8') + b":" + password.encode('utf-8')
+ credential = username.encode("utf-8") + b":" + password.encode("utf-8")
cred_hash = b64encode(hashlib.sha1(credential).digest()).strip()
- return username + ":" + cred_hash.decode('utf-8')
-
-
-def make_acl(scheme, credential, read=False, write=False,
- create=False, delete=False, admin=False, all=False):
+ return username + ":" + cred_hash.decode("utf-8")
+
+
+def make_acl(
+ scheme,
+ credential,
+ read=False,
+ write=False,
+ create=False,
+ delete=False,
+ admin=False,
+ all=False,
+):
"""Given a scheme and credential, return an :class:`ACL` object
appropriate for use with Kazoo.
@@ -118,8 +130,16 @@ def make_acl(scheme, credential, read=False, write=False,
return ACL(permissions, Id(scheme, credential))
-def make_digest_acl(username, password, read=False, write=False,
- create=False, delete=False, admin=False, all=False):
+def make_digest_acl(
+ username,
+ password,
+ read=False,
+ write=False,
+ create=False,
+ delete=False,
+ admin=False,
+ all=False,
+):
"""Create a digest ACL for Zookeeper with the given permissions
This method combines :meth:`make_digest_acl_credential` and
@@ -143,5 +163,13 @@ def make_digest_acl(username, password, read=False, write=False,
"""
cred = make_digest_acl_credential(username, password)
- return make_acl("digest", cred, read=read, write=write, create=create,
- delete=delete, admin=admin, all=all)
+ return make_acl(
+ "digest",
+ cred,
+ read=read,
+ write=write,
+ create=create,
+ delete=delete,
+ admin=admin,
+ all=all,
+ )