You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2022/06/21 11:04:03 UTC

[GitHub] [airflow] tirkarthi commented on a diff in pull request #23530: Dagrun run TaskInstance API

tirkarthi commented on code in PR #23530:
URL: https://github.com/apache/airflow/pull/23530#discussion_r902475518


##########
airflow/api_connexion/endpoints/task_instance_endpoint.py:
##########
@@ -512,3 +517,86 @@ def post_set_task_instances_state(*, dag_id: str, session: Session = NEW_SESSION
         session=session,
     )
     return task_instance_reference_collection_schema.dump(TaskInstanceReferenceCollection(task_instances=tis))
+
+
+@security.requires_access(
+    [
+        (permissions.ACTION_CAN_EDIT, permissions.RESOURCE_DAG),
+        (permissions.ACTION_CAN_READ, permissions.RESOURCE_DAG_RUN),
+        (permissions.ACTION_CAN_EDIT, permissions.RESOURCE_TASK_INSTANCE),
+    ],
+)
+@provide_session
+def run_task_instance(
+    *, dag_id: str, dag_run_id: str, task_id: str, session: Session = NEW_SESSION

Review Comment:
   When I comment out `session` in the signature with the assumption that `provide_session` should add it I get below error. I see it a common thing across functions. Am I missing something here?
   
   ```
   root@e51a7514889b:/opt/airflow# pytest tests/api_connexion/endpoints/test_task_instance_endpoint.py -k TestTaskInstanceRunEndpoint -x
   ============================================================================ test session starts ============================================================================
   platform linux -- Python 3.7.13, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- /usr/local/bin/python
   cachedir: .pytest_cache
   rootdir: /opt/airflow, configfile: pytest.ini
   plugins: flaky-3.7.0, forked-1.4.0, cov-3.0.0, anyio-3.5.0, requests-mock-1.9.3, instafail-0.4.2, timeouts-1.2.1, rerunfailures-9.1.1, xdist-2.5.0, httpx-0.20.0, asyncio-0.18.3
   asyncio: mode=strict
   setup timeout: 0.0s, execution timeout: 0.0s, teardown timeout: 0.0s
   collected 84 items / 77 deselected / 7 selected                                                                                                                             
   
   tests/api_connexion/endpoints/test_task_instance_endpoint.py::TestTaskInstanceRunEndpoint::test_task_instance_run_return_200 ERROR                                    [ 14%]
   
   ================================================================================== ERRORS ===================================================================================
   ______________________________________________ ERROR at setup of TestTaskInstanceRunEndpoint.test_task_instance_run_return_200 ______________________________________________
   
       @pytest.fixture(scope="session")
       def minimal_app_for_api():
           @dont_initialize_flask_app_submodules(
               skip_all_except=[
                   "init_appbuilder",
                   "init_api_experimental_auth",
                   "init_api_connexion",
                   "init_airflow_session_interface",
               ]
           )
           def factory():
               with conf_vars({("api", "auth_backends"): "tests.test_utils.remote_user_api_auth_backend"}):
                   return app.create_app(testing=True, config={'WTF_CSRF_ENABLED': False})  # type:ignore
       
   >       return factory()
   
   tests/api_connexion/conftest.py:39: 
   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
   tests/test_utils/decorators.py:57: in func
       result = f(*args, **kwargs)
   tests/api_connexion/conftest.py:37: in factory
       return app.create_app(testing=True, config={'WTF_CSRF_ENABLED': False})  # type:ignore
   airflow/www/app.py:143: in create_app
       init_api_connexion(flask_app)
   airflow/www/extensions/init_views.py:196: in init_api_connexion
       specification='v1.yaml', base_path=base_path, validate_responses=True, strict_validation=True
   /usr/local/lib/python3.7/site-packages/connexion/apps/flask_app.py:72: in add_api
       api = super().add_api(specification, **kwargs)
   /usr/local/lib/python3.7/site-packages/connexion/apps/abstract.py:161: in add_api
       options=api_options.as_dict())
   /usr/local/lib/python3.7/site-packages/connexion/apis/abstract.py:119: in __init__
       self.add_paths()
   /usr/local/lib/python3.7/site-packages/connexion/apis/abstract.py:229: in add_paths
       self._handle_add_operation_error(path, method, err.exc_info)
   /usr/local/lib/python3.7/site-packages/connexion/apis/abstract.py:244: in _handle_add_operation_error
       raise value.with_traceback(traceback)
   /usr/local/lib/python3.7/site-packages/connexion/resolver.py:68: in resolve_function_from_operation_id
       return self.function_resolver(operation_id)
   /usr/local/lib/python3.7/site-packages/connexion/utils.py:116: in get_function_from_name
       module = importlib.import_module(module_name)
   /usr/local/lib/python3.7/importlib/__init__.py:127: in import_module
       return _bootstrap._gcd_import(name[level:], package, level)
   airflow/api_connexion/endpoints/task_instance_endpoint.py:532: in <module>
       ) -> APIResponse:
   airflow/utils/session.py:63: in provide_session
       session_args_idx = find_session_idx(func)
   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
   
   func = <function run_task_instance at 0x7f61f09aa830>
   
       def find_session_idx(func: Callable[..., RT]) -> int:
           """Find session index in function call parameter."""
           func_params = signature(func).parameters
           try:
               # func_params is an ordered dict -- this is the "recommended" way of getting the position
               session_args_idx = tuple(func_params).index("session")
           except ValueError:
   >           raise ValueError(f"Function {func.__qualname__} has no `session` argument") from None
   E           ValueError: Function run_task_instance has no `session` argument
   
   airflow/utils/session.py:51: ValueError
   --------------------------------------------------------------------------- Captured stdout setup ---------------------------------------------------------------------------
   
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org