| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | import uuid | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | from datetime import datetime, timezone | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | from datahub.api.entities.datajob import DataFlow, DataJob | 
					
						
							|  |  |  | from datahub.api.entities.dataprocess.dataprocess_instance import ( | 
					
						
							|  |  |  |     DataProcessInstance, | 
					
						
							|  |  |  |     InstanceRunResult, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | from datahub.emitter.rest_emitter import DatahubRestEmitter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | emitter = DatahubRestEmitter("http://localhost:8080") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-16 02:36:28 +05:30
										 |  |  | jobFlow = DataFlow(env="prod", orchestrator="airflow", id="flow_api_simple") | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | jobFlow.emit(emitter) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Flowurn as constructor | 
					
						
							|  |  |  | dataJob = DataJob(flow_urn=jobFlow.urn, id="job1", name="My Job 1") | 
					
						
							|  |  |  | dataJob.properties["custom_properties"] = "test" | 
					
						
							|  |  |  | dataJob.emit(emitter) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dataJob2 = DataJob(flow_urn=jobFlow.urn, id="job2", name="My Job 2") | 
					
						
							|  |  |  | dataJob2.upstream_urns.append(dataJob.urn) | 
					
						
							|  |  |  | dataJob2.tags.add("TestTag") | 
					
						
							|  |  |  | dataJob2.owners.add("test@test.com") | 
					
						
							|  |  |  | dataJob2.emit(emitter) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dataJob3 = DataJob(flow_urn=jobFlow.urn, id="job3", name="My Job 3") | 
					
						
							|  |  |  | dataJob3.upstream_urns.append(dataJob.urn) | 
					
						
							|  |  |  | dataJob3.emit(emitter) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dataJob4 = DataJob(flow_urn=jobFlow.urn, id="job4", name="My Job 4") | 
					
						
							|  |  |  | dataJob4.upstream_urns.append(dataJob2.urn) | 
					
						
							|  |  |  | dataJob4.upstream_urns.append(dataJob3.urn) | 
					
						
							|  |  |  | dataJob4.emit(emitter) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | jobFlowRun = DataProcessInstance.from_dataflow( | 
					
						
							|  |  |  |     dataflow=jobFlow, id=f"{jobFlow.id}-{uuid.uuid4()}" | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | jobFlowRun.emit_process_start( | 
					
						
							|  |  |  |     emitter, int(datetime.now(timezone.utc).timestamp() * 1000) | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | jobRun = DataProcessInstance.from_datajob( | 
					
						
							|  |  |  |     datajob=dataJob, id=f"{jobFlow.id}-{uuid.uuid4()}" | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | jobRun.emit_process_start(emitter, int(datetime.now(timezone.utc).timestamp() * 1000)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | jobRun.emit_process_end( | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  |     emitter, | 
					
						
							|  |  |  |     int(datetime.now(timezone.utc).timestamp() * 1000), | 
					
						
							|  |  |  |     result=InstanceRunResult.SUCCESS, | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | job2Run = DataProcessInstance.from_datajob( | 
					
						
							|  |  |  |     datajob=dataJob2, id=f"{jobFlow.id}-{uuid.uuid4()}" | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | job2Run.emit_process_start(emitter, int(datetime.now(timezone.utc).timestamp() * 1000)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | job2Run.emit_process_end( | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  |     emitter, | 
					
						
							|  |  |  |     int(datetime.now(timezone.utc).timestamp() * 1000), | 
					
						
							|  |  |  |     result=InstanceRunResult.SUCCESS, | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | job3Run = DataProcessInstance.from_datajob( | 
					
						
							|  |  |  |     datajob=dataJob3, id=f"{jobFlow.id}-{uuid.uuid4()}" | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | job3Run.emit_process_start(emitter, int(datetime.now(timezone.utc).timestamp() * 1000)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | job3Run.emit_process_end( | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  |     emitter, | 
					
						
							|  |  |  |     int(datetime.now(timezone.utc).timestamp() * 1000), | 
					
						
							|  |  |  |     result=InstanceRunResult.SUCCESS, | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | job4Run = DataProcessInstance.from_datajob( | 
					
						
							|  |  |  |     datajob=dataJob4, id=f"{jobFlow.id}-{uuid.uuid4()}" | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | job4Run.emit_process_start(emitter, int(datetime.now(timezone.utc).timestamp() * 1000)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | job4Run.emit_process_end( | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  |     emitter, | 
					
						
							|  |  |  |     int(datetime.now(timezone.utc).timestamp() * 1000), | 
					
						
							|  |  |  |     result=InstanceRunResult.SUCCESS, | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | jobFlowRun.emit_process_end( | 
					
						
							| 
									
										
										
										
											2022-07-06 20:39:27 +10:00
										 |  |  |     emitter, | 
					
						
							|  |  |  |     int(datetime.now(timezone.utc).timestamp() * 1000), | 
					
						
							|  |  |  |     result=InstanceRunResult.SUCCESS, | 
					
						
							| 
									
										
										
										
											2022-04-13 08:19:39 +02:00
										 |  |  | ) |