Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion packages/pytest-simcore/src/pytest_simcore/db_entries_mocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@
import pytest
import sqlalchemy as sa
from faker import Faker
from models_library.products import ProductName
from models_library.projects import ProjectAtDB, ProjectID
from models_library.projects_nodes_io import NodeID
from simcore_postgres_database.models.comp_pipeline import StateType, comp_pipeline
from simcore_postgres_database.models.comp_tasks import comp_tasks
from simcore_postgres_database.models.projects import ProjectType, projects
from simcore_postgres_database.models.projects_to_products import projects_to_products
from simcore_postgres_database.models.users import UserRole, UserStatus, users
from simcore_postgres_database.utils_projects_nodes import (
ProjectNodeCreate,
Expand Down Expand Up @@ -64,7 +66,7 @@ def creator(**user_kwargs) -> dict[str, Any]:

@pytest.fixture
async def project(
sqlalchemy_async_engine: AsyncEngine, faker: Faker
sqlalchemy_async_engine: AsyncEngine, faker: Faker, product_name: ProductName
) -> AsyncIterator[Callable[..., Awaitable[ProjectAtDB]]]:
created_project_ids: list[str] = []

Expand Down Expand Up @@ -112,6 +114,12 @@ async def creator(
for node_id in inserted_project.workbench
],
)
await con.execute(
projects_to_products.insert().values(
project_uuid=f"{inserted_project.uuid}",
product_name=product_name,
)
)
print(f"--> created {inserted_project=}")
created_project_ids.append(f"{inserted_project.uuid}")
return inserted_project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ async def _get_data_from_port(
archive_files: set[Path]

if _is_zip_file(downloaded_file):
prunable_folder = PrunableFolder(final_path.parent)
prunable_folder = PrunableFolder(final_path)
with log_context(
_logger,
logging.DEBUG,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from models_library.projects_state import RunningState
from pydantic.types import PositiveInt
from servicelib.background_task import periodic_task
from servicelib.logging_utils import log_catch
from simcore_postgres_database.models.comp_tasks import comp_tasks
from simcore_postgres_database.webserver_models import DB_CHANNEL_NAME, projects
from sqlalchemy.sql import select
Expand Down Expand Up @@ -73,56 +74,57 @@ async def _get_changed_comp_task_row(
async def _handle_db_notification(
app: web.Application, payload: CompTaskNotificationPayload, conn: SAConnection
) -> None:
try:
the_project_owner = await _get_project_owner(conn, payload.project_id)
changed_row = await _get_changed_comp_task_row(conn, payload.task_id)
if not changed_row:
with log_catch(_logger, reraise=False):
try:
the_project_owner = await _get_project_owner(conn, payload.project_id)
changed_row = await _get_changed_comp_task_row(conn, payload.task_id)
if not changed_row:
_logger.warning(
"No comp_tasks row found for project_id=%s node_id=%s",
payload.project_id,
payload.node_id,
)
return

if any(f in payload.changes for f in ["outputs", "run_hash"]):
await update_node_outputs(
app,
the_project_owner,
payload.project_id,
payload.node_id,
changed_row.outputs,
changed_row.run_hash,
node_errors=changed_row.errors,
ui_changed_keys=None,
)

if "state" in payload.changes and (changed_row.state is not None):
await _update_project_state(
app,
the_project_owner,
payload.project_id,
payload.node_id,
convert_state_from_db(changed_row.state),
node_errors=changed_row.errors,
)

except exceptions.ProjectNotFoundError as exc:
_logger.warning(
"No comp_tasks row found for project_id=%s node_id=%s",
payload.project_id,
payload.node_id,
"Project %s was not found and cannot be updated. Maybe was it deleted?",
exc.project_uuid,
)
return

if any(f in payload.changes for f in ["outputs", "run_hash"]):
await update_node_outputs(
app,
the_project_owner,
payload.project_id,
payload.node_id,
changed_row.outputs,
changed_row.run_hash,
node_errors=changed_row.errors,
ui_changed_keys=None,
except exceptions.ProjectOwnerNotFoundError as exc:
_logger.warning(
"Project owner of project %s could not be found, is the project valid?",
exc.project_uuid,
)

if "state" in payload.changes and (changed_row.state is not None):
await _update_project_state(
app,
the_project_owner,
payload.project_id,
payload.node_id,
convert_state_from_db(changed_row.state),
node_errors=changed_row.errors,
except exceptions.NodeNotFoundError as exc:
_logger.warning(
"Node %s of project %s not found and cannot be updated. Maybe was it deleted?",
exc.node_uuid,
exc.project_uuid,
)

except exceptions.ProjectNotFoundError as exc:
_logger.warning(
"Project %s was not found and cannot be updated. Maybe was it deleted?",
exc.project_uuid,
)
except exceptions.ProjectOwnerNotFoundError as exc:
_logger.warning(
"Project owner of project %s could not be found, is the project valid?",
exc.project_uuid,
)
except exceptions.NodeNotFoundError as exc:
_logger.warning(
"Node %s of project %s not found and cannot be updated. Maybe was it deleted?",
exc.node_uuid,
exc.project_uuid,
)


async def _listen(app: web.Application) -> NoReturn:
listen_query = f"LISTEN {DB_CHANNEL_NAME};"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"e8eae2cd-ae0f-4ba6-ae0b-86eeadf99b42": {
"key": "simcore/services/dynamic/jupyter-math",
"version": "3.0.5",
"label": "JupyterLab Math (Python+Octave)",
"inputs": {},
"inputsRequired": [],
"inputNodes": []
},
"f7d6dc1e-a6dc-44e1-9588-a2f4b05d3d9c": {
"key": "simcore/services/dynamic/jupyter-math",
"version": "3.0.5",
"label": "JupyterLab Math (Python+Octave)_2",
"inputs": {
"input_1": {
"nodeUuid": "e8eae2cd-ae0f-4ba6-ae0b-86eeadf99b42",
"output": "output_1"
},
"input_2": {
"nodeUuid": "e8eae2cd-ae0f-4ba6-ae0b-86eeadf99b42",
"output": "output_2"
},
"input_3": {
"nodeUuid": "e8eae2cd-ae0f-4ba6-ae0b-86eeadf99b42",
"output": "output_3"
},
"input_4": {
"nodeUuid": "e8eae2cd-ae0f-4ba6-ae0b-86eeadf99b42",
"output": "output_4"
}
},
"inputsRequired": [],
"inputNodes": [
"e8eae2cd-ae0f-4ba6-ae0b-86eeadf99b42"
]
}
}
Loading
Loading