66 lines
1.2 KiB
Python
66 lines
1.2 KiB
Python
from dataclasses import dataclass
|
|
|
|
from mlflow import MlflowException
|
|
from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
|
|
|
|
|
|
@dataclass
|
|
class Permission:
|
|
name: str
|
|
can_read: bool
|
|
can_update: bool
|
|
can_delete: bool
|
|
can_manage: bool
|
|
|
|
|
|
READ = Permission(
|
|
name="READ",
|
|
can_read=True,
|
|
can_update=False,
|
|
can_delete=False,
|
|
can_manage=False,
|
|
)
|
|
|
|
EDIT = Permission(
|
|
name="EDIT",
|
|
can_read=True,
|
|
can_update=True,
|
|
can_delete=False,
|
|
can_manage=False,
|
|
)
|
|
|
|
MANAGE = Permission(
|
|
name="MANAGE",
|
|
can_read=True,
|
|
can_update=True,
|
|
can_delete=True,
|
|
can_manage=True,
|
|
)
|
|
|
|
NO_PERMISSIONS = Permission(
|
|
name="NO_PERMISSIONS",
|
|
can_read=False,
|
|
can_update=False,
|
|
can_delete=False,
|
|
can_manage=False,
|
|
)
|
|
|
|
ALL_PERMISSIONS = {
|
|
READ.name: READ,
|
|
EDIT.name: EDIT,
|
|
MANAGE.name: MANAGE,
|
|
NO_PERMISSIONS.name: NO_PERMISSIONS,
|
|
}
|
|
|
|
|
|
def get_permission(permission: str) -> Permission:
|
|
return ALL_PERMISSIONS[permission]
|
|
|
|
|
|
def _validate_permission(permission: str):
|
|
if permission not in ALL_PERMISSIONS:
|
|
raise MlflowException(
|
|
f"Invalid permission '{permission}'. Valid permissions are: {tuple(ALL_PERMISSIONS)}",
|
|
INVALID_PARAMETER_VALUE,
|
|
)
|