Files
2026-07-13 13:22:34 +08:00

67 lines
2.2 KiB
Python

import warnings
from mlflow.tracking.request_auth.kubernetes_request_auth_provider import (
KubernetesNamespacedRequestAuthProvider,
KubernetesRequestAuthProvider,
)
from mlflow.utils.plugins import get_entry_points
REQUEST_AUTH_PROVIDER_ENTRYPOINT = "mlflow.request_auth_provider"
class RequestAuthProviderRegistry:
def __init__(self):
self._registry = []
def register(self, request_auth_provider):
self._registry.append(request_auth_provider())
def register_entrypoints(self):
for entrypoint in get_entry_points(REQUEST_AUTH_PROVIDER_ENTRYPOINT):
try:
self.register(entrypoint.load())
except (AttributeError, ImportError) as exc:
warnings.warn(
'Failure attempting to register request auth provider "{}": {}'.format(
entrypoint.name, str(exc)
),
stacklevel=2,
)
def __iter__(self):
return iter(self._registry)
_request_auth_provider_registry = RequestAuthProviderRegistry()
_request_auth_provider_registry.register(KubernetesRequestAuthProvider)
_request_auth_provider_registry.register(KubernetesNamespacedRequestAuthProvider)
_request_auth_provider_registry.register_entrypoints()
def fetch_auth(request_auth):
"""
Find the request auth from registered providers based on the auth provider's name.
The auth provider's name can be provided through environment variable `MLFLOW_TRACKING_AUTH`.
This function iterates through all request auth providers in the registry. Additional context
providers can be registered as described in
:py:class:`mlflow.tracking.request_auth.RequestAuthProvider`.
Args:
request_auth: The name of request auth provider.
Returns:
The auth object.
"""
for auth_provider in _request_auth_provider_registry:
if auth_provider.get_name() == request_auth:
return auth_provider.get_auth()
warnings.warn(
f"Could not find any registered plugin for {request_auth}. "
"No authentication header will be added. Please check your "
"provider documentation for installing the right plugin or "
"correct provider name."
)