Skip to content

Commit

Permalink
16: Update to newest SDK and use names for workflows as used from mvp…
Browse files Browse the repository at this point in the history
….2 on.
  • Loading branch information
lfse-slafleur committed Apr 17, 2024
1 parent 7dc33fb commit af641e1
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 43 deletions.
2 changes: 1 addition & 1 deletion dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ omotes-sdk-protocol==0.0.8
# via
# -c requirements.txt
# omotes-sdk-python
omotes-sdk-python==0.0.12
omotes-sdk-python==0.0.14
# via
# -c requirements.txt
# omotes-rest (pyproject.toml)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ dependencies = [
"python-dotenv ~= 1.0.0",
"structlog ~= 23.1.0",
"SQLAlchemy == 2.0.28",
"omotes-sdk-python ~= 0.0.12",
"omotes-sdk-python ~= 0.0.14",
]

[project.optional-dependencies]
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ mypy-extensions==1.0.0
# via typing-inspect
omotes-sdk-protocol==0.0.8
# via omotes-sdk-python
omotes-sdk-python==0.0.12
omotes-sdk-python==0.0.14
# via omotes-rest (pyproject.toml)
packaging==23.1
# via
Expand Down
Empty file modified scripts/setup.sh
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion src/omotes_rest/apis/api_dataclasses.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class JobInput:
Schema: ClassVar[Type[Schema]] = Schema

job_name: str = "job name"
workflow_type: str = "grow_optimizer"
workflow_type: str = "Draft Design - Quickscan Validation"
user_name: str = "user name"
input_esdl: str = "input ESDL base64string"
project_name: str = "project name"
Expand Down
32 changes: 2 additions & 30 deletions src/omotes_rest/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
from omotes_rest.apis.job import OmotesRestApp
from omotes_rest.rest_interface import RestInterface
from omotes_rest.settings import EnvSettings
from omotes_rest.workflows import WORKFLOW_TYPE_MANAGER
import logging
from omotes_sdk.workflow_type import WorkflowTypeManager, WorkflowType

"""logger."""
logger = logging.getLogger("omotes_rest")
Expand Down Expand Up @@ -81,40 +81,12 @@ def handle_500(e: Exception) -> tuple[str, int]:
}), 500


# TODO to be retrieved via de omotes_sdk in the future
workflow_type_manager = WorkflowTypeManager(
possible_workflows=[
WorkflowType(
workflow_type_name="grow_optimizer",
workflow_type_description_name="Grow Optimizer"
),
WorkflowType(
workflow_type_name="grow_simulator",
workflow_type_description_name="Grow Simulator"
),
WorkflowType(
workflow_type_name="grow_optimizer_no_heat_losses",
workflow_type_description_name="Grow Optimizer without heat losses",
),
WorkflowType(
workflow_type_name="grow_optimizer_no_heat_losses_discounted_capex",
workflow_type_description_name="Grow Optimizer without heat losses and a "
"discounted CAPEX",
),
WorkflowType(
workflow_type_name="simulator",
workflow_type_description_name="High fidelity simulator",
),
]
)


def post_fork(_: Arbiter, __: SyncWorker) -> None:
"""Called just after a worker has been forked."""
with app.app_context():
"""current_app is only within the app context"""

current_app.rest_if = RestInterface(workflow_type_manager)
current_app.rest_if = RestInterface(WORKFLOW_TYPE_MANAGER)
"""Interface for this Omotes Rest service."""

current_app.rest_if.start()
Expand Down
15 changes: 6 additions & 9 deletions src/omotes_rest/rest_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@
JobProgressUpdate,
JobStatusUpdate,
)
from omotes_sdk.workflow_type import WorkflowType, WorkflowTypeManager
from omotes_sdk.workflow_type import WorkflowTypeManager

import logging
from omotes_rest.postgres_interface import PostgresInterface
from omotes_rest.config import POSTGRESConfig
from omotes_rest.apis.api_dataclasses import JobInput, JobStatusResponse
from omotes_rest.db_models.job_rest import JobRestStatus, JobRest
from omotes_rest.workflows import FRONTEND_NAME_TO_OMOTES_WORKFLOW_NAME

