diff --git a/shared/workspaces/test/test_capability_service.py b/shared/workspaces/test/test_capability_service.py index 84e2e4696b09649315bbc1e4920193e7da7e9f7e..5df0ea3a9064d967e253ad256bf71fa705033880 100644 --- a/shared/workspaces/test/test_capability_service.py +++ b/shared/workspaces/test/test_capability_service.py @@ -1,14 +1,15 @@ """ Unit tests for Capability Service """ -from unittest.mock import patch +from unittest.mock import patch # pylint: disable=C0301, E0401, R0201 import pytest -from workspaces.capability.schema import CapabilityExecution +from workspaces.capability.schema import CapabilityExecution, CapabilityVersion from workspaces.capability.services.capability_info import CapabilityInfo from workspaces.capability.services.capability_service import CapabilityService +from workspaces.workflow.schema import WorkflowRequest pytest_plugins = ["testing.utils.conftest"] diff --git a/shared/workspaces/workspaces/capability/services/capability_info.py b/shared/workspaces/workspaces/capability/services/capability_info.py index fb7fef6fc496a16d0ce41b019f50db0707458a7a..8d60da94146e35c0946afa8dca38a74c0dbcf69c 100644 --- a/shared/workspaces/workspaces/capability/services/capability_info.py +++ b/shared/workspaces/workspaces/capability/services/capability_info.py @@ -196,6 +196,16 @@ class CapabilityInfo(CapabilityInfoIF): """ return self.session.query(CapabilityRequest).filter_by(id=request_id).first() + def lookup_capability_request_version(self, request_id: int) -> CapabilityVersion: + """ + Finds the capability request version with the provided request ID + + :param request_id: capability request ID of interest + + :return: + """ + return self.session.query(CapabilityVersion).filter_by(capability_request_id=request_id).first() + def lookup_capability_execution(self, execution_id: int) -> CapabilityExecution: """ Finds the capability execution with the provided request ID diff --git a/shared/workspaces/workspaces/capability/services/capability_service.py b/shared/workspaces/workspaces/capability/services/capability_service.py index a0c05f22fd54ddabad101a37158b54f8150316bf..ff498e44900ad6d3bc6099ec8610b43ed6f42830 100644 --- a/shared/workspaces/workspaces/capability/services/capability_service.py +++ b/shared/workspaces/workspaces/capability/services/capability_service.py @@ -41,15 +41,11 @@ class CapabilityService(CapabilityServiceIF): self.messenger = MessageSender("capability") self.router = Router("capability") self.router.register(self) - self.execution_manager = ExecutionManager( - capability_info, workflow_service, self.router, self.messenger - ) + self.execution_manager = ExecutionManager(capability_info, workflow_service, self.router, self.messenger) self.capability_info = capability_info self.notify = notification_service - def create_new_version( - self, capability_request_id: int, parameters: List[Parameter] = None - ) -> CapabilityVersionIF: + def create_new_version(self, capability_request_id: int, parameters: List[Parameter] = None) -> CapabilityVersionIF: logger.info(f"Creating new version of Capability Request #{capability_request_id}") return self.capability_info.create_capability_version(capability_request_id, parameters) @@ -58,15 +54,13 @@ class CapabilityService(CapabilityServiceIF): logger.info(f"RECEIVED EXECUTION-COMPLETE: {message}") execution = message["subject"] - capability_request = self.capability_info.lookup_capability_request( - execution["capability_request_id"] - ) + capability_request = self.capability_info.lookup_capability_request(execution["capability_request_id"]) capability_request.state = CapabilityRequestState.Complete.name self.capability_info.save_entity(capability_request) - capability_complete_msg = CapabilityMessageArchitect( - request=capability_request - ).compose_message("capability_complete") + capability_complete_msg = CapabilityMessageArchitect(request=capability_request).compose_message( + "capability_complete" + ) self.messenger.send_message(**capability_complete_msg) @on_message(type="execution-failed") @@ -74,15 +68,13 @@ class CapabilityService(CapabilityServiceIF): logger.info(f"RECEIVED EXECUTION-FAILED: {message}") execution = message["subject"] - capability_request = self.capability_info.lookup_capability_request( - execution["capability_request_id"] - ) + capability_request = self.capability_info.lookup_capability_request(execution["capability_request_id"]) capability_request.state = CapabilityRequestState.Failed.name self.capability_info.save_entity(capability_request) - capability_failed_msg = CapabilityMessageArchitect( - request=capability_request - ).compose_message("capability_failed") + capability_failed_msg = CapabilityMessageArchitect(request=capability_request).compose_message( + "capability_failed" + ) self.messenger.send_message(**capability_failed_msg) @on_message(service="workflow", type="delivery") @@ -139,9 +131,7 @@ class CapabilityService(CapabilityServiceIF): logger.info(f"RECEIVED CAPABILITY MESSAGE: {message}") subject = message["subject"] - execution = self.capability_info.lookup_execution_by_workflow_request_id( - subject["workflow_request_id"] - ) + execution = self.capability_info.lookup_execution_by_workflow_request_id(subject["workflow_request_id"]) self.notify.notify_qa_ready(execution.capability_request) @on_message(service="workflow", type="ingestion-complete") diff --git a/shared/workspaces/workspaces/capability/services/interfaces.py b/shared/workspaces/workspaces/capability/services/interfaces.py index 9005f9b95762ac6c051d4242e1c89954c0430eb8..57ad8c650832cc65319deff665161deb1713ffd7 100644 --- a/shared/workspaces/workspaces/capability/services/interfaces.py +++ b/shared/workspaces/workspaces/capability/services/interfaces.py @@ -170,6 +170,10 @@ class CapabilityInfoIF(QueueReporterIF, metaclass=ABCMeta): raise NotImplementedError + @abstractmethod + def lookup_capability_request_version(self, request_id) -> CapabilityRequestIF: + raise NotImplementedError + @abstractmethod def lookup_execution(self, execution_id: int) -> CapabilityExecutionIF: raise NotImplementedError