mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-26 02:50:01 +00:00
feat(cli): add actors to forms yaml API (#10683)
This commit is contained in:
parent
1d4977cbb7
commit
22fac3a811
@ -23,6 +23,7 @@ from datahub.emitter.mce_builder import (
|
|||||||
from datahub.emitter.mcp import MetadataChangeProposalWrapper
|
from datahub.emitter.mcp import MetadataChangeProposalWrapper
|
||||||
from datahub.ingestion.graph.client import DataHubGraph, get_default_graph
|
from datahub.ingestion.graph.client import DataHubGraph, get_default_graph
|
||||||
from datahub.metadata.schema_classes import (
|
from datahub.metadata.schema_classes import (
|
||||||
|
FormActorAssignmentClass,
|
||||||
FormInfoClass,
|
FormInfoClass,
|
||||||
FormPromptClass,
|
FormPromptClass,
|
||||||
OwnerClass,
|
OwnerClass,
|
||||||
@ -82,6 +83,12 @@ class Entities(ConfigModel):
|
|||||||
filters: Optional[Filters] = None
|
filters: Optional[Filters] = None
|
||||||
|
|
||||||
|
|
||||||
|
class Actors(ConfigModel):
|
||||||
|
owners: Optional[bool] = None
|
||||||
|
users: Optional[List[str]] = None # can be user IDs or urns
|
||||||
|
groups: Optional[List[str]] = None # can be group IDs or urns
|
||||||
|
|
||||||
|
|
||||||
class Forms(ConfigModel):
|
class Forms(ConfigModel):
|
||||||
id: Optional[str] = None
|
id: Optional[str] = None
|
||||||
urn: Optional[str] = None
|
urn: Optional[str] = None
|
||||||
@ -93,6 +100,7 @@ class Forms(ConfigModel):
|
|||||||
entities: Optional[Entities] = None
|
entities: Optional[Entities] = None
|
||||||
owners: Optional[List[str]] = None # can be user IDs or urns
|
owners: Optional[List[str]] = None # can be user IDs or urns
|
||||||
group_owners: Optional[List[str]] = None # can be group IDs or urns
|
group_owners: Optional[List[str]] = None # can be group IDs or urns
|
||||||
|
actors: Optional[Actors] = None
|
||||||
|
|
||||||
@validator("urn", pre=True, always=True)
|
@validator("urn", pre=True, always=True)
|
||||||
def urn_must_be_present(cls, v, values):
|
def urn_must_be_present(cls, v, values):
|
||||||
@ -124,6 +132,7 @@ class Forms(ConfigModel):
|
|||||||
description=form.description,
|
description=form.description,
|
||||||
prompts=form.validate_prompts(emitter),
|
prompts=form.validate_prompts(emitter),
|
||||||
type=form.type,
|
type=form.type,
|
||||||
|
actors=form.create_form_actors(form.actors),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
emitter.emit_mcp(mcp)
|
emitter.emit_mcp(mcp)
|
||||||
@ -201,6 +210,24 @@ class Forms(ConfigModel):
|
|||||||
|
|
||||||
return prompts
|
return prompts
|
||||||
|
|
||||||
|
def create_form_actors(
|
||||||
|
self, actors: Optional[Actors] = None
|
||||||
|
) -> Union[None, FormActorAssignmentClass]:
|
||||||
|
if actors is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
users = None
|
||||||
|
if actors.users is not None:
|
||||||
|
users = Forms.format_users(actors.users)
|
||||||
|
|
||||||
|
groups = None
|
||||||
|
if actors.groups is not None:
|
||||||
|
groups = Forms.format_groups(actors.groups)
|
||||||
|
|
||||||
|
return FormActorAssignmentClass(
|
||||||
|
owners=actors.owners, users=users, groups=groups
|
||||||
|
)
|
||||||
|
|
||||||
def upload_entities_for_form(self, emitter: DataHubGraph) -> Union[None, Exception]:
|
def upload_entities_for_form(self, emitter: DataHubGraph) -> Union[None, Exception]:
|
||||||
if self.entities and self.entities.urns:
|
if self.entities and self.entities.urns:
|
||||||
formatted_entity_urns = ", ".join(
|
formatted_entity_urns = ", ".join(
|
||||||
@ -260,9 +287,9 @@ class Forms(ConfigModel):
|
|||||||
def add_owners(self, emitter: DataHubGraph) -> Union[None, Exception]:
|
def add_owners(self, emitter: DataHubGraph) -> Union[None, Exception]:
|
||||||
owner_urns: List[str] = []
|
owner_urns: List[str] = []
|
||||||
if self.owners:
|
if self.owners:
|
||||||
owner_urns += Forms.format_owners(self.owners)
|
owner_urns += Forms.format_users(self.owners)
|
||||||
if self.group_owners:
|
if self.group_owners:
|
||||||
owner_urns += Forms.format_group_owners(self.group_owners)
|
owner_urns += Forms.format_groups(self.group_owners)
|
||||||
|
|
||||||
ownership = OwnershipClass(
|
ownership = OwnershipClass(
|
||||||
owners=[
|
owners=[
|
||||||
@ -326,28 +353,28 @@ class Forms(ConfigModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def format_owners(owners: List[str]) -> List[str]:
|
def format_users(users: List[str]) -> List[str]:
|
||||||
formatted_owners: List[str] = []
|
formatted_users: List[str] = []
|
||||||
|
|
||||||
for owner in owners:
|
for user in users:
|
||||||
if owner.startswith("urn:li:"):
|
if user.startswith("urn:li:"):
|
||||||
formatted_owners.append(owner)
|
formatted_users.append(user)
|
||||||
else:
|
else:
|
||||||
formatted_owners.append(make_user_urn(owner))
|
formatted_users.append(make_user_urn(user))
|
||||||
|
|
||||||
return formatted_owners
|
return formatted_users
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def format_group_owners(owners: List[str]) -> List[str]:
|
def format_groups(groups: List[str]) -> List[str]:
|
||||||
formatted_owners: List[str] = []
|
formatted_groups: List[str] = []
|
||||||
|
|
||||||
for owner in owners:
|
for group in groups:
|
||||||
if owner.startswith("urn:li:"):
|
if group.startswith("urn:li:"):
|
||||||
formatted_owners.append(owner)
|
formatted_groups.append(group)
|
||||||
else:
|
else:
|
||||||
formatted_owners.append(make_group_urn(owner))
|
formatted_groups.append(make_group_urn(group))
|
||||||
|
|
||||||
return formatted_owners
|
return formatted_groups
|
||||||
|
|
||||||
def to_yaml(
|
def to_yaml(
|
||||||
self,
|
self,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user