Source code for operators.superset.disable_superset_user
from typing import Any, Dict, Optional
from airflow.exceptions import AirflowException
from airflow.models import BaseOperator
from airflow.utils.decorators import apply_defaults
[docs]
class DisableSupersetUserOperator(BaseOperator):
"""Disable a Superset user (sets active=False) via the Superset REST API.
:param username: The Superset username to disable.
:type username: str
:param conn_id: Airflow connection id pointing at the Superset instance.
Defaults to ``superset_default``.
:type conn_id: str
:param base_url: Optional full URL override for the Superset API (e.g.
``"https://dap-tx.bead.example.com"``). When provided, overrides the
connection's host/schema.
:type base_url: str
:param timeout: HTTP request timeout in seconds.
:type timeout: int
"""
template_fields = ("username", "conn_id", "base_url")
ui_color = "#fce4ec"
@apply_defaults
def __init__(
self,
username: str,
conn_id: str = "superset_default",
base_url: Optional[str] = None,
timeout: int = 30,
*args,
**kwargs,
):
super().__init__(*args, **kwargs)
self.username = username
self.conn_id = conn_id
self.base_url = base_url
self.timeout = timeout
[docs]
def execute(self, context) -> Dict[str, Any]:
from hooks.superset_hook import SupersetHook
if not self.username:
raise AirflowException("Missing required field: username")
hook = SupersetHook(
conn_id=self.conn_id, base_url=self.base_url, timeout=self.timeout
)
self.log.info("Disabling Superset user '%s'", self.username)
result = hook.disable_user(self.username)
self.log.info("Disable user result: %s", result)
return result