Skip to content

Commit

Permalink
ert implementation stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
adnejacobsen authored and equinor-ruaj committed Oct 11, 2023
1 parent a10fa07 commit e35c663
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 0 deletions.
4 changes: 4 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,7 @@ test=pytest
[options.entry_points]
console_scripts =
sumo_upload=fmu.sumo.uploader.scripts.sumo_upload:main
ert =
fmu_sumo_jobs = fmu.sumo.hook_implementations.jobs
sumo_upload = fmu.sumo.uploader.scripts.sumo_upload

23 changes: 23 additions & 0 deletions src/fmu/sumo/uploader/config_jobs/SUMO_UPLOAD
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
-- This is the forward model job which uploads data to Sumo
-- It is called from the ERT config file as a regular forward model

-- Arguments:
-- SUMO_CASEPATH: The absolute path to the root of the case
-- e.g. <SCRATCH>/<USER>/<CASE_DIR>
-- SEARCHPATH: The searchpath relative to the realization root
-- e.g "share/results/maps/*.gri"
-- SUMO_ENV: The environment to upload to

STDERR sumo_upload.stderr
STDOUT sumo_upload.stdout

EXECUTABLE sumo_upload


ARGLIST <SUMO_CASEPATH> <SEARCHPATH> <SUMO_ENV>

MIN_ARG 2
MAX_ARG 3
ARG_TYPE 0 STRING
ARG_TYPE 1 STRING
ARG_TYPE 2 STRING
Empty file.
61 changes: 61 additions & 0 deletions src/fmu/sumo/uploader/hook_implementations/jobs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import importlib
import os
from pkg_resources import resource_filename

from ert.shared.plugins.plugin_manager import hook_implementation
from ert.shared.plugins.plugin_response import plugin_response


def _get_jobs_from_directory(directory):
"""Do a filesystem lookup in a directory to check
for available ERT forward models"""
resource_directory = resource_filename("fmu", directory)

all_files = [
os.path.join(resource_directory, f)
for f in os.listdir(resource_directory)
if os.path.isfile(os.path.join(resource_directory, f))
]
return {os.path.basename(path): path for path in all_files}


# pylint: disable=no-value-for-parameter
@hook_implementation
@plugin_response(plugin_name="fmu_sumo") # pylint: disable=no-value-for-parameter
def installable_jobs():
return _get_jobs_from_directory("sumo/config_jobs")


def _get_module_variable_if_exists(module_name, variable_name, default=""):
try:
script_module = importlib.import_module(module_name)
except ImportError:
return default

return getattr(script_module, variable_name, default)


@hook_implementation
@plugin_response(plugin_name="fmu_sumo") # pylint: disable=no-value-for-parameter
def job_documentation(job_name):
sumo_fmu_jobs = set(installable_jobs().data.keys())
if job_name not in sumo_fmu_jobs:
return None

module_name = "jobs.scripts.{}".format(job_name.lower())

description = _get_module_variable_if_exists(
module_name=module_name, variable_name="description"
)
examples = _get_module_variable_if_exists(
module_name=module_name, variable_name="examples"
)
category = _get_module_variable_if_exists(
module_name=module_name, variable_name="category", default="other"
)

return {
"description": description,
"examples": examples,
"category": category,
}

0 comments on commit e35c663

Please sign in to comment.