openmetadata-managed-apis 1.7.0.1__tar.gz → 1.7.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/PKG-INFO +9 -5
  2. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/README.md +8 -4
  3. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/trigger.py +8 -3
  4. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/utils.py +10 -0
  5. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/deploy.py +2 -0
  6. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/trigger.py +5 -2
  7. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/application.py +12 -6
  8. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/auto_classification.py +9 -7
  9. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/common.py +27 -6
  10. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/dbt.py +1 -1
  11. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/profiler.py +9 -7
  12. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/test_suite.py +9 -7
  13. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/usage.py +5 -6
  14. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis.egg-info/PKG-INFO +9 -5
  15. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/pyproject.toml +1 -1
  16. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/LICENSE +0 -0
  17. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/__init__.py +0 -0
  18. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/__init__.py +0 -0
  19. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/apis_metadata.py +0 -0
  20. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/app.py +0 -0
  21. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/config.py +0 -0
  22. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/error_handlers.py +0 -0
  23. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/response.py +0 -0
  24. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/__init__.py +0 -0
  25. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/delete.py +0 -0
  26. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/deploy.py +0 -0
  27. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/disable.py +0 -0
  28. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/enable.py +0 -0
  29. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/health.py +0 -0
  30. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/health_auth.py +0 -0
  31. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/ip.py +0 -0
  32. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/kill.py +0 -0
  33. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/last_dag_logs.py +0 -0
  34. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/run_automation.py +0 -0
  35. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/api/routes/status.py +0 -0
  36. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/__init__.py +0 -0
  37. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/delete.py +0 -0
  38. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/health.py +0 -0
  39. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/kill_all.py +0 -0
  40. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/last_dag_logs.py +0 -0
  41. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/state.py +0 -0
  42. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/operations/status.py +0 -0
  43. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/plugin.py +0 -0
  44. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/resources/__init__.py +0 -0
  45. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/resources/dag_runner.j2 +0 -0
  46. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/utils/__init__.py +0 -0
  47. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/utils/logger.py +0 -0
  48. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/utils/parser.py +0 -0
  49. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/views/__init__.py +0 -0
  50. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/views/rest_api.py +0 -0
  51. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/views/templates/rest_api/index.html +0 -0
  52. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/__init__.py +0 -0
  53. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/config.py +0 -0
  54. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/__init__.py +0 -0
  55. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/elasticsearch_sink.py +0 -0
  56. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/es_reindex.py +0 -0
  57. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/lineage.py +0 -0
  58. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/metadata.py +0 -0
  59. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/ingestion/registry.py +0 -0
  60. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/workflow_builder.py +0 -0
  61. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis/workflows/workflow_factory.py +0 -0
  62. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis.egg-info/SOURCES.txt +0 -0
  63. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis.egg-info/dependency_links.txt +0 -0
  64. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis.egg-info/entry_points.txt +0 -0
  65. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis.egg-info/requires.txt +0 -0
  66. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/openmetadata_managed_apis.egg-info/top_level.txt +0 -0
  67. {openmetadata_managed_apis-1.7.0.1 → openmetadata_managed_apis-1.7.1.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openmetadata_managed_apis
3
- Version: 1.7.0.1
3
+ Version: 1.7.1.1
4
4
  Summary: Airflow REST APIs to create and manage DAGS
5
5
  Author: OpenMetadata Committers
6
6
  License: Apache License
@@ -229,11 +229,15 @@ OpenMetadata workflow definition and manage DAGS and tasks.
229
229
 
230
230
  ## Development
231
231
 
232
- You can run `make branch=issue-3659-v2 test_up` and specify any branch from OpenMetadata that you'd
233
- need to test the changes in the APIs. This will prepare a separated airflow container.
232
+ The file [`development/airflow/airflow.cfg`](./development/airflow/airflow.cfg) contains configuration which runs based on
233
+ the airflow server deployed by the quick-start and development compose files.
234
234
 
235
- The command will build the image by downloading the branch changes inside the container. This helps us
236
- test the REST APIs using some ongoing changes on OpenMetadata as well.
235
+ You ca run the following command to start the development environment:
236
+
237
+ ```bash
238
+ export AIRFLOW_HOME=$(pwd)/openmetadata-airflow-managed-api/development/airflow
239
+ airflow webserver
240
+ ```
237
241
 
238
242
  ## Requirements
239
243
 
@@ -5,11 +5,15 @@ OpenMetadata workflow definition and manage DAGS and tasks.
5
5
 
6
6
  ## Development
7
7
 
8
- You can run `make branch=issue-3659-v2 test_up` and specify any branch from OpenMetadata that you'd
9
- need to test the changes in the APIs. This will prepare a separated airflow container.
8
+ The file [`development/airflow/airflow.cfg`](./development/airflow/airflow.cfg) contains configuration which runs based on
9
+ the airflow server deployed by the quick-start and development compose files.
10
10
 
11
- The command will build the image by downloading the branch changes inside the container. This helps us
12
- test the REST APIs using some ongoing changes on OpenMetadata as well.
11
+ You ca run the following command to start the development environment:
12
+
13
+ ```bash
14
+ export AIRFLOW_HOME=$(pwd)/openmetadata-airflow-managed-api/development/airflow
15
+ airflow webserver
16
+ ```
13
17
 
14
18
  ## Requirements
15
19
 
@@ -16,7 +16,11 @@ from typing import Callable
16
16
 
17
17
  from flask import Blueprint, Response, request
18
18
  from openmetadata_managed_apis.api.response import ApiResponse
19
- from openmetadata_managed_apis.api.utils import get_request_arg, get_request_dag_id
19
+ from openmetadata_managed_apis.api.utils import (
20
+ get_request_arg,
21
+ get_request_conf,
22
+ get_request_dag_id,
23
+ )
20
24
  from openmetadata_managed_apis.operations.trigger import trigger
21
25
  from openmetadata_managed_apis.utils.logger import routes_logger
22
26
 
@@ -41,13 +45,14 @@ def get_fn(blueprint: Blueprint) -> Callable:
41
45
  @security.requires_access([(permissions.ACTION_CAN_EDIT, permissions.RESOURCE_DAG)])
42
46
  def trigger_dag() -> Response:
43
47
  """
44
- Trigger a dag run
48
+ Trigger a dag run with optional configuration
45
49
  """
46
50
  dag_id = get_request_dag_id()
47
51
 
48
52
  try:
49
53
  run_id = get_request_arg(request, "run_id", raise_missing=False)
50
- response = trigger(dag_id, run_id)
54
+ conf = get_request_conf()
55
+ response = trigger(dag_id, run_id, conf=conf)
51
56
 
52
57
  return response
53
58
 
@@ -99,6 +99,16 @@ def get_request_dag_id() -> Optional[str]:
99
99
  return clean_dag_id(raw_dag_id)
100
100
 
101
101
 
102
+ def get_request_conf() -> Optional[dict]:
103
+ """
104
+ Try to fetch the conf from the JSON request. Return None if no conf is provided.
105
+ """
106
+ try:
107
+ return request.get_json().get("conf")
108
+ except Exception:
109
+ return None
110
+
111
+
102
112
  def get_dagbag():
103
113
  """
104
114
  Load the dagbag from Airflow settings
@@ -97,6 +97,8 @@ class DagDeployer:
97
97
  Store the airflow pipeline config in a JSON file and
98
98
  return the path for the Jinja rendering.
99
99
  """
100
+ # Create directory if it doesn't exist
101
+ dag_config_file_path.parent.mkdir(parents=True, exist_ok=True)
100
102
 
101
103
  logger.info(f"Saving file to {dag_config_file_path}")
102
104
  with open(dag_config_file_path, "w") as outfile:
@@ -17,17 +17,20 @@ try:
17
17
  from airflow.api.common.trigger_dag import trigger_dag
18
18
  except ImportError:
19
19
  from airflow.api.common.experimental.trigger_dag import trigger_dag
20
+
20
21
  from airflow.utils import timezone
21
22
  from flask import Response
22
23
  from openmetadata_managed_apis.api.response import ApiResponse
23
24
 
24
25
 
25
- def trigger(dag_id: str, run_id: Optional[str]) -> Response:
26
+ def trigger(
27
+ dag_id: str, run_id: Optional[str], conf: Optional[dict] = None
28
+ ) -> Response:
26
29
  dag_run = trigger_dag(
27
30
  dag_id=dag_id,
28
31
  run_id=run_id,
29
- conf=None,
30
32
  execution_date=timezone.utcnow(),
33
+ conf=conf,
31
34
  )
32
35
  return ApiResponse.success(
33
36
  {"message": f"Workflow [{dag_id}] has been triggered {dag_run}"}
@@ -18,6 +18,7 @@ from openmetadata_managed_apis.utils.logger import set_operator_logger
18
18
  from openmetadata_managed_apis.workflows.ingestion.common import (
19
19
  build_dag,
20
20
  build_workflow_config_property,
21
+ execute_workflow,
21
22
  )
22
23
 
23
24
  from metadata.generated.schema.entity.applications.configuration.applicationConfig import (
@@ -36,7 +37,7 @@ from metadata.generated.schema.metadataIngestion.applicationPipeline import (
36
37
  from metadata.workflow.application import ApplicationWorkflow
37
38
 
38
39
 
39
- def application_workflow(workflow_config: OpenMetadataApplicationConfig):
40
+ def application_workflow(workflow_config: OpenMetadataApplicationConfig, **context):
40
41
  """
41
42
  Task that creates and runs the ingestion workflow.
42
43
 
@@ -48,15 +49,17 @@ def application_workflow(workflow_config: OpenMetadataApplicationConfig):
48
49
 
49
50
  set_operator_logger(workflow_config)
50
51
 
52
+ # set overridden app config
51
53
  config = json.loads(
52
54
  workflow_config.model_dump_json(exclude_defaults=False, mask_secrets=False)
53
55
  )
56
+ params = context.get("params") or {}
57
+ config["appConfig"] = {
58
+ **(config.get("appConfig") or {}),
59
+ **(params.get("appConfigOverride") or {}),
60
+ }
54
61
  workflow = ApplicationWorkflow.create(config)
55
-
56
- workflow.execute()
57
- workflow.raise_from_status()
58
- workflow.print_status()
59
- workflow.stop()
62
+ execute_workflow(workflow, workflow_config)
60
63
 
61
64
 
62
65
  def build_application_workflow_config(
@@ -101,6 +104,9 @@ def build_application_dag(ingestion_pipeline: IngestionPipeline) -> DAG:
101
104
  ingestion_pipeline=ingestion_pipeline,
102
105
  workflow_config=application_workflow_config,
103
106
  workflow_fn=application_workflow,
107
+ params={
108
+ "appConfigOverride": None # Default to None, will be overridden by trigger conf
109
+ },
104
110
  )
105
111
 
106
112
  return dag
@@ -15,7 +15,11 @@ import json
15
15
 
16
16
  from airflow import DAG
17
17
  from openmetadata_managed_apis.utils.logger import set_operator_logger
18
- from openmetadata_managed_apis.workflows.ingestion.common import build_dag, build_source
18
+ from openmetadata_managed_apis.workflows.ingestion.common import (
19
+ build_dag,
20
+ build_source,
21
+ execute_workflow,
22
+ )
19
23
 
20
24
  from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipeline import (
21
25
  IngestionPipeline,
@@ -30,7 +34,9 @@ from metadata.generated.schema.metadataIngestion.workflow import (
30
34
  from metadata.workflow.classification import AutoClassificationWorkflow
31
35
 
32
36
 
33
- def auto_classification_workflow(workflow_config: OpenMetadataWorkflowConfig):
37
+ def auto_classification_workflow(
38
+ workflow_config: OpenMetadataWorkflowConfig,
39
+ ):
34
40
  """
35
41
  Task that creates and runs the auto classification workflow.
36
42
 
@@ -46,11 +52,7 @@ def auto_classification_workflow(workflow_config: OpenMetadataWorkflowConfig):
46
52
  workflow_config.model_dump_json(exclude_defaults=False, mask_secrets=False)
47
53
  )
48
54
  workflow = AutoClassificationWorkflow.create(config)
49
-
50
- workflow.execute()
51
- workflow.raise_from_status()
52
- workflow.print_status()
53
- workflow.stop()
55
+ execute_workflow(workflow, workflow_config)
54
56
 
55
57
 
56
58
  def build_auto_classification_workflow_config(
@@ -37,6 +37,7 @@ from metadata.generated.schema.metadataIngestion.application import (
37
37
  from metadata.generated.schema.type.basic import Timestamp, Uuid
38
38
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
39
39
  from metadata.utils import fqn
40
+ from metadata.workflow.base import BaseWorkflow
40
41
 
41
42
  # pylint: disable=ungrouped-imports
42
43
  try:
@@ -192,6 +193,19 @@ def build_source(ingestion_pipeline: IngestionPipeline) -> WorkflowSource:
192
193
  )
193
194
 
194
195
 
196
+ def execute_workflow(
197
+ workflow: BaseWorkflow, workflow_config: OpenMetadataWorkflowConfig
198
+ ) -> None:
199
+ """
200
+ Execute the workflow and handle the status
201
+ """
202
+ workflow.execute()
203
+ workflow.print_status()
204
+ workflow.stop()
205
+ if workflow_config.workflowConfig.raiseOnError:
206
+ workflow.raise_from_status()
207
+
208
+
195
209
  def metadata_ingestion_workflow(workflow_config: OpenMetadataWorkflowConfig):
196
210
  """
197
211
  Task that creates and runs the ingestion workflow.
@@ -208,11 +222,7 @@ def metadata_ingestion_workflow(workflow_config: OpenMetadataWorkflowConfig):
208
222
  workflow_config.model_dump_json(exclude_defaults=False, mask_secrets=False)
209
223
  )
210
224
  workflow = MetadataWorkflow.create(config)
211
-
212
- workflow.execute()
213
- workflow.raise_from_status()
214
- workflow.print_status()
215
- workflow.stop()
225
+ execute_workflow(workflow, workflow_config)
216
226
 
217
227
 
218
228
  def build_workflow_config_property(
@@ -225,6 +235,7 @@ def build_workflow_config_property(
225
235
  """
226
236
  return WorkflowConfig(
227
237
  loggerLevel=ingestion_pipeline.loggerLevel or LogLevels.INFO,
238
+ raiseOnError=ingestion_pipeline.raiseOnError,
228
239
  openMetadataServerConfig=ingestion_pipeline.openMetadataServerConnection,
229
240
  )
230
241
 
@@ -358,9 +369,16 @@ def build_dag(
358
369
  ingestion_pipeline: IngestionPipeline,
359
370
  workflow_config: Union[OpenMetadataWorkflowConfig, OpenMetadataApplicationConfig],
360
371
  workflow_fn: Callable,
372
+ params: Optional[dict] = None,
361
373
  ) -> DAG:
362
374
  """
363
375
  Build a simple metadata workflow DAG
376
+ :param task_name: Name of the task
377
+ :param ingestion_pipeline: Pipeline configs
378
+ :param workflow_config: Workflow configurations
379
+ :param workflow_fn: Function to be executed
380
+ :param params: Optional parameters to pass to the operator
381
+ :return: DAG
364
382
  """
365
383
 
366
384
  with DAG(**build_dag_configs(ingestion_pipeline)) as dag:
@@ -371,7 +389,9 @@ def build_dag(
371
389
  CustomPythonOperator(
372
390
  task_id=task_name,
373
391
  python_callable=workflow_fn,
374
- op_kwargs={"workflow_config": workflow_config},
392
+ op_kwargs={
393
+ "workflow_config": workflow_config,
394
+ },
375
395
  # There's no need to retry if we have had an error. Wait until the next schedule or manual rerun.
376
396
  retries=ingestion_pipeline.airflowConfig.retries or 0,
377
397
  # each DAG will call its own OpenMetadataWorkflowConfig
@@ -380,6 +400,7 @@ def build_dag(
380
400
  owner=ingestion_pipeline.owners.root[0].name
381
401
  if (ingestion_pipeline.owners and ingestion_pipeline.owners.root)
382
402
  else "openmetadata",
403
+ params=params,
383
404
  )
384
405
 
385
406
  return dag
@@ -42,7 +42,7 @@ def build_dbt_workflow_config(
42
42
  """
43
43
 
44
44
  source = build_source(ingestion_pipeline)
45
- source.type = f"dbt" # Mark the source as dbt
45
+ source.type = "dbt" # Mark the source as dbt
46
46
 
47
47
  workflow_config = OpenMetadataWorkflowConfig(
48
48
  source=source,
@@ -15,7 +15,11 @@ import json
15
15
 
16
16
  from airflow import DAG
17
17
  from openmetadata_managed_apis.utils.logger import set_operator_logger
18
- from openmetadata_managed_apis.workflows.ingestion.common import build_dag, build_source
18
+ from openmetadata_managed_apis.workflows.ingestion.common import (
19
+ build_dag,
20
+ build_source,
21
+ execute_workflow,
22
+ )
19
23
 
20
24
  from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipeline import (
21
25
  IngestionPipeline,
@@ -30,7 +34,9 @@ from metadata.generated.schema.metadataIngestion.workflow import (
30
34
  from metadata.workflow.profiler import ProfilerWorkflow
31
35
 
32
36
 
33
- def profiler_workflow(workflow_config: OpenMetadataWorkflowConfig):
37
+ def profiler_workflow(
38
+ workflow_config: OpenMetadataWorkflowConfig,
39
+ ):
34
40
  """
35
41
  Task that creates and runs the profiler workflow.
36
42
 
@@ -46,11 +52,7 @@ def profiler_workflow(workflow_config: OpenMetadataWorkflowConfig):
46
52
  workflow_config.model_dump_json(exclude_defaults=False, mask_secrets=False)
47
53
  )
48
54
  workflow = ProfilerWorkflow.create(config)
49
-
50
- workflow.execute()
51
- workflow.raise_from_status()
52
- workflow.print_status()
53
- workflow.stop()
55
+ execute_workflow(workflow, workflow_config)
54
56
 
55
57
 
56
58
  def build_profiler_workflow_config(
@@ -15,7 +15,11 @@ import json
15
15
 
16
16
  from airflow import DAG
17
17
  from openmetadata_managed_apis.utils.logger import set_operator_logger
18
- from openmetadata_managed_apis.workflows.ingestion.common import build_dag, build_source
18
+ from openmetadata_managed_apis.workflows.ingestion.common import (
19
+ build_dag,
20
+ build_source,
21
+ execute_workflow,
22
+ )
19
23
 
20
24
  from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipeline import (
21
25
  IngestionPipeline,
@@ -30,7 +34,9 @@ from metadata.generated.schema.metadataIngestion.workflow import (
30
34
  from metadata.workflow.data_quality import TestSuiteWorkflow
31
35
 
32
36
 
33
- def test_suite_workflow(workflow_config: OpenMetadataWorkflowConfig):
37
+ def test_suite_workflow(
38
+ workflow_config: OpenMetadataWorkflowConfig,
39
+ ):
34
40
  """
35
41
  Task that creates and runs the test suite workflow.
36
42
 
@@ -46,11 +52,7 @@ def test_suite_workflow(workflow_config: OpenMetadataWorkflowConfig):
46
52
  workflow_config.model_dump_json(exclude_defaults=False, mask_secrets=False)
47
53
  )
48
54
  workflow = TestSuiteWorkflow.create(config)
49
-
50
- workflow.execute()
51
- workflow.raise_from_status()
52
- workflow.print_status()
53
- workflow.stop()
55
+ execute_workflow(workflow, workflow_config)
54
56
 
55
57
 
56
58
  def build_test_suite_workflow_config(
@@ -20,6 +20,7 @@ from openmetadata_managed_apis.workflows.ingestion.common import (
20
20
  build_dag,
21
21
  build_source,
22
22
  build_workflow_config_property,
23
+ execute_workflow,
23
24
  )
24
25
 
25
26
  from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipeline import (
@@ -34,7 +35,9 @@ from metadata.generated.schema.metadataIngestion.workflow import (
34
35
  from metadata.workflow.usage import UsageWorkflow
35
36
 
36
37
 
37
- def usage_workflow(workflow_config: OpenMetadataWorkflowConfig):
38
+ def usage_workflow(
39
+ workflow_config: OpenMetadataWorkflowConfig,
40
+ ):
38
41
  """
39
42
  Task that creates and runs the ingestion workflow.
40
43
 
@@ -50,11 +53,7 @@ def usage_workflow(workflow_config: OpenMetadataWorkflowConfig):
50
53
  workflow_config.model_dump_json(exclude_defaults=False, mask_secrets=False)
51
54
  )
52
55
  workflow = UsageWorkflow.create(config)
53
-
54
- workflow.execute()
55
- workflow.raise_from_status()
56
- workflow.print_status()
57
- workflow.stop()
56
+ execute_workflow(workflow, workflow_config)
58
57
 
59
58
 
60
59
  def build_usage_config_from_file(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openmetadata_managed_apis
3
- Version: 1.7.0.1
3
+ Version: 1.7.1.1
4
4
  Summary: Airflow REST APIs to create and manage DAGS
5
5
  Author: OpenMetadata Committers
6
6
  License: Apache License
@@ -229,11 +229,15 @@ OpenMetadata workflow definition and manage DAGS and tasks.
229
229
 
230
230
  ## Development
231
231
 
232
- You can run `make branch=issue-3659-v2 test_up` and specify any branch from OpenMetadata that you'd
233
- need to test the changes in the APIs. This will prepare a separated airflow container.
232
+ The file [`development/airflow/airflow.cfg`](./development/airflow/airflow.cfg) contains configuration which runs based on
233
+ the airflow server deployed by the quick-start and development compose files.
234
234
 
235
- The command will build the image by downloading the branch changes inside the container. This helps us
236
- test the REST APIs using some ongoing changes on OpenMetadata as well.
235
+ You ca run the following command to start the development environment:
236
+
237
+ ```bash
238
+ export AIRFLOW_HOME=$(pwd)/openmetadata-airflow-managed-api/development/airflow
239
+ airflow webserver
240
+ ```
237
241
 
238
242
  ## Requirements
239
243
 
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
  # since it helps us organize and isolate version management
7
7
  [project]
8
8
  name = "openmetadata_managed_apis"
9
- version = "1.7.0.1"
9
+ version = "1.7.1.1"
10
10
  readme = "README.md"
11
11
  authors = [
12
12
  {name = "OpenMetadata Committers"}