Skip to content
Snippets Groups Projects
Commit c217f1c0 authored by Nathan Hertz's avatar Nathan Hertz
Browse files

Merge branch 'release/WS-0.1' of https://open-bitbucket.nrao.edu/scm/ssa/data into release/WS-0.1

parents a92f1ecc f817062e
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@ Interfaces used by the Workspaces' capabilities system.
import inspect
from abc import ABC, abstractmethod
from typing import List, Union, Optional
from typing import List, Union, Optional, Any
from .product_interfaces import ProductIF, FutureProductIF
......@@ -30,6 +30,9 @@ class CapabilityRequestIF:
future_products: str
versions: List["CapabilityVersionIF"]
def __json__(self, request: Any) -> dict:
raise NotImplementedError
class CapabilityVersionIF:
capability_request: CapabilityRequestIF
......@@ -42,6 +45,9 @@ class CapabilityExecutionIF:
state: str
current_step: int
def __json__(self, request: Any) -> dict:
raise NotImplementedError
"""
Capability System / Services
......
......@@ -5,7 +5,7 @@ import abc
import enum
import json
from pathlib import Path
from typing import Dict, List, Tuple
from typing import Dict, List, Tuple, Any
import sqlalchemy as sa
from pycapo import CapoConfig
......@@ -265,6 +265,10 @@ class CapabilityRequest(Base, CapabilityRequestIF):
def __str__(self):
return f"CapabilityRequest object: {self.__dict__}"
def __json__(self, request) -> dict:
return dict(id=self.id, capability_id=self.capability_id,
state=self.state, parameters=self.parameters)
class CapabilityVersion(Base, CapabilityVersionIF):
"""
......@@ -289,12 +293,13 @@ class CapabilityExecution(Base, CapabilityExecutionIF):
"""
Schema representation of a capability request's execution record
"""
__tablename__ = "capability_executions"
__tablename__ = "capability_executions"
id = sa.Column("execution_id", sa.Integer, primary_key=True)
state = sa.Column("state", sa.String)
capability_request = sa.Column(
capability_request_id = sa.Column(
"capability_request_id",
sa.Integer,
sa.ForeignKey("capability_requests.capability_request_id"),
......@@ -306,11 +311,15 @@ class CapabilityExecution(Base, CapabilityExecutionIF):
__table_args__ = (
sa.ForeignKeyConstraint(
[capability_request, version_number],
[capability_request_id, version_number],
[CapabilityVersion.capability_request_id, CapabilityVersion.version_number],
),
)
def __json__(self, request: Any) -> dict:
return dict(id=self.id, state=self.state, capability_request_id=self.capability_request_id,
version_number=self.version_number, current_step=self.current_step)
class Workflow(Base):
"""
......
......@@ -64,7 +64,7 @@ class CapabilityService(CapabilityServiceIF):
parameters: List[ParameterIF] = None,
products: List[FutureProductIF] = None,
) -> CapabilityRequest:
self.capability_info.create_capability_request(
return self.capability_info.create_capability_request(
capability_name, parameters, products
)
......@@ -163,7 +163,8 @@ class CapabilityInfo(CapabilityInfoIF):
capability=capability,
parameters=str(parameters)
)
return self.save_entity(request)
self.save_entity(request)
return request
def create_execution_record(self, request_id: int) -> int:
"""
......@@ -173,10 +174,11 @@ class CapabilityInfo(CapabilityInfoIF):
"""
record = CapabilityExecution(
state=ExecutionState.Ready.name,
capability_request=request_id,
current_step=0,
capability_request_id=request_id,
current_step=0
)
return self.save_entity(record)
self.save_entity(record)
return record
def lookup_entity(
self,
......@@ -191,7 +193,7 @@ class CapabilityInfo(CapabilityInfoIF):
:param entity_schema: Database schema of the entity
:return: Object representation of entity if found, else None
"""
return self.session.query(entity_schema).filter(entity_schema.id == entity_id)
return self.session.query(entity_schema).filter(entity_schema.id == entity_id).one()
def save_entity(
self, entity: Union[Capability, CapabilityRequest, CapabilityExecution]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment