Skip to content

Commit

Permalink
Merge pull request #1046 from OasisLMF/release/1.28.8
Browse files Browse the repository at this point in the history
Release 1.28.8 (30th May 2024)
  • Loading branch information
sambles authored May 30, 2024
2 parents e184376 + 1dadb83 commit 3edbbd9
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 22 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
OasisPlatform Changelog
=======================

`1.28.8`_
---------
* [#1000](https://github.com/OasisLMF/OasisPlatform/pull/1000) - Release 1.28.7
* [#1059](https://github.com/OasisLMF/OasisPlatform/pull/1059) - Backport 1.28.x - Fixed missing call to param update method - V1 Workers (#1045)
* [#1042](https://github.com/OasisLMF/OasisPlatform/pull/1045) - Check older paramter names are updated and working in 2.3.4
.. _`1.28.8`: https://github.com/OasisLMF/OasisPlatform/compare/1.28.7...1.28.8

`1.28.7`_
---------
* [#993, #971, #784, #664, #798](https://github.com/OasisLMF/OasisPlatform/pull/994) - Logging fixes for workers
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.28.7
1.28.8
9 changes: 5 additions & 4 deletions requirements-server.txt
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ drf-yasg==1.21.5
# via -r requirements-server.in
greenlet==2.0.2
# via sqlalchemy
gunicorn==20.1.0
gunicorn==22.0.0
# via -r requirements-server.in
hyperlink==21.0.0
# via
Expand Down Expand Up @@ -168,11 +168,12 @@ numpy==1.24.2
# numba
# pandas
# pyarrow
ods-tools==3.1.4
ods-tools==3.1.5
# via -r requirements-server.in
packaging==23.0
# via
# drf-yasg
# gunicorn
# ods-tools
pandas==1.5.3
# via
Expand All @@ -196,7 +197,7 @@ pycparser==2.21
# via cffi
pyjwt==2.6.0
# via djangorestframework-simplejwt
pymysql==1.1.0
pymysql==1.1.1
# via -r requirements-server.in
pyopenssl==24.0.0
# via twisted
Expand Down Expand Up @@ -236,7 +237,7 @@ six==1.16.0
# service-identity
sqlalchemy==2.0.5.post1
# via -r requirements-server.in
sqlparse==0.4.4
sqlparse==0.5.0
# via
# django
# django-debug-toolbar
Expand Down
6 changes: 3 additions & 3 deletions requirements-worker.txt
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@ numpy==1.22.4
# scikit-learn
# scipy
# shapely
oasislmf[extra]==1.28.7
oasislmf[extra]==1.28.8
# via -r requirements-worker.in
ods-tools==3.1.4
ods-tools==3.1.5
# via oasislmf
packaging==23.0
# via
Expand All @@ -156,7 +156,7 @@ pyarrow==14.0.1
# via oasislmf
pycparser==2.21
# via cffi
pymysql==1.1.0
pymysql==1.1.1
# via -r requirements-worker.in
pyproj==3.4.1
# via geopandas
Expand Down
11 changes: 6 additions & 5 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ geopandas==0.12.2
# via oasislmf
greenlet==2.0.2
# via sqlalchemy
gunicorn==20.1.0
gunicorn==22.0.0
# via -r ./requirements-server.in
hyperlink==21.0.0
# via
Expand Down Expand Up @@ -276,9 +276,9 @@ numpy==1.22.4
# scikit-learn
# scipy
# shapely
oasislmf[extra]==1.28.7
oasislmf[extra]==1.28.8
# via -r ./requirements-worker.in
ods-tools==3.1.4
ods-tools==3.1.5
# via
# -r ./requirements-server.in
# oasislmf
Expand All @@ -288,6 +288,7 @@ packaging==23.0
# drf-yasg
# fastparquet
# geopandas
# gunicorn
# ods-tools
# pyproject-api
# pytest
Expand Down Expand Up @@ -337,7 +338,7 @@ pyflakes==3.0.1
# via flake8
pyjwt==2.6.0
# via djangorestframework-simplejwt
pymysql==1.1.0
pymysql==1.1.1
# via
# -r ./requirements-server.in
# -r ./requirements-worker.in
Expand Down Expand Up @@ -428,7 +429,7 @@ sqlalchemy==2.0.5.post1
# via
# -r ./requirements-server.in
# -r ./requirements-worker.in
sqlparse==0.4.4
sqlparse==0.5.0
# via
# django
# django-debug-toolbar
Expand Down
18 changes: 14 additions & 4 deletions src/model_execution_worker/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
from celery.signals import worker_ready
from celery.exceptions import WorkerLostError, Terminated

from oasislmf.manager import OasisManager
from oasislmf.utils.data import get_json
from oasislmf.utils.exceptions import OasisException
from oasislmf.utils.status import OASIS_TASK_STATUS
Expand Down Expand Up @@ -284,6 +283,8 @@ def start_analysis(analysis_settings, input_location, complex_data_files=None, *
"""
# Check that the input archive exists and is valid
from oasislmf.manager import OasisManager

logger.info("args: {}".format(str(locals())))
logger.info(str(get_worker_versions()))
tmpdir_persist = settings.getboolean('worker', 'KEEP_RUN_DIR', fallback=False)
Expand Down Expand Up @@ -330,7 +331,10 @@ def start_analysis(analysis_settings, input_location, complex_data_files=None, *

# Create and log params
run_params = {**config, **task_params}
params = paths_to_absolute_paths(run_params, config_path)
gen_losses_params = OasisManager()._params_generate_losses(**run_params)
post_hook_params = OasisManager()._params_post_analysis(**run_params)
params = paths_to_absolute_paths({**gen_losses_params, **post_hook_params}, config_path)

if debug_worker:
log_params(params, kwargs)

Expand Down Expand Up @@ -391,7 +395,9 @@ def generate_input(self,

# Start Oasis file generation
notify_api_status(analysis_pk, 'INPUTS_GENERATION_STARTED')
filestore.media_root = settings.get('worker', 'MEDIA_ROOT')
from oasislmf.manager import OasisManager

# filestore.media_root = settings.get('worker', 'MEDIA_ROOT')
tmpdir_persist = settings.getboolean('worker', 'KEEP_RUN_DIR', fallback=False)
tmpdir_base = settings.get('worker', 'BASE_RUN_DIR', fallback=None)

Expand Down Expand Up @@ -432,7 +438,11 @@ def generate_input(self,
config_path = get_oasislmf_config_path(settings)
config = get_json(config_path)
lookup_params = {**{k: v for k, v in config.items() if not k.startswith('oed_')}, **task_params}
params = paths_to_absolute_paths(lookup_params, config_path)

gen_files_params = OasisManager()._params_generate_files(**lookup_params)
pre_hook_params = OasisManager()._params_exposure_pre_analysis(**lookup_params)
params = paths_to_absolute_paths({**gen_files_params, **pre_hook_params}, config_path)

if debug_worker:
log_params(params, kwargs, exclude_keys=[
'profile_loc',
Expand Down
15 changes: 10 additions & 5 deletions tests/test_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,21 +109,26 @@ def test_custom_model_runner_does_not_exist___generate_losses_is_called_output_f
def fake_run_dir(*args, **kwargs):
yield run_dir

with patch('src.model_execution_worker.tasks.OasisManager', Mock(return_value=cmd_instance)) as cmd_mock, \
with patch('oasislmf.manager.OasisManager.generate_oasis_losses', Mock(return_value='mocked result')) as cmd_mock, \
patch('src.model_execution_worker.tasks.get_worker_versions', Mock(return_value='')), \
patch('src.model_execution_worker.tasks.filestore.compress') as tarfile, \
patch('src.model_execution_worker.tasks.TASK_LOG_DIR', log_dir), \
patch('src.model_execution_worker.tasks.TemporaryDir', fake_run_dir):

cmd_instance.generate_oasis_losses.return_value = "mocked result" # Mock the return value
output_location, log_location, error_location, returncode = start_analysis(
os.path.join(media_root, 'analysis_settings.json'),
os.path.join(media_root, 'location.tar'),
log_filename=log_file,
)
expected_params = {**params, **{"analysis_settings_json": os.path.join(media_root, 'analysis_settings.json')}}
cmd_instance.generate_oasis_losses.assert_called_once_with(**expected_params)
tarfile.assert_called_once_with(os.path.join(media_root, output_location), os.path.join(run_dir, 'output'), 'output')

cmd_mock.assert_called_once()
called_args = cmd_mock.call_args.kwargs
self.assertEqual(called_args.get('oasis_files_dir', None), params.get('oasis_files_dir'))
self.assertEqual(called_args.get('model_run_dir', None), params.get('model_run_dir'))
self.assertEqual(called_args.get('ktools_fifo_relative', None), params.get('ktools_fifo_relative'))
self.assertEqual(called_args.get('verbose', None), params.get('verbose'))
self.assertEqual(called_args.get('analysis_settings.json', None), params.get('analysis_settings.json'))
tarfile.assert_called_once_with(ANY, os.path.join(run_dir, 'output'), 'output')


class StartAnalysisTask(TestCase):
Expand Down

0 comments on commit 3edbbd9

Please sign in to comment.