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