Source code for airflow.providers.keycloak.auth_manager.cli.utils

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
from __future__ import annotations

import functools
from collections.abc import Callable
from typing import Any


[docs] def dry_run_message_wrap(func: Callable) -> Callable: """Wrap CLI commands to display dry-run messages.""" @functools.wraps(func) def wrapper(*args, **kwargs): # detect args object (first positional or keyword) if args: arg_obj = args[0] else: arg_obj = kwargs.get("args") dry_run = getattr(arg_obj, "dry_run", False) if dry_run: print( "Performing dry run. " "It will check the connection to Keycloak but won't create any resources.\n" ) result = func(*args, **kwargs) if dry_run: print("Dry run completed.") return result return wrapper
[docs] def dry_run_preview(preview_func: Callable[..., None]) -> Callable: """ Handle dry-run preview logic for create functions. When dry_run=True, executes the preview function and returns early. Otherwise, proceeds with normal execution without passing dry_run to the decorated function. :param preview_func: Function to call for previewing what would be created. Should accept the same arguments as the decorated function. """ def decorator(func: Callable) -> Callable: @functools.wraps(func) def wrapper(*args, **kwargs) -> Any: # Extract dry_run from kwargs (default to False if not provided) dry_run = kwargs.pop("_dry_run", False) if dry_run: # Pass args and remaining kwargs to preview function preview_func(*args, **kwargs) return None # Pass args and remaining kwargs to actual function return func(*args, **kwargs) return wrapper return decorator

Was this entry helpful?