Skip to content
Snippets Groups Projects
Commit 95c5c9fd authored by Christopher Randolph Rhodes's avatar Christopher Randolph Rhodes
Browse files

Reorganized default paths

parent 303f8e22
No related branches found
No related tags found
No related merge requests found
......@@ -22,6 +22,14 @@ def read_root():
def read_root(par1=None, par2=None):
return {'success': True, 'params': {'par1': par1, 'par2': par2}}
@app.get('/paths')
def list_session_paths():
pass
@app.put('/paths/{path_id}')
def set_path_id(path_id: str, abs_path: str):
pass
@app.get('/restart')
def restart_session() -> dict:
session.restart()
......
......@@ -2,20 +2,13 @@ from pathlib import Path
root = Path('c:/Users/rhodes/projects/proj0015-model-server/resources')
paths = {
'logs': {
'session': root / 'logs' / 'session',
},
'images': {
'inbound': root / 'images' / 'inbound',
'outbound': root / 'images' / 'outbound',
},
'ilastik': {
'projects': root / 'ilastik'
}
'logs': root / 'logs' / 'session',
'inbound_images': root / 'images' / 'inbound',
'outbound_images': root / 'images' / 'outbound',
'ilastik_projects': root / 'ilastik',
}
for gk in paths.keys():
for pk in paths[gk].keys():
paths[gk][pk].mkdir(parents=True, exist_ok=True)
paths[gk].mkdir(parents=True, exist_ok=True)
# TODO: consider configuring paths via API, and this just becomes a HTTP client script
\ No newline at end of file
......@@ -4,7 +4,7 @@ import pathlib
import numpy as np
import vigra
import conf.server
import conf.defaults
from model_server.image import GenericImageDataAccessor, InMemoryDataAccessor
from model_server.model import ImageToImageModel, ParameterExpectedError
......@@ -14,7 +14,7 @@ class IlastikImageToImageModel(ImageToImageModel):
def __init__(self, params, autoload=True):
self.project_file = str(params['project_file'])
self.project_file_abspath = pathlib.Path(
conf.server.paths['ilastik']['projects'] / self.project_file,
conf.defaults.paths['ilastik_projects'] / self.project_file,
)
if 'project_file' not in params or not self.project_file_abspath.exists():
raise ParameterExpectedError('Ilastik model expects a project (*.ilp) file')
......
......@@ -5,7 +5,7 @@ from pathlib import Path
from time import strftime, localtime
from typing import Dict
from conf.server import paths
from conf.defaults import paths
from model_server.model import Model
from model_server.share import SharedImageDirectory
from model_server.workflow import WorkflowRunRecord
......@@ -17,9 +17,9 @@ class Session(object):
"""
Singleton class for a server session that persists data between API calls
"""
inbound = SharedImageDirectory(paths['images']['inbound'])
outbound = SharedImageDirectory(paths['images']['outbound'])
where_records = Path(paths['logs']['session'])
inbound = SharedImageDirectory(paths['inbound_images'])
outbound = SharedImageDirectory(paths['outbound_images'])
where_records = paths['logs']
def __new__(cls):
if not hasattr(cls, 'instance'):
......
......@@ -22,11 +22,10 @@ class TestServerBaseClass(unittest.TestCase):
@staticmethod
def copy_input_file_to_server():
import pathlib
from shutil import copyfile
from conf.server import paths
from conf.defaults import paths
outpath = pathlib.Path(paths['images']['inbound'] / czifile['filename'])
outpath = paths['inbound_images'] / czifile['filename']
copyfile(
czifile['path'],
......@@ -47,6 +46,12 @@ class TestApiFromAutomatedClient(TestServerBaseClass):
self.assertEqual(resp.json()['params']['par1'], 'hello', resp.json())
self.assertEqual(resp.json()['params']['par2'], None, resp.json())
def test_default_session_paths(self):
import conf.defaults
resp = requests.get(self.uri + 'paths')
for p in ['inbound', 'outbound', 'logs']:
self.assertEqual(resp.json()['paths'][p], conf.defaults.paths[p])
def test_list_empty_loaded_models(self):
resp = requests.get(self.uri + 'models')
self.assertEqual(resp.status_code, 200)
......
......@@ -6,7 +6,6 @@ import numpy as np
import conf.testing
from model_server.image import CziImageFileAccessor, InMemoryDataAccessor, write_accessor_data_to_file
from model_server.ilastik import IlastikObjectClassifierModel, IlastikPixelClassifierModel
from model_server.model import Model
from model_server.workflow import infer_image_to_image
from tests.test_api import TestServerBaseClass
......
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