Skip to content

Commit 9a14037

Browse files
commands: add a function to fetch a perms handler by config
Given a PermissionsConfig we need a function that will get the most appropriate permissions handler object. Signed-off-by: John Mulligan <[email protected]>
1 parent 3ae8835 commit 9a14037

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

sambacc/commands/cli.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
from sambacc import config
2525
from sambacc import leader
26+
from sambacc import permissions
2627
from sambacc import simple_waiter
2728

2829
_INOTIFY_OK = True
@@ -153,5 +154,34 @@ def best_leader_locator(
153154
return ctdb.CLILeaderLocator()
154155

155156

157+
def perms_handler(
158+
config: config.PermissionsConfig,
159+
path: str,
160+
) -> permissions.PermissionsHandler:
161+
"""Fetch and instantiate the appropriate permissions handler for the given
162+
configuration.
163+
"""
164+
if config.method == "none":
165+
_logger.info("Using no-op permissions handler")
166+
return permissions.NoopPermsHandler(
167+
path, config.status_xattr, options=config.options
168+
)
169+
if config.method == "initialize-share-perms":
170+
_logger.info("Using initializing posix permissions handler")
171+
return permissions.InitPosixPermsHandler(
172+
path, config.status_xattr, options=config.options
173+
)
174+
if config.method == "always-share-perms":
175+
_logger.info("Using always-setting posix permissions handler")
176+
return permissions.AlwaysPosixPermsHandler(
177+
path, config.status_xattr, options=config.options
178+
)
179+
# fall back to init perms handler
180+
_logger.info("Using initializing posix permissions handler")
181+
return permissions.InitPosixPermsHandler(
182+
path, config.status_xattr, options=config.options
183+
)
184+
185+
156186
commands = CommandBuilder()
157187
setup_steps = CommandBuilder()

0 commit comments

Comments
 (0)