mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 10:49:00 +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
	 Chris Collins
						Chris Collins