logger = logging.getLogger("omotes_rest")

Expand All @@ -34,9 +35,9 @@ class RestInterface:
def __init__(self, workflow_type_manager: WorkflowTypeManager):
"""Create the omotes rest interface.
:param workflow_type_manager: All available workflow types.
:param workflow_type_manager: All available OMOTES workflow types.
"""
self.omotes_if = OmotesInterface(EnvRabbitMQConfig())
self.omotes_if = OmotesInterface(EnvRabbitMQConfig(), workflow_type_manager)
self.postgres_if = PostgresInterface(POSTGRESConfig())
self.workflow_type_manager = workflow_type_manager

Expand Down Expand Up @@ -122,8 +123,7 @@ def submit_job(self, job_input: JobInput) -> JobStatusResponse:
job = self.omotes_if.submit_job(
esdl=esdl_str,
params_dict=job_input.input_params_dict,
workflow_type=WorkflowType(workflow_type_name=job_input.workflow_type,
workflow_type_description_name="some descr"),
workflow_type=self.workflow_type_manager.get_workflow_by_name(FRONTEND_NAME_TO_OMOTES_WORKFLOW_NAME[job_input.workflow_type]),

Check failure on line 126 in src/omotes_rest/rest_interface.py

View workflow job for this annotation

GitHub Actions / Typecheck (3.11)

error: Argument "workflow_type" to "submit_job" of "OmotesInterface" has incompatible type "WorkflowType | None"; expected "WorkflowType" [arg-type]
job_timeout=timedelta(seconds=job_input.timeout_after_s),
callback_on_finished=self.handle_on_job_finished,
callback_on_progress_update=self.handle_on_job_progress_update,
Expand Down Expand Up @@ -163,10 +163,7 @@ def cancel_job(self, job_id: uuid.UUID) -> bool:
if job_in_db:
job = Job(
id=job_id,
workflow_type=WorkflowType(
workflow_type_name=job_in_db.workflow_type,
workflow_type_description_name="some descr"
)
workflow_type=self.workflow_type_manager.get_workflow_by_name(FRONTEND_NAME_TO_OMOTES_WORKFLOW_NAME[job_in_db.workflow_type])

Check failure on line 166 in src/omotes_rest/rest_interface.py

View workflow job for this annotation

GitHub Actions / Typecheck (3.11)

error: Argument "workflow_type" to "Job" has incompatible type "WorkflowType | None"; expected "WorkflowType" [arg-type]
)
self.omotes_if.cancel_job(job)
result = True
Expand Down
35 changes: 35 additions & 0 deletions src/omotes_rest/workflows.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from omotes_sdk.workflow_type import WorkflowTypeManager, WorkflowType

# TODO to be retrieved via de omotes_sdk in the future
WORKFLOW_TYPE_MANAGER = WorkflowTypeManager(
possible_workflows=[
WorkflowType(
workflow_type_name="grow_optimizer_default",
workflow_type_description_name="Grow Optimizer"
),
WorkflowType(
workflow_type_name="grow_simulator",
workflow_type_description_name="Grow Simulator"
),
WorkflowType(
workflow_type_name="grow_optimizer_no_heat_losses",
workflow_type_description_name="Grow Optimizer without heat losses",
),
WorkflowType(
workflow_type_name="grow_optimizer_with_pressure",
workflow_type_description_name="Grow Optimizer with pressure drops",
),
WorkflowType(
workflow_type_name="simulator",
workflow_type_description_name="High fidelity simulator",
),
]
)

FRONTEND_NAME_TO_OMOTES_WORKFLOW_NAME = {
'Draft Design - Quickscan Validation': 'grow_optimizer_no_heat_losses',
'Draft Design - Optimization': 'grow_optimizer_default',
'Draft Design - Optimization with Pressure Drops': 'grow_optimizer_with_pressure',
'Draft Design - Simulation with Source Merit Order': 'grow_simulator',
'Conceptual Design - Simulation': 'simulator',
}

0 comments on commit af641e1

Please sign in to comment.