Skip to content
Snippets Groups Projects
Commit 9b67d1cb authored by martinRenou's avatar martinRenou
Browse files

Add file version for input json file

parent 7a2fa63b
No related branches found
No related tags found
1 merge request!27Add file version handling for workflow file.
{
"version": "1",
"multi_criteria_optimizer": {
"id": "force.bdss.bundles.enthought.dakota",
"model_data": {
......@@ -35,4 +36,3 @@
}
]
}
{
"version": "2",
"multi_criteria_optimizer": {
"id": "force.bdss.bundles.enthought.dakota",
"model_data": {
"value_types": ["DUMMY"]
}
},
"data_sources": [
{
"id": "force.bdss.bundles.enthought.csv_extractor",
"model_data": {
"filename": "foo.csv",
"row": 3,
"column": 5,
"cuba_type": "PRESSURE"
}
},
{
"id": "force.bdss.bundles.enthought.csv_extractor",
"model_data": {
"filename": "foo.csv",
"row": 3,
"column": 5,
"cuba_type": "PRESSURE"
}
}
],
"kpi_calculators": [
{
"id": "force.bdss.bundles.enthought.kpi_adder",
"model_data": {
"cuba_type_in": "PRESSURE",
"cuba_type_out": "TOTAL_PRESSURE"
}
}
]
}
......@@ -6,7 +6,7 @@ from contextlib import contextmanager
@contextmanager
def cd(dir):
cwd = os.curdir
cwd = os.getcwd()
os.chdir(dir)
try:
yield
......@@ -26,6 +26,11 @@ class TestExecution(unittest.TestCase):
out = subprocess.check_call(["force_bdss", "test_csv.json"])
self.assertEqual(out, 0)
def test_unsupported_file_input(self):
with cd(fixture_dir()):
with self.assertRaises(subprocess.CalledProcessError):
subprocess.check_call(["force_bdss", "test_csv_v2.json"])
if __name__ == '__main__':
unittest.main()
import sys
from traits.api import on_trait_change
from force_bdss.base_core_driver import BaseCoreDriver
from force_bdss.workspecs.workflow import InvalidVersionException
class CoreMCODriver(BaseCoreDriver):
......@@ -10,7 +13,11 @@ class CoreMCODriver(BaseCoreDriver):
@on_trait_change("application:started")
def application_started(self):
workflow = self.application.workflow
try:
workflow = self.application.workflow
except InvalidVersionException as e:
print e.message
sys.exit(1)
mco_data = workflow.multi_criteria_optimizer
mco_bundle = self.bundle_registry.mco_bundle_by_id(mco_data.id)
......
......@@ -4,6 +4,12 @@ from force_bdss.workspecs.data_source import DataSource
from force_bdss.workspecs.kpi_calculator import KPICalculator
from .multi_criteria_optimizer import MultiCriteriaOptimizer
SUPPORTED_FILE_VERSIONS = ["1"]
class InvalidVersionException(Exception):
pass
class Workflow(HasStrictTraits):
name = String()
......@@ -13,9 +19,13 @@ class Workflow(HasStrictTraits):
@classmethod
def from_json(cls, json_data):
if json_data["version"] not in SUPPORTED_FILE_VERSIONS:
raise InvalidVersionException(
"File version {} not supported".format(json_data["version"]))
self = cls(
multi_criteria_optimizer=MultiCriteriaOptimizer.from_json(
json_data["multi_criteria_optimizer"]
json_data["multi_criteria_optimizer"]
),
data_sources=[
DataSource.from_json(data_source_data)
......
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