Skip to content
Snippets Groups Projects
Commit 4f608176 authored by Daniel Lyons's avatar Daniel Lyons
Browse files

Adding request versions, still don't have success with generating a request and saving it though

parent 0eef36e4
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,7 @@ depends_on = None ...@@ -17,6 +17,7 @@ depends_on = None
def upgrade(): def upgrade():
print('creating capabilities')
op.create_table('capabilities', op.create_table('capabilities',
sa.Column('capability_id', sa.Integer, primary_key=True), sa.Column('capability_id', sa.Integer, primary_key=True),
sa.Column('capability_name', sa.String), sa.Column('capability_name', sa.String),
...@@ -24,14 +25,35 @@ def upgrade(): ...@@ -24,14 +25,35 @@ def upgrade():
sa.Column('max_jobs', sa.Integer)) sa.Column('max_jobs', sa.Integer))
op.create_table('capability_requests', op.create_table('capability_requests',
sa.Column('request_id', sa.Integer, primary_key=True), sa.Column('capability_request_id', sa.Integer, primary_key=True),
sa.Column('state', sa.String), sa.Column('state', sa.String),
sa.Column('capability', sa.Integer, sa.ForeignKey('capabilities.capability_id')), sa.Column('capability_id', sa.Integer, sa.ForeignKey('capabilities.capability_id')),
sa.Column('parameters', sa.String)) sa.Column('parameters', sa.String))
op.create_table('capability_versions',
sa.Column('capability_request_id',
sa.Integer,
sa.ForeignKey('capability_requests.capability_request_id'),
primary_key=True),
sa.Column('version_number',
sa.Integer,
primary_key=True))
op.create_table('capability_executions',
sa.Column('execution_id', sa.Integer, primary_key=True),
sa.Column('state', sa.String),
sa.Column('capability_request_id', sa.Integer),
sa.Column('capability_version_number', sa.Integer),
sa.Column('current_step', sa.Integer),
sa.ForeignKeyConstraint(['capability_request_id', 'capability_version_number'],
['capability_versions.capability_request_id', 'capability_versions.version_number']))
op.execute("INSERT INTO capabilities (capability_name, capability_steps, max_jobs) " op.execute("INSERT INTO capabilities (capability_name, capability_steps, max_jobs) "
"VALUES ('null', 'PREPARE AND EXECUTE WORKFLOW null\nAWAIT WORKFLOW', 2)") "VALUES ('null', 'PREPARE AND EXECUTE WORKFLOW null\nAWAIT WORKFLOW', 2)")
def downgrade(): def downgrade():
op.drop_table('capability_executions')
op.drop_table('capability_versions')
op.drop_table('capability_requests') op.drop_table('capability_requests')
op.drop_table('capabilities') op.drop_table('capabilities')
...@@ -13,45 +13,34 @@ CapabilityName = str ...@@ -13,45 +13,34 @@ CapabilityName = str
class CapabilityIF: class CapabilityIF:
@property id: int
def id(self) -> int: raise NotImplementedError name: str
steps: List["CapabilityStepIF"]
@property max_jobs: int
def name(self) -> str: raise NotImplementedError
@property
def steps(self) -> List["CapabilityStepIF"]: raise NotImplementedError
@property
def max_jobs(self) -> int: raise NotImplementedError
def create_request(self, parameters: "ParameterIF", future_products: FutureProductIF) -> "CapabilityRequestIF": def create_request(self, parameters: "ParameterIF", future_products: FutureProductIF) -> "CapabilityRequestIF":
raise NotImplementedError raise NotImplementedError
class CapabilityRequestIF: class CapabilityRequestIF:
@property id: int
def id(self) -> int: raise NotImplementedError state: str
capability: CapabilityIF
@property parameters: str
def state(self) -> str: raise NotImplementedError future_products: str
versions: List["CapabilityVersionIF"]
@property
def capability(self) -> CapabilityIF: raise NotImplementedError
@property class CapabilityVersionIF:
def parameters(self) -> str: raise NotImplementedError capability_request: CapabilityRequestIF
version_number: int
@property # eventually, the parameters should go here
def future_products(self) -> str: raise NotImplementedError
@property
def versions(self) -> List["CapabilityVersionIF"]: raise NotImplementedError
class CapabilityExecutionIF: class CapabilityExecutionIF:
pass capability_version: CapabilityVersionIF
state: str
current_step: int
""" """
......
...@@ -14,7 +14,7 @@ from sqlalchemy.orm import relationship, sessionmaker ...@@ -14,7 +14,7 @@ from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from .capability_interfaces import CapabilityIF, CapabilityRequestIF, CapabilityExecutionIF, \ from .capability_interfaces import CapabilityIF, CapabilityRequestIF, CapabilityExecutionIF, \
CapabilitySequenceIF, ParameterIF CapabilitySequenceIF, ParameterIF, CapabilityVersionIF
from .helpers import CapabilityStepType, CapabilityStep, CapabilitySequence from .helpers import CapabilityStepType, CapabilityStep, CapabilitySequence
from .product_interfaces import FutureProductIF from .product_interfaces import FutureProductIF
...@@ -223,7 +223,7 @@ class CapabilityRequest(Base, CapabilityRequestIF): ...@@ -223,7 +223,7 @@ class CapabilityRequest(Base, CapabilityRequestIF):
the expectation of a new product given a set of parameters the expectation of a new product given a set of parameters
""" """
__tablename__ = 'capability_requests' __tablename__ = 'capability_requests'
id = sa.Column('request_id', sa.Integer, primary_key=True) id = sa.Column('capability_request_id', sa.Integer, primary_key=True)
state = sa.Column('state', sa.String) state = sa.Column('state', sa.String)
capability = sa.Column( capability = sa.Column(
'capability', 'capability',
...@@ -233,7 +233,7 @@ class CapabilityRequest(Base, CapabilityRequestIF): ...@@ -233,7 +233,7 @@ class CapabilityRequest(Base, CapabilityRequestIF):
parameters = sa.Column('parameters', sa.String) parameters = sa.Column('parameters', sa.String)
# FIXME: This needs to be changed to properly keep track of product locators. # FIXME: This needs to be changed to properly keep track of product locators.
#future_products = sa.Column('future_products', sa.String) #future_products = sa.Column('future_products', sa.String)
#versions = sa.Column('versions', sa.String) versions = relationship("CapabilityVersion", back_populates="capability_request")
def update_status(self, status: str): def update_status(self, status: str):
# TODO: create field in table # TODO: create field in table
...@@ -243,11 +243,28 @@ class CapabilityRequest(Base, CapabilityRequestIF): ...@@ -243,11 +243,28 @@ class CapabilityRequest(Base, CapabilityRequestIF):
return f"CapabilityRequest object: {self.__dict__}" return f"CapabilityRequest object: {self.__dict__}"
class CapabilityVersion(Base, CapabilityVersionIF):
"""
Schema representation of a capability version
"""
__tablename__ = 'capability_versions'
capability_request_id = sa.Column('capability_request_id',
sa.Integer,
sa.ForeignKey('capability_requests.capability_request_id'),
primary_key=True)
version_number = sa.Column('version_number',
sa.Integer,
primary_key=True)
capability_request = relationship(CapabilityRequest, back_populates="versions")
executions = relationship("CapabilityExecution", back_populates="capability_version")
class CapabilityExecution(Base, CapabilityExecutionIF): class CapabilityExecution(Base, CapabilityExecutionIF):
""" """
Schema representation of a capability request's execution record 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) id = sa.Column('execution_id', sa.Integer, primary_key=True)
state = sa.Column('state', sa.String) state = sa.Column('state', sa.String)
capability_request = sa.Column( capability_request = sa.Column(
...@@ -255,7 +272,13 @@ class CapabilityExecution(Base, CapabilityExecutionIF): ...@@ -255,7 +272,13 @@ class CapabilityExecution(Base, CapabilityExecutionIF):
sa.Integer, sa.Integer,
sa.ForeignKey('capability_requests.capability_request_id') sa.ForeignKey('capability_requests.capability_request_id')
) )
version_number = sa.Column('capability_version_number', sa.Integer)
current_step = sa.Column('current_step', sa.Integer) current_step = sa.Column('current_step', sa.Integer)
capability_version = relationship(CapabilityVersion, back_populates="executions")
__table_args__ = (sa.ForeignKeyConstraint([capability_request, version_number],
[CapabilityVersion.capability_request_id,
CapabilityVersion.version_number]),)
class Workflow(Base): class Workflow(Base):
......
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